ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / PHP / MySQL Probleme / Array auslesen, mischen, anzeigen


Seite 1 von 1

wasserhixe schrieb am 08.08.2003 um 14:29 Uhr

Hallo!
Wahrscheinlich ists ganz einfach, aber ich habs halt noch nicht gemacht. Ich möchte bestimmte Daten aus der Datenbank auslesen und diese dann "mischen" und sie dann ausgeben. Ich weiß wie man Daten ausliest und wie man sie Mischt und ausgibt, aber ich bekomme die Verknüpfung nicht hin.
Wenn ichs mit untenstehendem Script mache, bekomme ich ne Fehelrmeldung: Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in J:\home\test.php on line xy

-->array_rand($link, 3); es sind aber 32 Datensätze in der DB.

mysql_select_db($dbName,$conn);

$query = mysql_query("select echtzahl from $tabelle ");

while($link=mysql_fetch_array($query)) :

$rand_var = array_rand($link, 3);
for($x=0;$x<count($rand_var);$x++){
echo $var[$rand_var[$x]] . "<br>";
}

endwhile;


Hat jemand einen Tipp??

Herzlichen Dank schonmal
sagt die wasserhixe

Tendor schrieb am 08.08.2003 um 16:39 Uhr

mysql_fetch_array holt nur eine zeile von deiner query aus der datenbank,
das heißt, $link besteht nur aus einem element.

also (ungefähr so, ungetestet)

mysql_select_db($dbName,$conn);
$query = mysql_query("select echtzahl from $tabelle ");
while($link=mysql_fetch_array($query))  {
  $a[++$i] = $link;
}
$a = array_rand($a, $i );
foreach( $a as $element) print $element.'<br />';

wenn du ein aktuelles mysql hast müsste auch folgendes gehen:

//...
$query = mysql_query( "SELECT echtzahl FROM $tabelle ORDER BY RAND(NOW())");
while($link=mysql_fetch_array($query))  {
  print $link.'<br />';
}

wasserhixe schrieb am 09.08.2003 um 07:56 Uhr

Tendor postete
mysql_fetch_array holt nur eine zeile von deiner query aus der datenbank,
das heißt, $link besteht nur aus einem element.

also (ungefähr so, ungetestet)

mysql_select_db($dbName,$conn);
$query = mysql_query("select echtzahl from $tabelle ");
while($link=mysql_fetch_array($query))  {
  $a[++$i] = $link;
}
$a = array_rand($a, $i );
foreach( $a as $element) print $element.'<br />';

wenn du ein aktuelles mysql hast müsste auch folgendes gehen:

//...
$query = mysql_query( "SELECT echtzahl FROM $tabelle ORDER BY RAND(NOW())");
while($link=mysql_fetch_array($query))  {
  print $link.'<br />';
}

wasserhixe schrieb am 09.08.2003 um 08:01 Uhr

hallo Tender, danke für deine Antwort.

Beispiel 1 gibt mir 32 gemischte Zahlen zurück, aber nicht die, die in der Spalte "echtzahl" drinstehen. Da blick ich nicht durch.

Beispiel 2 gibt mir 32mal das Wort Array aus.

Hm. sehr verwirrend.....

Als Überbrückung habe ich mir mit einem handgemachten Array und einem Switch geholfen. Unelegant, ich weiß, aber es funzt so.
Ich hätte mir aber gerne die echtzahlen in ein solchens Array hineingelesen:
$var = array("107", "108", "109", "110" ....);
$rand_var = array_rand($var, 28);
for($x=0;$x<count($rand_var);$x++){
$ergebnis=$var[$rand_var[$x]];


Weisst du noch einen Tipp?

Liebe Grüße von der wasserhixe

Tendor schrieb am 10.08.2003 um 14:03 Uhr

jo, war fast richtig.
versuchs mal so.


mysql_select_db($dbName,$conn);
$query = mysql_query("select echtzahl from $tabelle ");
while($link=mysql_fetch_array($query) {
$a[++$i] = $link['echtzahl'];
}
$a = array_rand($a, $i );
foreach( $a as $element) print $element.'<br />'; 

//...
$query = mysql_query( "SELECT echtzahl FROM $tabelle ORDER BY RAND(NOW())");
while($link=mysql_fetch_array($query)) {
print $link['echtzahl'].'<br />';
} 

ps: immer noch nicht getestet. vielliecht gehts ja jetzt ;)

wasserhixe schrieb am 10.08.2003 um 17:02 Uhr

Oaiehhh

Ja, das funzt. Nun denk ich mir noch aus, wie ich es hinbekomme damit eine siebenspaltige Tabelle zu basteln :-)

Danke!

Nasse Grüße von der wasserhixe :-x

Seite 1 von 1