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

Ok das läuft jetzt so einigermaßen. ;)

Danke schonmal bis hierher.

Er füllt jetzt den Rest mit einem "Platzhalter" auf, abeeeeer nur in dem Fall, dass auch wirklich nur weniger wie 12 Bilder in der Kategorie sind!
Ist das nicht der Fall, also Bilder > 12, so greift meine Schleife nicht mehr, is ja auch logisch.
Er füllt aktuell immer nur die erste Seite mit Platzhaltern auf wenn Bilder < 12.

Was hälst du von meiner Theorie immer zu prüfen, wieviele Bilder auf einer Seite wirklich angezeigt werden.
- Ich weiß wieviele Bilder in der Kategorie sind
- Diese geteilt durch 12 gibt mir die Anzahl der Seiten
- Ich habe immer einen Start-Wert für meine SQL-Abfrage

War da nicht was mit der Operation "Modulo", die mir einen Restwert zurückgibt?
Könnte man nicht das so rechnen: (GesamtAnzahlBilder - Seitenzahl * ProSeite), wenn ich diesen Wert jetzt auf Rest überprüfe ist alles OK und er fügt keine weiteren Platzhalter ein.
Ist jedoch ein Rest vorhanden, so könnte ich doch die Platzhalter ausgeben?

Oh Mann und das alles noch um diese Uhrzeit.
Mal sehen was du davon hälst. ;)
 
Das Auffüllen des Arrays geht übrigens noch leichter.

PHP:
array_fill(count($array), $proseite - $number, 'spacer.gif');
 
Okay!
Lass mich das mal kurz zusammenfassen.

PHP:
array_fill(count($array), $proseite - $number, 'spacer.gif');

count($array) --> Das zählt wieviele Einträge in dem Array enthalten sind.
$proseite - mysql_num_rows($images) --> Gibt die max. Anzahl von Spalten an, die mit 'spacer.gif' befüllt werden sollen.

Wenn das so richtig ist, müsste mein Code doch so lauten, denn jede Seite hat ja immer max. 12 Bilder.
PHP:
$proseite = 12;
array_fill(count($data[]), $proseite, 'spacer.gif');

Aber woher weiß er jetzt, in welchen Bereich er das spacer.gif schreiben soll?
Es soll ja im $data[][EOSName] landen.

Sorry wenn ich nerve... ;)
 
Hi,

Dein Array heißt $data, nicht $data[]. Du müsstest als Wert array('EOSName' => 'spacer.gif') übergeben und das Ergebnis von array_fill() dann per [phpf]array_merge[/phpf] an $data anhängen:

PHP:
$data = array_merge($data, array_fill(count($data), $proseite - $anz_treffer, array('EOSName' => 'spacer.gif')));

LG
 
Hi,

Dein Array heißt $data, nicht $data[]. Du müsstest als Wert array('EOSName' => 'spacer.gif') übergeben und das Ergebnis von array_fill() dann per [phpf]array_merge[/phpf] an $data anhängen:

PHP:
$data = array_merge($data, array_fill(count($data), $proseite - $anz_treffer, array('EOSName' => 'spacer.gif')));

LG

Soweit ich das sehe nutzt er ein mehrdimensionales array( $data[] = $row, $row ist auch ein array). Demnach müsste das so heißen:
PHP:
$proseite = 12;
array_fill(count($data[]), $proseite-mysql_num_rows($images), array(EOSName => 'spacer.gif');
 
Hi,

Soweit ich das sehe nutzt er ein mehrdimensionales array( $data[] = $row, $row ist auch ein array).

Ja, ein Array aus Datenbankzeilen. Deshalb muss er bei array_fill() als Value ja auch ein assoziatives Array übergeben.

Demnach müsste das so heißen:
PHP:
$proseite = 12;
array_fill(count($data[]), $proseite-mysql_num_rows($images), array(EOSName => 'spacer.gif');

Nein. [] ist ein Operator, mit dem man ein Element an ein Array anhängt. Das hat im Übergabeparameter nichts zu suchen.

LG
 
Hallo Buben, heute bin ich endlich dazugekommen das hier zu testen und ich muss sagen, es funktioniert einwandfrei!
Ich hab den Code noch ein wenig angepasst um eine Fehlermeldung zu vermeiden.

Jedenfalls hier nochmal mein fertiger Code für alle, die vielleicht irgendwann auch so ein Problemchen haben werden.

PHP:
$proseite = 12;
$anzahl = mysql_num_rows($images);

if ($anzahl < $proseite) {
	$data = array_merge($data, array_fill(count($data), $proseite - $anzahl, array('EOSName' => 'spacer.gif')));
}


Ich bin sehr zufrieden, mal wieder ein fettes Dankeschön an alle Beteiligten, ihr seid spitze! :)

Ich mach demnächst ein Update, wer kucken will kann kucken und schauen wobei ihr mir so toll geholfen habt. :) Die URL steht ja unten in der Signatur.

So jetzt aber, Tschüss mit üss.
 
Mal 'ne andere Frage. Warum speicherst Du überhaupt das komplette Datenbankergebnis in einem Array? Mach doch die Ausgabe direkt in der Schleife, dann kannst Du eine Schleife von 1 bis $proseite - $anzahl hinterherschieben, um die Spacer auszugeben und gut ist's.

LG
 
Zurück