Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

NEO76

Routinier

Dabei seit: 03.03.2003

Beiträge: 353

 

1 Zum Seitenanfang

Montag, 1. August 2005, 19:29

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:

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;
}
Schon mal vielen Dank für die Hilfe! 8)

Greetz
Neo
Phantasie ist wichtiger als Wissen,
denn Wissen ist begrenzt!
Albert Einstein
 

heinervdm

Technik-Admin

Dabei seit: 02.10.2002

Beiträge: 3 772

 

2 Zum Seitenanfang

Montag, 1. August 2005, 20:07

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:

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.
 

NEO76

Routinier

Dabei seit: 03.03.2003

Beiträge: 353

 

3 Zum Seitenanfang

Montag, 1. August 2005, 20:57

@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?

PHP-Quelltext

1
$result $db_zugriff->query("SELECT * FROM bb".$n."_buch ORDER BY RAND() LIMIT 1");
Das ist doch echt zum Mäuse melken!
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
 

apple

Moderator

Dabei seit: 29.01.2003

Beiträge: 928

 

4 Zum Seitenanfang

Montag, 1. August 2005, 21:07

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
 

NEO76

Routinier

Dabei seit: 03.03.2003

Beiträge: 353

 

5 Zum Seitenanfang

Montag, 1. August 2005, 22:16

@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! :] 8)

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

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »NEO76« (1. August 2005, 23:33)

 

Fab

Lebende Foren Legende

Dabei seit: 30.03.2003

Beiträge: 1 635

 

6 Zum Seitenanfang

Montag, 1. August 2005, 23:37

Hi

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
 

Shurakai

Foren Gott

Dabei seit: 05.02.2003

Beiträge: 2 181

 

7 Zum Seitenanfang

Montag, 1. August 2005, 23:48

Zitat

Original von heinervdmPS: ich verteh eh nicht wieso man Mysql eine zusätzliche Klasse erstellt...
man spart dadurch doch rein garnichts...
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.

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)

 

Benshee

Tripel-As

Dabei seit: 27.10.2004

Beiträge: 161

 

8 Zum Seitenanfang

Samstag, 6. August 2005, 01:35

Könnte mal jemand so eine Db klasse posten?

Ich würd mir gerne mal sowas anschauen.

EDIT: ach ja, kann man mit so einer klasse die ladezeit des scriptes in irgendeiner art verkürzen?
Benshee

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Benshee« (6. August 2005, 14:00)

 

Dabei seit: 21.12.2004

Beiträge: 29

 

9 Zum Seitenanfang

Samstag, 6. August 2005, 18:23

äähm

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 :finger:
www.butcher.info.ms

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Black-Warden« (6. August 2005, 19:09)

 

Benshee

Tripel-As

Dabei seit: 27.10.2004

Beiträge: 161

 

10 Zum Seitenanfang

Samstag, 6. August 2005, 21:26

black,

war das an mich? wenn ja dann ist das nicht die antwort auf meine frage :)
Benshee
 

Dabei seit: 21.12.2004

Beiträge: 29

 

11 Zum Seitenanfang

Sonntag, 7. August 2005, 01:05

Zitat

Original von Benshee
black,

war das an mich? wenn ja dann ist das nicht die antwort auf meine frage :)


nö wars nich.. meine Fab^^ hab noch was ergänzt :P
www.butcher.info.ms
 

Frase

Doppel-As

Dabei seit: 10.11.2002

Beiträge: 147

 

12 Zum Seitenanfang

Sonntag, 7. August 2005, 23:58

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°°