höchsten Wert ermitteln

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
kellanved
Mitglied
Beiträge: 570
Registriert: 05.02.2005 15:15
Wohnort: Berlin

Beitrag von kellanved »

Das lernt man recht schnell. Ich würde tasächlich das Ganze noch auf die "SELECT pic_id, pic_title, pic_desc FROM $album_table ORDER BY RAND() LIMIT 4" Methode umstellen, da so mit einer einzigen SQL-Abfrage alles erledigt wird.


Das ganze Maximum suchen und Zufallsgenerator anschmeissen kannst Du Dir dann schenken.
Zuletzt geändert von kellanved am 09.08.2005 11:57, insgesamt 1-mal geändert.
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,
das nenne ich gesund schrumpfen!

Code: Alles auswählen

<table>
<?php 
   $sql="SELECT pic_id, pic_title, pic_desc FROM $album_table ORDER BY RAND() LIMIT 1"; 
  $result = mysql_query($sql) or die; 
  while ($row = mysql_fetch_array($result)) 
  
  
    print "<TR><TD align='center'>" . $row['pic_title'] . "<BR></TD></TR><TR><TD align='center'><a href='". $phpbb_root_path ."album_page.php?pic_id=" . $row['pic_id'] . "'><img alt='" . $row['pic_desc'] . "' src='". $phpbb_root_path ."album_thumbnail.php?pic_id=" . $row['pic_id'] . "'></a></TD></TR>"; 

?> 
</table>
Flutscht!
So ist auch das Problem erschlagen, wenn der rand einen Wert ermittelt für den es keinen Daten Satz ermittelt.

Ich habe nur immer noch nicht das Prinzip vonm PHP ganz verstanden. Wie komt es z.B. das bei LIMIT=4 gleich vier zeilen dargestellt werden/wurden?

Mein/Unser erstes PHP Skript ist fertig!

Vielen Dank Martin!
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
kellanved
Mitglied
Beiträge: 570
Registriert: 05.02.2005 15:15
Wohnort: Berlin

Beitrag von kellanved »

Ich dachte es sollten vier Bilder dargestellt werden.

Limit setzt die Maximalzahl der zurückgelieferten Ergebnisse, die dann in dem "while" durchlaufen werden; jeder Aufruf von mysql_fetch_array liefert ein Ergebnis, bis keines mehr vorhanden ist.

Man könnte diese Ergebnisse auch z.B. zwischenspeichern.
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,
ich habe jetzt auf drei beschränkt, da der Titel der Bilder teilweise recht breit ist.
In der Kürze liegt die Würze:

Code: Alles auswählen

<table>
<?php 
   $sql="SELECT pic_id, pic_title, pic_desc FROM $album_table ORDER BY RAND() LIMIT 1"; 
  $result = mysql_query($sql) or die; 
  $row = mysql_fetch_array($result); 
    print "<TR><TD class='klein' align='center'>" . $row['pic_title'] . "<BR></TD></TR><TR><td align='center'><a href='". $phpbb_root_path ."album_page.php?pic_id=" . $row['pic_id'] . "'><img alt='" . $row['pic_desc'] . "' src='". $phpbb_root_path ."album_thumbnail.php?pic_id=" . $row['pic_id'] . "'></a></td></TR>"; 
?> 
</table>
Ich rufe das Skript für jedes Build einzeln auf. Sollte doch nicht deutlich mehr Last verursachen, oder?

Vielen Dank nochmal! http://smartor.is-root.com/viewtopic.php?p=64215#64215

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
kellanved
Mitglied
Beiträge: 570
Registriert: 05.02.2005 15:15
Wohnort: Berlin

Beitrag von kellanved »

als Faustregel sollte man die Datenbank so selten aufrufen, wie irgend möglich. (stimmt nicht immer, aber ist erstmal ein guter Anfang).

Ich würde daher nur eine DB Anfrage stellen und mir immer mit mysql_fetch_array($result) jeweils die Daten für ein Bild geben lassen.

Schon alleine um zu verhindern, daß ein Bild evtl. mehrfach ausgelost wird.
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo,
ich will die Bilder horizontal nebeneinander stellen. Das dürfte trotzdem mit einer Abfrage schwierig werden.

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Antworten

Zurück zu „Coding & Technik“