ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 42 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 18 Jun 2004, 10:58 
Offline
Obfuscator

Registriert: 20 Jul 2003, 22:14
Beiträge: 597
Die PHP-Version gefällt mir nicht da der Code sich durch extrem aufblähen würde. Queries sind eh meist schon ziemlich lang. Aber die zweite Idee fast schon bei mir Fuß. Ich werde mir das ganze mal genauer überlegen...

p.s. Bist du Linkshänder, oder trotzt der Allgemeinheit mit deinen verdrehten Smilies? :D


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 18 Jun 2004, 14:50 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

Ich denke, es reicht, wenn Datenbankname und Tabellenprefix dynamisch sind, man kann alles übertreiben. ;)

Wenn sich Spaltennamen ändern, dann ändert man meistens die Struktur der Tabelle so stark, dass man sowieso alle betroffenen Abfragen überarbeiten muss, und so oft passiert das ja auch nicht. Datenbank und Tabellenprefix hingegen können sich bei jeder Installation unterscheiden.

iGEL

_________________



# Kein Kommentar!!


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 21 Jun 2004, 19:13 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
TortoiseSVN hat auf anhieb funktioniert! intuitiv, schnell, einfach. super.

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 21 Jun 2004, 19:14 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
bunny hat geschrieben:
p.s. Bist du Linkshänder, oder trotzt der Allgemeinheit mit deinen verdrehten Smilies? :D
achso, linkshändersmileys sollte RubyBB auch unterstützen (;

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Jun 2004, 16:34 
Offline
Obfuscator

Registriert: 20 Jul 2003, 22:14
Beiträge: 597
[OT]Zur Zeit scheint Klausurenzeit zu sein. Daher gehts bei mir schleppend vorwärts..[/OT]


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Jun 2004, 17:07 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
[OT]?

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Jun 2004, 20:14 
Offline
Obfuscator

Registriert: 20 Jul 2003, 22:14
Beiträge: 597
Offtopic. Hat ja nicht wirklich mit den Beiträgen davor zu tun. Aber passt zur Überschrift..


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Jun 2004, 23:16 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
ich frag bloß, könnte man ja in BBCode einbauen.

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Jun 2004, 23:26 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

Na, ich denke, das macht keinen Sinn. ;)

Wäre es eigendlich schwierig, dynamischen BB-Code zu realisieren? Das ist jetzt nicht wichtig, aber das phpBB 2.2 unterstützt das, und ich finde das ganz nett. Du kannst im Adminpanel BB-Codes erstellen und gibst dann an, wie der daraus zu generierende HTML-Code aussieht. :)

Bei mir sieht das übrigens ähnlich aus wie bei Bunny, nur das ich schon länger was für meine Prüfungen hätte tun sollen. Ab mitte Juli bin ich dann voll verfügbar.

iGEL

_________________



# Kein Kommentar!!


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Jun 2004, 23:32 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
ist mit meinem modul ganz leicht. der ansatz von phpBB nützt aber nix, damit kann man eh nur son paar schmucksachen realisieren.

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 04 Jul 2004, 21:47 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

Ich hab in der Klasse Sql mal die Methode query modifiziert, damit man auch sie gegen SQL-Injections imun ist. Da ist auch Murphys Superquery drin. ;)

Verwenden tut man die ganz einfach. Wo dynamische Werte werden im Query eingefügt werden sollen, fügt man nur ein Fragezeichen ein, ohne Hochkommata. Die Werte übergibt man einfach als zusätzliche Parameter an die Methode. Das erste Fragezeichen wird dann durch den ersten Parameter ersetzt, der zuvor noch durch addslashes gejagt wird und vorne und Hinten jeweils noch ein Hochkommata drangeklatscht bekommt. Das zweite Fragezeichen durch den zweiten Parameter usw. Fragezeichen in Hochkommata werden nicht ersetzt.



1
2
3
4
5
6
7
8
9
result = @sql.query("SELECT * FROM articles") 
# So wird der Query ausgef��hrt: SELECT * FROM articles

@sql.query("INSERT INTO foren (id, title, topics, posts) VALUES (?, ?, 0, 0)", 3, "'''''")
# So wird der Query ausgef��hrt: INSERT INTO foren (id, title, topics, posts) VALUES ('3', '\'\'\'\'\'', 0, 0)
# Wie man sieht, bei den Fragezeichen keine Hochkommata (') verwenden, diese werden automatisch hinzugef��gt! Das wird bei allen Werten (auch Ints) gemacht, da sind sie zwar nicht n��tig, schaden aber auch nicht.

result = @sql.query("SELECT * FROM foren WHERE title LIKE '%?' AND id = ?", 3)
# So wird der Query ausgef��hrt: SELECT * FROM from WHERE title LIKE '%?' AND id = '3'




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def query(querystr, *args)
# Replace every ? in querystr with one of the escaped args.
anz = 0
querystr.gsub!(/\?|[^'?]* (?: ' [^']* ' [^'?]*)*/x) do |m|
if m == '?'
unless anz < args.length
raise "Sql::query: More questionmarks provided than replacements."
end
'\'' + addslashes(args[(anz += 1) -1].to_s) + '\''
else
$&
end
end

unless anz == args.length
raise "Sql::query: More replacements provided than questionmarks."
end

@@queries = @@queries + 1
@@mysql.query(querystr)
end


Mögliche Erweiterungen:
- Eine eigene Result-Klasse, aktuell wird die von MySQL verwendet
- Die Möglichkeit, einen Hash mit Queries zu übergeben. Andere Datenbanken haben ja einen teilweise anderen Syntax. Ich stelle mir das so vor:


1
2
3
query = { 'default' => "SELECT topic FROM topics LIMIT 30", "mssql" => "SELECT TOP 30 topic FROM topics"}

result = @sql.query(query)


Was haltet ihr von der Erweiterung und den Ideen?

iGEL

_________________



# Kein Kommentar!!


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 05 Jul 2004, 03:19 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
iGEL hat geschrieben:
Was haltet ihr von der Erweiterung und den Ideen?
ich halte das für ziemlich nützlich. allerdings fand ich irgendwie, dass das doch auch mit bordmitteln gehen müsste.

format-strings bieten sich an:

1
2
3
4
5
6
7
class SQL
def self.query s, *args
s % args.map { |a| a.to_s.gsub(/['"\\]/) { |x| "\" + x } }
end
end

puts SQL.query("INSERT INTO foren (id, title, topics, posts) VALUES (%s, %s, 0, 0)", 3, "'''''")
keine ahnung ob das langsamer ist...tut aber eigentlich dasselbe. der vorteil ist, dass die format-string-syntax schon bekannt ist.

oder so:

1
2
3
4
5
6
7
class SQL
def self.[] *args
args.map { |a| a.to_s.gsub(/['"\\]/) { |x| "\" + x } }
end
end

puts "INSERT INTO foren (id, title, topics, posts) VALUES (%s, %s, 0, 0)" % SQL[3, "'''''"]


mal eine nebenfrage: warum benutzt du "syntax" im maskulin? ich kenn nur "die syntax"...

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 05 Jul 2004, 14:14 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

Die Syntax scheint auch richtig zu sein. Ka, warum ich bisher der Syntax gesagt habe ;)

Zu deinem Vorschlag, was ist mit Queries wie "SELECT * FROM articles WHERE author LIKE "%siegfried"? Ausserdem hat sich die ;) Syntax mit dem Fragezeichen hat sich bei SQL-Layern irgendwie durchgesetzt.

Was verwendet ihr eigendlich zum Einrücken? Ich bin ja für die "Ein Tab"-Methode, das kann sich dann jeder so einstellen wie er will, würde mich aber auch anpassen, wenn ich was anders vorzieht. Nur einheitlich fände ich es gut. ;)

iGEL

_________________



# Kein Kommentar!!


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 05 Jul 2004, 14:20 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
iGEL hat geschrieben:
was ist mit Queries wie "SELECT * FROM articles WHERE author LIKE "%siegfried"?
escapen geht mit mit %%.

Zitat:
Ausserdem hat sich die Syntax mit dem Fragezeichen hat sich bei SQL-Layern irgendwie durchgesetzt.
ach, das wusste ich nicht.

wie auch immer...ist das ganze nicht eh bloß für den/die DB-modul-programmierer interessant?

zum einrücken: normalerweise auch 1-tab, aber RDE ist bei mir so eingestellt, dass er sowieso 2 leerzeichen draus macht. solange keiner diesen leerzeichen-bis-8-dann-tab-mist benutzt, ist mir alles recht :)

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 05 Jul 2004, 15:01 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

murphy hat geschrieben:
iGEL hat geschrieben:
was ist mit Queries wie "SELECT * FROM articles WHERE author LIKE "%siegfried"?
escapen geht mit mit %%.

Ja, schon klar, dass das so geht. Nur finde ich es bequemer für den Entwickler, wenn er sich darum nicht kümmern muss. Bei meinem Dingens werden alle Fragezeichen in Zeichenketten so gelassen und das Zeichen kommt in der SQL-Syntax eben auch nicht vor (soweit ich weiss). Nur wenn jemand das aus unerfindlichen Gründen ausserhalb von Zeichenketten verwenden will, wird es schwierig.

iGEL

_________________



# Kein Kommentar!!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 42 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron