Zufälligen Datensatz per PHP aus MySQL auslesen und anzeigen

  • Themenstarter Themenstarter edgar163
  • Beginndatum Beginndatum
E

edgar163

Hallo,
ich habe folgendes Problem: und zwar möchte ich einen Datensatz zufälligerweise auswählen lassen und diesen auf einer Seite anzeigen (hier: Stadt und Land). Klingt eigentlich relativ simpel. Leider habe ich kaum Erfahrung mit PHP + SQL und arbeite mich gerade erst ein. Jedenfalls wird auf meiner Seite nichts angezeigt. Weder der Name der Stadt, noch das Land. Fehlermeldung erhalte ich aber auch keine. Vielleicht kann mir jemand weiterhelfen, wie ich die Daten angezeigt bekomme?

Hier mal mein Quelltext:

<?
include("mysql.inc"); //Verbindung mit der Datenbank
$query = "SELECT COUNT(*) FROM hauptstadt";
$anzahl = mysql_query($query);
$id = rand(1,$anzahl);
$query = "SELECT stadt, land FROM hauptstadt WHERE id = $id";
$ds = mysql_query($query);

$stadt = htmlentities($ds->stadt);
$land = htmlentities($ds->land);
mysql_close($dz);
?>

<html>
<head>
</head>
<body>
<? include("menue.inc") ?>
<?= $anzahl ?>
<p style="width: 400px;">
<b>Stadt: <?= $stadt ?></b><br> Land: <i><?= $land ?></i>
</p>
</body>
</html>
 
Danke erstmal, aber leider haben mir die Links bei meinem Problem nicht viel weiter geholfen.

Ich habe jetzt zwei Fehlermeldungen auf meiner Seite:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\ausgabe.php on line 4

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\ausgabe.php on line 7

Die Verarbeitung dieser Rückgabewerte funktioniert leider nicht ganz, wie ich mir das vorgestellt habe. Ich habe bspw. nachgelesen, dass bei mysql_result u.a. als Parameter eine Zeile und eine Indexnummer angegeben werden muss. Mir ist aber nicht ganz klar, wie ich das umsetzen soll, da ich hier nur die Anzahl der vorhandenen Datensätze bestimmen will.

Auf eine Sortierung der Datensätze lege ich keinen Wert, da sowieso immer nur einer angezeigt werden soll (nach dem Zufallsprinzip). Daher kann ich auf ORDER BY doch ganz verzichten?!

<?
include("mysql.inc");
$sql = mysql_query("SELECT COUNT(*) FROM hauptstadt");
$max = mysql_result($sql,0); <-- Zeile 4
$id = rand(1,$max);
$sql = mysql_query("SELECT stadt, land FROM hauptstadt WHERE id = $id");
$ds = mysql_fetch_object($sql); <-- Zeile 7
$stadt = htmlentities($ds->stadt);
$land = htmlentities($ds->land);
mysql_close($dz);
?>

<html>
<head>
</head>
<body>
<? include("menue.inc") ?>
<p style="width: 400px;">
<b>Frage: <?= $stadt ?></b><br> Antwort: <i><?= $land ?></i>
</p>
</body>
</html>
 
alternativ habe ich jetzt folgendes ausprobiert:

<?
include("mysql.inc");
$sql = mysql_query("SELECT * FROM hauptstadt ORDER BY RAND() LIMIT 0,1");
$ds = mysql_fetch_object($sql);
$stadt = htmlentities($ds->stadt);
$land = htmlentities($ds->land);
mysql_close($dz);
?>

auch hier folgende Fehlermeldung:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\ausgabe.php on line 4

Ich hab hier das Buch PHP5 (Webserverprogrammierung unter Windows und Linux) aus dem Hanser Verlag. Dort ist der Befehl mysql_fetch_object auch so beschrieben. Deswegen weiß ich nicht wo hier der Haken ist.

?
 
Zuletzt bearbeitet:
Danke für den Tipp. Ich habe festgestellt, dass die Verbindung zur DB nicht funktioniert hat.
Der Rest war korrekt. Jetzt werden meine Datensätze auch angezeigt.
 
Zurück