Auslesen von Daten aus MySQL
Hallo Leutz,
ich habe da mal eine Frage bezüglich dem Auslesen von Daten aus der MySQL Datenbank.
Ich möchte eine Zufallsausgabe von Buchtiteln erstellen, aber irgend wie klappt das nicht mit der Wertübergabe!?!
Wenn ich jetzt im Template $buchname eingebe, gibt er dort keinen Wert zurück! Hab ich irgendwo einen Fehler bei der Abfrage drin?
Hier der Code:
Schon mal vielen Dank für die Hilfe! 
Greetz
Neo
ich habe da mal eine Frage bezüglich dem Auslesen von Daten aus der MySQL Datenbank.
Ich möchte eine Zufallsausgabe von Buchtiteln erstellen, aber irgend wie klappt das nicht mit der Wertübergabe!?!
Wenn ich jetzt im Template $buchname eingebe, gibt er dort keinen Wert zurück! Hab ich irgendwo einen Fehler bei der Abfrage drin?Hier der Code:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function getBuchtipp() {
global $n,$db_zugriff;
$result = $db_zugriff->query("SELECT * FROM bb".$n."_buch ORDER BY RAND() LIMIT 1");
$anzahl = mysql_num_rows($result);
$id = $result[id];
$buchname = $result[buchname];
$autor = $result[autor];
eval ("\$buchtippstring = \"".gettemplate("buchtipps")."\";");
return $buchtippstring;
}
|

Greetz
Neo
Phantasie ist wichtiger als Wissen,
denn Wissen ist begrenzt! Albert Einstein
denn Wissen ist begrenzt! Albert Einstein
also irgendwas kann in deinem Code ganz und gar nicht stimmen...
einmal ist $result eine resourceid und einmal ein array...
versuchs mal mit einer zusätzlichen zeile:
PS: ich verteh eh nicht wieso man Mysql eine zusätzliche Klasse erstellt...
man spart dadurch doch rein garnichts...
einmal ist $result eine resourceid und einmal ein array...
versuchs mal mit einer zusätzlichen zeile:
|
|
PHP-Quelltext |
1 |
$result=mysql_fetch_array($result);
|
PS: ich verteh eh nicht wieso man Mysql eine zusätzliche Klasse erstellt...
man spart dadurch doch rein garnichts...
Über mich: www.heinervdm.de
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.
@heinervdm
Danke für Deine Hilfe! Jetzt funktioniert es!
Ich habe bisher noch nie mit Datenbanken gearbeitet und kann daher die einzelnen Befehle noch nicht komplett nachvollziehen!
Was meinst Du mit dem Erstellen von zusätzlichen Klassen?
Ein Problem ist mir jetzt noch aufgefallen, nachdem es funktioniert mit der Ausgabe. Irgendwie wird statt der zufälligen Ausgabe immer nur die erste Zeile der Tabelle _buch ausgegeben.
Stimmt der MySQL-Befehl mit "ORDER BY RAND() LIMIT 1" auch nicht?
Das ist doch echt zum Mäuse melken!
Kannst mir vielleicht auch noch jemand sagen warum die Zufallsausgabe nicht funktioniert?
Greetz
Neo
Danke für Deine Hilfe! Jetzt funktioniert es!
Ich habe bisher noch nie mit Datenbanken gearbeitet und kann daher die einzelnen Befehle noch nicht komplett nachvollziehen!
Was meinst Du mit dem Erstellen von zusätzlichen Klassen?
Ein Problem ist mir jetzt noch aufgefallen, nachdem es funktioniert mit der Ausgabe. Irgendwie wird statt der zufälligen Ausgabe immer nur die erste Zeile der Tabelle _buch ausgegeben.

Stimmt der MySQL-Befehl mit "ORDER BY RAND() LIMIT 1" auch nicht?
|
|
PHP-Quelltext |
1 |
$result = $db_zugriff->query("SELECT * FROM bb".$n."_buch ORDER BY RAND() LIMIT 1");
|
Kannst mir vielleicht auch noch jemand sagen warum die Zufallsausgabe nicht funktioniert?
Greetz
Neo
Phantasie ist wichtiger als Wissen,
denn Wissen ist begrenzt! Albert Einstein
denn Wissen ist begrenzt! Albert Einstein
order by rand bringt far nichts 

|
|
PHP-Quelltext |
1 |
$result = $db_zugriff->query("SELECT * FROM bb".$n."_buch WHERE id=RAND()");
|
Zur Unterhaltung einer Party trägt niemand so viel bei wie diejenigen, die gar nicht da sind.
Audrey Hepburn, Schauspielerin
Don't use thx-sry-plz
Audrey Hepburn, Schauspielerin
Don't use thx-sry-plz
@apple
Sorry aber das klappt gar nicht! Mit Deiner Version werden die Werte wieder nicht übergeben.
Es wird also gar nichts angezeigt. 
Hast Du sonst noch eine Idee?
EDIT:
Ich habs hinbekommen! *stolz sei*
Ob das nun die optimalste Lösung ist, weiß ich nicht, aber es klappt auf alle Fälle. Hier nun die funktionierende Version!

Danke an alle Helfer! Jeder hat mich ein Stück näher an die Lösung gebracht!
Greetz
Neo
Sorry aber das klappt gar nicht! Mit Deiner Version werden die Werte wieder nicht übergeben.
Es wird also gar nichts angezeigt. 
Hast Du sonst noch eine Idee?
EDIT:
Ich habs hinbekommen! *stolz sei*

Ob das nun die optimalste Lösung ist, weiß ich nicht, aber es klappt auf alle Fälle. Hier nun die funktionierende Version!

|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function getBuchtipp() {
global $n,$db_zugriff;
$result = $db_zugriff->query("SELECT * FROM bb".$n."_buch");
$anzahl = mysql_num_rows($result);
$erg = rand(1,$anzahl);
$result = $db_zugriff->query("SELECT * FROM bb".$n."_buch WHERE id=$erg");
$result=mysql_fetch_array($result);
$id = $result[id];
$buchname = $result[buchname];
$autor = $result[autor];
$verlag = $result[verlag];
$jahr = $result[jahr];
$isbn = $result[isbn];
eval ("\$buchtippstring = \"".gettemplate("buchtipps")."\";");
return $buchtippstring;
}
|
Danke an alle Helfer! Jeder hat mich ein Stück näher an die Lösung gebracht!
Greetz
Neo
Phantasie ist wichtiger als Wissen,
denn Wissen ist begrenzt! Albert Einstein
denn Wissen ist begrenzt! Albert Einstein
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »NEO76« (1. August 2005, 23:33)
Hi
Schreib einfach noch ein mysql_error() hinten dran und dann gibt dir MySQL eine Fehlermeldung aus:
Falls du den Fehler nicht kennst bzw. verstehst, poste ihn einfach hier.
Schliesslich ist noch kein Meister vom Himmel gefallen
Mfg Fab
Schreib einfach noch ein mysql_error() hinten dran und dann gibt dir MySQL eine Fehlermeldung aus:
|
|
PHP-Quelltext |
1 |
$result = $db_zugriff->query("SELECT * FROM bb".$n."_buch WHERE id=RAND()") OR die(mysql_error());
|
Falls du den Fehler nicht kennst bzw. verstehst, poste ihn einfach hier.
Schliesslich ist noch kein Meister vom Himmel gefallen

Mfg Fab
-->Vokaline - schneller und effizienter Wörter lernen<-- (kostenlos!)
Doch, tut man. Man kann z.B. bequemer debuggen, indem bei jeder query ausgewertet wird ob sie fehlgeschlagen ist oder nicht. Dann ne error-methode aufrufen und ausgeben. somit spart man sich immer das dämliche "or die(mysql_error())" beim entwickeln - und man vergisst sie garantiert nicht (einzubauen und wundert sich wieso etwas nicht klappt bzw. sie wieder auszubauen, d.h. im code zu vergessen...). Und ein automatisch aufgerufenes http://php.net/debug_backtrace ist auch ganz nett. Auch sich anzeigen lassen zu können wieviele Queries man benötigt hat um die Site zu rendern ist ganz nett + vor allem während der Entwicklung nützlich, mal ganz davon abgesehen dass man sich anzeigen lassen könnte wielange welche Query benötigt.
Zitat
Original von heinervdmPS: ich verteh eh nicht wieso man Mysql eine zusätzliche Klasse erstellt...
man spart dadurch doch rein garnichts...
Außerdem ist so ein Wrapper sehr sinnvoll wenn du z.B. Änderungen vornehmen willst. In einem ~ 30.000 Zeilen Code wäre es mir doch lästig geworden, wenn ich jeden aufruf von mysql_fetch_array($res) in mysql_fetch_array($res, MYSQL_ASSOC) umbenennen müßte um nicht numerische indizes mit zu erhalten.
Von DB-Klassen die mit verschiedenen Datenbanksystemen umgehen können mal ganz zu schweigen...
P.S.: Ein $db_zugriff wäre mir zulang, $db sagt alles....
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Shurakai« (1. August 2005, 23:50)
äähm
wie wärs damit?
ääähm wieso machst du eigentlich mit dem wbb zeugs
wie wärs damit?
|
|
PHP-Quelltext |
1 |
$result = $db_zugriff->query("SELECT * FROM bb".$n."_buch WHERE id=RAND()") OR die("Queryfehler:" . mysql_error());
|
ääähm wieso machst du eigentlich mit dem wbb zeugs
www.butcher.info.ms
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Black-Warden« (6. August 2005, 19:09)
Die PEAR-Klassen von PHP stellen bereits so eine DB-Klasse zur Verfügung. Nähere Infos u.A. hier: http://tut.php-q.net/pear-db.html
Rechtschreibfehler dürft ihr behalten!
Ihr könnt sie stattdessen aber auch in Päckchen verpacken und an mich zurückschicken!
°°blubb°°
Ihr könnt sie stattdessen aber auch in Päckchen verpacken und an mich zurückschicken!
°°blubb°°



hab noch was ergänzt