PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   MySQL - ORDER BY RAND() und PHP (http://www.selfphp.de/forum/showthread.php?t=2702)

MacMarc 21.11.2002 11:15:41

MySQL - ORDER BY RAND() und PHP
 
hallo zusammen

ich möchte mit php und mysql einen beliebigen datensatz aus einer db auf meiner webseite anzeigen.

wenn folgenden mysql befehl auf der mysql console eingebe, funktioniert das auch:

Code:

mysql> SELECT * FROM zitat ORDER BY RAND() LIMIT 1;
wenn ich den gleichen select befehl jedoch via php aufrufe, zeigt er mir immer nur den letzten datensatz in der tabellle an.

der php code lautet wie folgt:

Code:

$db = @MYSQL_CONNECT($db_host,$db_user,$db_pw) or die ("mysql connect failed");
$db_select = @MYSQL_SELECT_DB($db_name) or die ("mysql select db failed");
$result = mysql_query("SELECT * FROM zitat ORDER BY RAND() LIMIT 1") or die ("mysql query failed");
$menge = mysql_num_rows($result);

while($row = mysql_fetch_row($result)){
echo "$row[1]<br><br> <i>$row[2]</i><br>";
}

was mache ich falsch, resp. was übersehe ich, dass es nicht funktioniert?

besten dank.

grüsse,
marc

|Coding 21.11.2002 13:05:44

moin,

lass das "LIMIT 1" mal aus deinem query raus, dann bekommst du auch mehr angezeigt....

MiH 21.11.2002 14:12:56

der datensatz wird doch per zufall ermittelt, und wenn 100x der letzte dran ist dann ist es eben so. sofern der query in mysql korrekt geht gehts auch in php.

durch das weglassen von limit 1 werden die datensätze zufällig sortiert ;)

|Coding 21.11.2002 14:23:50

das soll docj passieren, oder was meinst du warum man sonst rand() verwendet?

ist doch wohl logisch... und wenn er limit 1 weg lässt dann werden alle daten sätze ausgegeben und ... mehr wolte er doch nicht oder habe ich da was nicht mit gekriegt???

MacMarc 21.11.2002 14:25:05

was mich eben irritiert, ist die tatsache, dass wenn ich es auf der mysql console mache er wirklich immer einen anderen datensatz anzeigt, nur wenn ich es per php aufrufe, tut er das nicht.

Gweilo 21.11.2002 14:29:19

also, bei mir funktionniert der befehl aus php problemlos. auch mit limit 1

MacMarc 21.11.2002 15:47:01

komisch. ist schon irgendwie unlogisch, dass er es auf der mysql console richtig macht und mit php immer nur den letzten anzeigt.

kann das vielleicht daran liegen, dass im moment lediglich 3 datensätze vorhanden sind?

in meinem code (siehe oben) ist ja auch nichts falsch, oder?

Gweilo 21.11.2002 16:07:25

hmm. nein. mein code ist genau der selbe. (nur hab ich rand klein geschrieben, das macht aber kein unterschied.)

versuch mal limit 2 oder so und schau dann, obs funktionniert, oder gar ohne limit, was dann rauskommt

Gweilo 21.11.2002 16:10:21

vielleicht hat er die seite auch im cache und bearbeitet den code gar nicht mehr erst...

MacMarc 21.11.2002 16:13:39

wenn ich limit 2 angebe, nimmt er einfach die zwei letzten und wenn ich das limit ganz rausnehme, dann tut er die ganze tabelle einfach in umgekehrter reihenfolge darstellen.

aus dem cache nimmt er es auch nicht - habe ich geschaut.


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:23:49 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.