Hallo allerseits!
Ich habe mir in de letzten Monaten die PHP- Basics angeeignet und u.a. die Fotoseite einer Website programmiert. Hier werden oben je nach Auswahl eine bestimmte Reihe Thumbnails geladen, darunter erscheint dann je nach Klick mittels $_GET das jew. Bild 'in groß'. Nun fänd' ich' optisch ansprechender, dass die Thumbnails- unabhängig, welche Menge jeweils aus der Datenbank geladen wird- zur Hälfte unter und zur Hälfte über dem großen Bild abgebildet werden, d.h., von den mittels select ermittelten Datensätzen sollen oben nur 50% dargestellt werden, der 'Rest' kommt nach unten. Kann mir jemand sagen, wie ich das am Cleversten programmiere?
LM
Datensätze halbieren
-
-
mmh du könntest die anzahl der datensätze auslesen und dann die anzahl halbieren, dann hast du ach die anzahl der bilder die über und unter dem bild dargestellt werden sollen (gibt da glaub ich ne mysql funktion)
oder du machst die anfrage zwei mal und zählst beim ersten mal die datensätze wobei wahrscheinlich die erste version schneller ist. -
oder mit einer for-Schleife (denk mal das meinest du, Greg10?).
Code
Alles anzeigen//Bilder holen und zählen $abfrage = mysql_query('SELECT * FROM Bilder'); $wieviel_bilder = mysql_num_rows($abfrage); //über dem großen Bild for ($i=0; $i<=$wieviel_bilder/2; $i++) { //gib die Bilder aus } //unter dem großen Bild for ($i=wieviel_bilder/2; $i<=$wieviel_bilder; $i++) { //Bilder ausgeben }
Müsste so gehen.
Gute Nacht,
Jojo -
@ Jojo
Hm... ich gebe zu, ich hab's jetzt noch nicht probiert, aber liegt da nicht ein Denkfehler vor? mysql_num_rows gibt zwar die Anzahl der Datensätze aus, aber womit du in der 'for'- Schleife agierst, sind letztlich doch nur 'abstrakte Zahlen'. Meint: Sind's zehn Datensätze, wirft PHP oben von 0 bis 5 gleich sechs Datensätze, unten von 6 bis 10 gleich fünf Datensätze 'raus- aber doch immer wieder am Anfang beginnend, denn nur durch die Verwendung des Zahlenwerts der Variable '$wieviel_bilder' innerhalb einer RECHENoperation weiß das Programm doch nicht, dass jeweils ANDERE Daten geliefert werden sollen!?
LM -
GreG
Klar, die Datensätze auslesen und dann halbieren: Wenn's dafür eine Funktion gibt: her damit. Aber genau dazu hatte ich bislang nichts Brauchbares gefunden.
Deinen zweiten Vorschlag habe ich allerdings leider nicht verstanden.
LM -
guten Morgen. Kaffee. Aaah.
Sry Ludger, war aber auch schon spät, sollte mir abgewöhnen nach Barschicht noch solche Beiträge zu schreiben....
Anderer Vorschlag:
Code
Alles anzeigen//Datensätze zählen $bilder = mysql_num_rows('SELECT * FROM bilder'); //erste Hälfte $abfrage = mysql_query("SELECT * FROM bilder LIMIT $bilder/2"); //Ausgabe der Bilder per while-schleife und in der Schleife die Datensatz-id notieren while ($row = mysql_fetch_object($abfrage)) { //ein Bild $last_id = $row->id; } //zweite Hälfte $abfrage = mysql_query("SELECT * FROM bilder WHERE id > $last_id"); //Bilder ausgeben
Das Blöde is halt, das du 3 Abfragen brauchst, was bei entsprechender Datenmenge schon lange werden kann. Musste halt evtl. mal auf nem free-webspace testen, obs zu unangenehm für den Nutzer wird.
Hoffe das hilft dir weiter und rohes Fest,
Jojo -
Hallo Jojo,
entschuldige die Verzögerung. Ich hab's ein Bisschen geschoben, und ganz auf Anhieb funktionierte es auch nicht, weil ich noch was anderes syntaktisch falsch gemacht hatte. Aber jetzt haut's in der Tat hin
Allerdings muß man zu Anfang noch zwei Zeilen mehr einbauen (vielleicht hab' ich da auch um die Ecke gedacht). Nämlich:Code//-Abfrage, z.B.: $res_ = mysql_query("select * from bilder "); //-Auslesen der Datensatz- Anzahl: $bilder = mysql_num_rows($res_); $bilder_=$bilder/2 //-erneute Abfrage unter Zuhilfenahme von $bilder_: $res = mysql_query("select * from bilder LIMIT 0,$bilder_"); //...mit $bilder/2 direkt in der Abfrage haute es bei mir nicht hin (wieso das?), da habe ich halt auch noch diesen kleinen Umweg eingebaut.
Wie auch immer- jetzt läuft es. Vielen Dank!