Ein mit bereits 3 Werten gefülltes Array bis 12 weiter auffüllen

Despoiler

Erfahrenes Mitglied
Hallo,

in meiner Bildergalerie habe ich verschiedene Kategorien.
Ich lasse immer pro Seite und Kategorie 12 Bilder auf einer Seite anzeigen. Manchen Kategorien enthalten aber nur 3-11 Bilder, also weniger um die ganze Seite aufzufüllen.

Ich habe versucht hierfür ein "Platzhalterbild" einzufügen, aber irgendwo hängts mal wieder. Vielleicht weiß jemand Rat, danke schonmal.

Hier mein Code:
PHP:
$proseite = 12;
$number = mysql_num_rows(mysql_query("SELECT EOSID FROM images_eos WHERE EOSVisible ='true'")); 
$seiten = ceil($number / $proseite); 
$start = $_GET['page'] * $proseite - $proseite; 
$ende = $start + $proseite;

#Auslesen der Bilder, mit Start und Ende der jeweiligen Seite
$images = mysql_query("SELECT * FROM images_eos WHERE EOSVisible ='true' ORDER BY EOSID DESC LIMIT $start, $proseite"); 
while($row = mysql_fetch_array($images)) {  
	$data[] = $row;
}
if ($number < $proseite) {
	for($number; $number <= $proseite; $number++) {
		$data[$number][EOSName] = "spacer.gif";
	}			
}
 
Na klar! Ich Nase.....

Es scheint so als würde er die if-Abfrage überspringen, denn es werden z.B. nur die 3 Bilder in der Kategorie angezeigt.
Das Array ist in diesem Fall mit drei Bildern gefüllt, 0-2.
Er füllt also nicht wie gewünscht das Array bis 11 mit dem Bild "spacer.gif" auf.
 
Hi

ersetze erstmal das veraltete mysql_num_rows() durch mysql_numrows().
Zudem (immer nützlich beim debuggen) lasse dir die Variablen ausgeben (hier: $number und $proseite).
 
mysql_numrows! Schaut irgendwie komisch aus. ;-)

Das Depugging hab ich schon alles ausprobiert.
Die Variablen sind alle mit den richtigen Werten gefüllt und werden auch ausgegeben.
Ich Prinzip müsste mein Code doch funktionieren, oder? ;)
 
@ kuddeldaddeldu

Jetzt muss ich erstmal grinsen, schöner Name. ;)

Ich weiß nicht obs daran liegen könnte, aber ändert das was an der Tatsache, dass alles bei mir in einer switch-action verarbeitet wird?!

$number wird ohne Problme unterhalb des Switch ausgegeben, genauso wie var_dump($data).
 
@ kuddeldaddeldu

Jetzt muss ich erstmal grinsen, schöner Name. ;)

und tippt sich selbst als dickfingeriger Grobmotoriker wie geschmiert. :D

Ich weiß nicht obs daran liegen könnte, aber ändert das was an der Tatsache, dass alles bei mir in einer switch-action verarbeitet wird?!

$number wird ohne Problme unterhalb des Switch ausgegeben, genauso wie var_dump($data).

Was denn für ein switch? :suspekt:
Poste bitte mal den richtigen Code samt Testausgaben (und was die ergeben haben).

LG
 
Oh mein Gott, es liegt wirklich daran....ich schäme mich so.....

Wenn ich die if-Schleife jetzt unter die switch-Abfrage schreibe funktioniert es.....määä

Hier mein alter Code:
PHP:
$sortby = $_GET["sortby"];
		switch ($sortby) {
		#Sortby Newest
		case "newest":
		$proseite = 12;
		$number = mysql_numrows(mysql_query("SELECT EOSID FROM images_eos WHERE EOSVisible ='true'")); 
		$seiten = ceil($number / $proseite); 
		$start = $_GET['page'] * $proseite - $proseite; 
		$ende = $start + $proseite;
		#Auslesen der Bilder, mit Start und Ende der jeweiligen Seite
		$images = mysql_query("SELECT * FROM images_eos WHERE EOSVisible ='true' ORDER BY EOSID DESC LIMIT $start, $proseite"); 
		while($row = mysql_fetch_array($images)) {  
			$data[] = $row;
		}

        #Das ist die beschriebene if-Schleife
		if ($number < $proseite) {
			for($number; $number <= $proseite; $number++) {
				$data[$number][EOSName] = "spacer.gif";
			}	
		}

		break;
}

Hier mein neuer Code:
PHP:
$sortby = $_GET["sortby"];
		switch ($sortby) {
		#Sortby Newest
		case "newest":
		$proseite = 12;
		$number = mysql_numrows(mysql_query("SELECT EOSID FROM images_eos WHERE EOSVisible ='true'")); 
		$seiten = ceil($number / $proseite); 
		$start = $_GET['page'] * $proseite - $proseite; 
		$ende = $start + $proseite;
		#Auslesen der Bilder, mit Start und Ende der jeweiligen Seite
		$images = mysql_query("SELECT * FROM images_eos WHERE EOSVisible ='true' ORDER BY EOSID DESC LIMIT $start, $proseite"); 
		while($row = mysql_fetch_array($images)) {  
			$data[] = $row;
		}

		break;
}

#Das ist die beschriebene if-Schleife
if ($number < $proseite) {
	for($number; $number <= $proseite; $number++) {
		$data[$number][EOSName] = "spacer.gif";
	}	
}
 
Zurück