Probleme mit "array_rand" - nur eine Ausgabe

mtruels

Grünschnabel
Hallo,
bis jetzt hab ich bei meinem ersten php-Projekt noch alles hinbekommen, jetzt wills aber ned mehr so ich ich das gerne hätte:(

Code:
$xa = mysql_query("SELECT `username` FROM `users` WHERE `UserBild` = '1'");
$aa = mysql_fetch_array($xa);
$rand = $aa[array_rand($aa)]; 
echo $rand;


Ich will einen zufälligen Nutzer ausgeben, aber nur wenn dieser auch ein Bild hochgeladen hat (UserBild = 1) aber obwol alle 4 Testuser dies erfüllen (und phpmyadmin bei dem Befehl auch alle anzeigt, liefert mir der Browser nur einen Wert zurück.

Ich hoffe das ihr mir da weiterhelfen könnt:)
MfG
Mark
 
Du hast einfach nur den zweiten parametervergessen ;)

PHP:
$xa = mysql_query("SELECT `username` FROM `users` WHERE `UserBild` = '1'");
$aa = mysql_fetch_array($xa);
$count = count($aa); // Zaehlt wieviele Werte das Array hat.
$rand = [array_rand($aa), $count]; // Zweiter Parameter, soviele Sachen sollen ausgelesen werden
for ($i = 1; $i<= $count; $i++)
{
echo $rand[$i];
}

Wenn allerdings mehrere User bei UserBild den Wert 1 haben, musst du das ganze umschreiben:

PHP:
$xa = mysql_query("SELECT `username` FROM `users` WHERE `UserBild` = '1'");
$aa = mysql_fetch_array($xa);
$results = array();
while ($row = mysql_fetch_array($aa))
{
array_push($results, $row[0]);
}

$count = count($results);
$rand = [array_rand($results), $count];
for ($i = 1; $i<= $count; $i++)
{
echo $rand[$i];
}

Das ist jetzt nicht getestet, sollte aber funktionieren :)
 
Oh, vielen Dank für die schnelle Hilfe, aber:

Code:
$rand = [array_rand($results), $count];
Die Zeile gefällt ihm nicht, wegen den [], wenn ich die durch () tausche meckert er am ",".

Und wieso die for-Schleife, möglicherweise habe ich mich falsch ausgedrückt, das bitte ich zu entschuldigen:

- Es gibt mehrere Mitglieder, einige davon haben BIlder hochgeladen. (UserBild (1 oder 0) zeigt lediglich an ob ein Bild vorhanden ist.

- Die Personen mit UserBild = 1 kommen in den Topf mit den Randomwerten

- Jetzt soll immer eine Person, sprich Bild, Name und Link zum Profil ausgeben werden.

Nun wird aber immer nur ein Wert (und zwar "admin", weil der wohl UserID 1 hat) geliefert und keine unterschiedlichen Werte:)
 
Hi mtruels,

probiers mal so:
PHP:
$xa = mysql_query("SELECT `username` FROM `users` WHERE `UserBild` = '1'");
$aa = mysql_fetch_array($xa);
shuffle($aa);
echo $aa[0];

mfg
 
Auch dir, Drucko, danke ich für die Hilfe, aber auch hier funktioniert es nicht.
Es wird wieder nur "admin" (also der erste Wert) ausgegeben.

Habe auch noch mal überprüft ob die sql-Anweisung auch wirklich mehrere Werte liefert, und phpmyadmin gibt mir vier (und damit alle richtigen Werte)

Hab mit deinem Code weiter rumexperimentiert, leider auch ohne Ergebnis, auch die Beispiele von google helfen mir ned wirklich weiter :(
 
xDD
Also is ja klar warum nur ein Wert kommt ;)
du gibst nur einen Wert aus.
Ersetze das echo $aa[0]; mal duch
PHP:
$count = count($aa);
shuffle($aa);
for ($i = 1; $i<= $count; $i++)
{
echo $aa[$i];
}
 
Mahlzeit

Was spricht gegen ORDER BY RAND() ?
PHP:
$xa = mysql_query("SELECT `username` FROM `users` WHERE `UserBild`='1' ORDER BY RAND() LIMIT 1");
 
xDD
Also is ja klar warum nur ein Wert kommt ;)
du gibst nur einen Wert aus.
Ersetze das echo $aa[0]; mal duch
PHP:
$count = count($aa);
shuffle($aa);
for ($i = 1; $i<= $count; $i++)
{
echo $aa[$i];
}

ich glaub er will nur einen Wert ausgegeben haben, aber halt nen zufälligen und das Problem ist, dass immer der Gleiche ausgegeben wird?!
 
Zurück