tutorials.de Buch-Aktion 02/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
21
ZUGRIFFE
1000
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Despoiler Despoiler ist offline Mitglied Gold
    Registriert seit
    Dec 2004
    Ort
    Niedersachsen
    Beiträge
    109
    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-Code:
    $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";
        }            

     

    My little Playground || 3D Modellierung & Fotografie

    http://www.despoiler.de

  2. #2
    Nord-Süd-Richtung Nord-Süd-Richtung ist offline Mitglied Platin
    Registriert seit
    Feb 2008
    Beiträge
    522
    Hi

    "aber irgendwo hängts mal wieder". Könntest du uns eine genauere Fehlerbeschreibung geben?
     
    Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
    Die Naz!s trugen braune Hosen ...

  3. #3
    Despoiler Despoiler ist offline Mitglied Gold
    Registriert seit
    Dec 2004
    Ort
    Niedersachsen
    Beiträge
    109
    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.
     

    My little Playground || 3D Modellierung & Fotografie

    http://www.despoiler.de

  4. #4
    Nord-Süd-Richtung Nord-Süd-Richtung ist offline Mitglied Platin
    Registriert seit
    Feb 2008
    Beiträge
    522
    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).
     
    Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
    Die Naz!s trugen braune Hosen ...

  5. #5
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    Zitat Zitat von Nord-Süd-Richtung Beitrag anzeigen
    ersetze erstmal das veraltete mysql_num_rows() durch mysql_numrows().
    Es ist genau umgekehrt, wie heute glaube ich schonmal jemand bemerkt hat. mysql_numrows ist veraltet.

    @Despoiler: Lass mal $number vorher ausgeben und mach ein var_dump($data) nach dem if-Block.

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  6. #6
    Despoiler Despoiler ist offline Mitglied Gold
    Registriert seit
    Dec 2004
    Ort
    Niedersachsen
    Beiträge
    109
    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?
     

    My little Playground || 3D Modellierung & Fotografie

    http://www.despoiler.de

  7. #7
    Nord-Süd-Richtung Nord-Süd-Richtung ist offline Mitglied Platin
    Registriert seit
    Feb 2008
    Beiträge
    522
    Asche auf mein Haupt, ich sollte mal besser wieder mal schlafen gehen, 4 Tage mit wenig Schlaf schlägt aufs gemüt
     
    Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
    Die Naz!s trugen braune Hosen ...

  8. #8
    Despoiler Despoiler ist offline Mitglied Gold
    Registriert seit
    Dec 2004
    Ort
    Niedersachsen
    Beiträge
    109
    @ 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).
     

    My little Playground || 3D Modellierung & Fotografie

    http://www.despoiler.de

  9. #9
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Zitat Zitat von Despoiler Beitrag anzeigen
    @ kuddeldaddeldu

    Jetzt muss ich erstmal grinsen, schöner Name.
    und tippt sich selbst als dickfingeriger Grobmotoriker wie geschmiert.

    Zitat Zitat von Despoiler Beitrag anzeigen
    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?
    Poste bitte mal den richtigen Code samt Testausgaben (und was die ergeben haben).

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  10. #10
    Despoiler Despoiler ist offline Mitglied Gold
    Registriert seit
    Dec 2004
    Ort
    Niedersachsen
    Beiträge
    109
    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-Code:
    $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-Code:
    $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";
        }    

     

    My little Playground || 3D Modellierung & Fotografie

    http://www.despoiler.de

  11. #11
    Despoiler Despoiler ist offline Mitglied Gold
    Registriert seit
    Dec 2004
    Ort
    Niedersachsen
    Beiträge
    109
    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.
     

    My little Playground || 3D Modellierung & Fotografie

    http://www.despoiler.de

  12. #12
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Das Auffüllen des Arrays geht übrigens noch leichter.

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

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  13. #13
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Und dann musst Du nur noch statt $number mysql_num_rows($images) verwenden. Mach's doch nicht so kompliziert.

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  14. #14
    Despoiler Despoiler ist offline Mitglied Gold
    Registriert seit
    Dec 2004
    Ort
    Niedersachsen
    Beiträge
    109
    Okay!
    Lass mich das mal kurz zusammenfassen.

    PHP-Code:
    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-Code:
    $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...
     

    My little Playground || 3D Modellierung & Fotografie

    http://www.despoiler.de

  15. #15
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    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 array_merge() an $data anhängen:

    PHP-Code:
    $data array_merge($dataarray_fill(count($data), $proseite $anz_treffer, array('EOSName' => 'spacer.gif'))); 
    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 02.11.09, 17:18
  2. Array mit gleichen Werten
    Von lara23 im Forum Java
    Antworten: 2
    Letzter Beitrag: 28.12.08, 12:38
  3. Array mit konstanten Werten
    Von DerStauner im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 04.07.08, 13:12
  4. MySQL / PHP Abfrage nach bereits vorh. Werten
    Von citr1 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 08.06.08, 20:13
  5. datenbankanfrage mit werten aus array
    Von Zero2000 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 02.03.06, 16:28