Dieser Zufall ...

PAHO

Grünschnabel
N'abend. Ich möchte mir ein paar Bilder immer zufällig abrufen. Habe mir eine Tabelle erstellt, wo eine ID, Name und Bild (url) enthalten sind.
Ich habe das jetzt so geschrieben:
PHP:
<?PHP

  $db_server = "localhost";
  $db_name = "mysql";
  $db_user = "ich";
  $db_passwort = "ich";
  $db_ats = "ats_pics";
         
$db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen");
$db_check = @MYSQL_SELECT_DB($db_name);


$ats = "SELECT pfad FROM $db_ats WHERE name='head'"; 
$result = mysql_query($ats);
while ($row = mysql_fetch_array ($result)) 
{
$bild= $row["pfad"];
}

?>
So ist das ganze in der Tabelle:

id | name | pfad
----------------
1 | head | ./pic/head.gif
2 | head | ./pic/head2.gif
usw...
Doch zufällig funktioniert nix...
Danke schon mal :rolleyes:
 
fehlermeldung? keine ausgabe?

probiers mal mit diesem query:
PHP:
srand((double)microtime()*1000000);
$random = rand(0,10); ## letzter wert die anzahl deiner bilder, sonst hols dir per query aus der db
$ats = "SELECT pfad FROM ".$db_ats." WHERE name = 'head' LIMIT 0,".$random;

danach natürlich noch ausgeben.. aber das hattest du ja bestimmt schon ;)
 
Ein grosses DANKESCHÖN an den Herrn Brainstorm mit der super Ergänzung :-)

Doch manchmal ist kein Bild gekommen... dann hab ich einfach beim $random = rand(0,6); statt dem 0 eine 1 genommen. Also so:
PHP:
$random = rand(1,6);

Sollte doch kein Problem sein, oder ?
 
Und:
"letzter wert die anzahl deiner bilder, sonst hols dir per query aus der db"
Wie kann die db die derzeitigen rows automatisch in eine eigene spalte, sagen wir "summe" "zusammenrechnen" ?
 
PHP:
$sum_query = "SELECT pfad FROM $db_ats WHERE name='head'";
query($sum_query);
$anzahl_deiner_rows = mysql_affected_rows();
 
Irgendwie tut sich dann nix mehr...
Ich habs 1. so gemacht:
PHP:
$sum_query = "SELECT pfad FROM $db_ats WHERE name='head'"; 
$query($sum_query); 
$pics = mysql_affected_rows();

srand((double)microtime()*1000000); 
$random = rand(1,6);
$ats = "SELECT pfad FROM ".$db_ats." WHERE name = 'head' AND id = ".$random;
$result = mysql_query($ats);
  while ($row = mysql_fetch_array ($result)) 
{
$bild= $row["pfad"];
}
und 2. so:
PHP:
$sum_query = "SELECT pfad FROM $db_ats WHERE name='head'"; 
$query($sum_query); 
$pics = mysql_affected_rows();


srand((double)microtime()*1000000); 
$random = rand(1,($pics));
$ats = "SELECT pfad FROM ".$db_ats." WHERE name = 'head' AND id = ".$random;
$result = mysql_query($ats);
  while ($row = mysql_fetch_array ($result)) 
{
$bild= $row["pfad"];
}
selbst wenn ich dein obriges script nur einfüge (siehe 1.) kommt eine weisse seite...
 
PHP:
$sum_query = "SELECT * FROM $tablename WHERE name='head'"; 

$query = mysql_query($sum_query); 

$pics = mysql_num_rows($query);


srand((double)microtime()*1000000); 

$random = rand(1,6);

$ats = "SELECT * FROM ".$db_ats." WHERE name = 'head' AND id=".$random; // reicht eigentlich wenn du nur die IP angibst.

$result = mysql_query($ats);

  while ($row = mysql_fetch_array ($result)) {

$bild = $row[pfad];

}

echo '<img src="./'.$row[pfad].'" />';

soll ja auch ne weisse seite bei rauskommen, du gibst ja auch nirgends etwas mit echo aus :P

so sollte das wohl gehen
 
Ahh... ich habs eingebaut aber nicht geschrieben. Es funktioniert ja eigentlich... nur ich will eben, dass man nicht immer manuell eingeben muss, wieviel Bilder sich in der Datenbank befinden...
 
aber wie es jetzt aussieht, schein es zu funktionieren.
einfach
PHP:
 $random = rand(1,($pics));
und es geht.
BigTHX an euch
 
einfacher waer es die mysql RAND() funktion zu benutzen:

SELECT blah FROM wurst ORDER BY RAND() LIMIT 0,1;
selectiert dir 1 zufallszeile aus deiner tabelle, geht aber erst ab mysql-version 3.23.2

ansonsten kannst du es so probieren:
SELECT *, RAND() AS random_field ORDER BY random_field LIMIT 0,1

statt dem LIMIT 0,1 kannst du natuerlich auch LIMIT 0,3 oder aehnliches angeben, so hast du z.b. 3 zufallszeilen ...
 
Zurück