Bilder mit den wenigsten "views" anzeigen

paul11

Grünschnabel
Hallo zusammen, ich bin Anfänger in sachen php/mysql und stehe gerade vor einem kleinen Prömchen. Aber vielleicht kann mir ja jemand weiterhelfen.

Folgender Code gibt mir ein Bild aus der DB mit einem dazugehörigem Link.

Das ganze wird per Zufall gewählt und zum Schluß die Spalte "views" um 1 erhöht, welche mir anzeigen soll, wie oft das Bild aufgerufen wurde.

PHP:
$query1 = mysql_query("SELECT * FROM imagefarm WHERE size = 'big'");

$numTab1 = mysql_num_rows($query1);	
$RandNum1 = (rand()%$numTab1);
$query1 = mysql_query("SELECT * FROM imagefarm WHERE size = 'big'  LIMIT $RandNum1, 1");

while ($row1 = mysql_fetch_array($query1)){
$imgID1 = $row1['id'];
$imgURL1 = $row1['url'];
$imgIMG1 = $row1['img'];

$img1="<a href=\"".$imgURL1."\" >$imgIMG1."</a>";

}  
mysql_query("UPDATE imagefarm SET views = views+1 WHERE id = ".$imgID1."");

Soweit so gut.

Wie schaffe ich es nun das ein Bild nicht per Zufall gewählt wird sondern das Bild mit den wenigsten "views" ?

Gibts da was mit MIN(views) o.ä. ?
 
Hi,

erstens hat MySQL eine RAND()-Funktion, so dass man auch bei zufälliger Auswahl nicht erst umständlich eine extra Abfrage machen muss, um die Anzahl Datensätze zu ermitteln:

Code:
SELECT * FROM tabelle ORDER BY RAND() LIMIT 1

Zweitens: MySQL hat eine MIN()-Funktion, ja. Aber die brauchst Du doch bei Deinem Vorhaben gar nicht. Sortiere einfach aufsteigend nach dem Feld "views".

LG
 
Vielen Dank nochmal,

habe also folgende Lösung:

PHP:
$query = mysql_query("SELECT * FROM imagefarm ORDER BY views");

und zum schluss:

PHP:
mysql_query("UPDATE imagefarm SET views = views+1 WHERE id = ".$banID3."");
mysql_query("ALTER TABLE imagefarm ORDER BY views");

letztendlich habe ich mich aber doch für die ORDER BY rand() variante entschieden.
 
Zurück