Ergebnis 1 bis 6 von 6
  1. #1
    Braeburn
    Themenstarter
    Avatar von kalle007
    Registriert
    09.2009
    Beiträge
    45

    [PHP] Array und verschluckte Werte ...

    Hallo Apfeltalk-User,

    ich habe mal wieder ein Problem.
    Ich lasse mir ein Verzeichnis einlesen und alle Bildernamen in ein Array speichern.
    Danach lasse ich das Array sortieren und geben das ganze aus ... jedoch wird immer die letzte Datei (im Verzeichnis) nicht mit eingelesen ... und dementsprechend auch nicht ausgegeben ...

    Jetzt die Frage, Wo liegt das Problem, warum ließt er immer die letzte Datei nicht mit ein?

    Code:
    <?php
    $fileAr = array();
    $event="Gewitter und Blitze";
    if ($dir = @dir("events/$event/"))
    {
        while(FALSE !== ($file = $dir->read()))
        {
    
                if ($file == '.' || $file == '..')
                    continue;
                else {
                	if( strstr($file, ".jpg")) {
                    $file = ereg_replace ( ".jpg", "" , $file );
                    $fileAr[$file] = $file; }}
    
        }
        $dir->close();
    }
    else
        die('Verzeichnis existiert nicht!');
    
    sort($fileAr);
    foreach($fileAr AS $name => $value)
    			{
            		if( $name > 0){
            		$c++;
            		echo "<img src='events/$event/$name.jpg' width='250' border='0'>&nbsp;&nbsp;&nbsp;&nbsp;";
    
    						if($c==3){
    						$c=0;
    						echo "<br/><br/>";
    						}}}
    ?>
    Vielen Dank im Vorraus.

    mfg
    kalle
    ◆ iMac 27" i7 8 GB ◆ MacBook Pro 8.2 8 GB i7 ◆ iPhone 4 32 GB ◆ iPad 2 WiFi 32 GB ◆ TC 1 GB ◆

  2. #2
    Jonagold
    Registriert
    11.2009
    Ort
    HH ist nicht weit
    Beiträge
    22
    Hi kalle,

    die Array sind 0-indiziert. Mach mal aus dem
    if( $name > 0) ein if( $name >= 0)
    dann sollte es klappen.

  3. #3
    Englischer Kantapfel Avatar von _linx_
    Registriert
    01.2009
    Alter
    19
    Beiträge
    1.086
    Sehe ich das richtig, das das $name einen String darstellt? Dann ist eine Abfrage sowieso nicht nötig. Und da du in der foreach sowieso nur Elemente hast, die auch wirklich im Array sind, ist diese if total unnötig.

    Ausserdem ist dein Einrückungsstil recht ungewöhnlich... Ich empfehle dir als Lektüre einmal die PEAR Coding Standards (http://pear.php.net/manual/de/standards.php)

  4. #4
    Braeburn
    Themenstarter
    Avatar von kalle007
    Registriert
    09.2009
    Beiträge
    45
    Das Problem ist, das meine Bilder im Verzeichnis nach folgendem Schema aufgebaut sind 1.jpg, 2.jpg usw. wenn ich das if ($name > 0) rausnehme, will er mir immer das Bild 0.jpg (was ja nicht existiert) anzeigen ... deshalb dieser Schritt.

    Aber selbst wenn ich die if-Abfrage entferne werden nicht alle Bilder angezeigt ...

    @_linx_
    Ich persönlich Rücke nicht ein, hab das hier nur für die Leser gemacht, da ich mir einer besser Lesbarkeit erhofft habe.
    Dadurch das ich einen PHP Editor benutze der mit alle Sachen farbig anzeigt, halte ich das einrücken für sinnlos.
    ◆ iMac 27" i7 8 GB ◆ MacBook Pro 8.2 8 GB i7 ◆ iPhone 4 32 GB ◆ iPad 2 WiFi 32 GB ◆ TC 1 GB ◆

  5. #5
    Braeburn
    Themenstarter
    Avatar von kalle007
    Registriert
    09.2009
    Beiträge
    45
    Fehler gefunden, ich sollte Nachts nicht mehr Programmieren oder mehr Club Mate trinken ^^

    Code:
    <?php
    $fileAr = array();
    $event="Gewitter und Blitze";
    if ($dir = @dir("events/$event/"))
    {
        while(FALSE !== ($file = $dir->read()))
        {
    
                if ($file == '.' || $file == '..')
                    continue;
                else {
                	if( strstr($file, ".jpg")) {
                    $file = ereg_replace ( ".jpg", "" , $file );
                    $fileAr[$file] = $file; }}
    
        }
        $dir->close();
    }
    else
        die('Verzeichnis existiert nicht!');
    
    sort($fileAr);
    foreach($fileAr AS $name => $value)
    			{
            		$c++;
            		echo "<img src='events/$event/$value.jpg' width='250' border='0'>&nbsp;&nbsp;&nbsp;&nbsp;";
    						if($c==3){
    						$c=0;
    						echo "<br/><br/>";
    						}}
    ?>
    Fehler lag daran, das ich in der foreach schleife anstatt der Variablen $value die Variable $name benutzt habe, was ja total sinnlos ist ...
    ◆ iMac 27" i7 8 GB ◆ MacBook Pro 8.2 8 GB i7 ◆ iPhone 4 32 GB ◆ iPad 2 WiFi 32 GB ◆ TC 1 GB ◆

  6. #6
    Englischer Kantapfel Avatar von _linx_
    Registriert
    01.2009
    Alter
    19
    Beiträge
    1.086
    Zitat Zitat von kalle007 Beitrag anzeigen
    @_linx_
    Ich persönlich Rücke nicht ein, hab das hier nur für die Leser gemacht, da ich mir einer besser Lesbarkeit erhofft habe.
    Dadurch das ich einen PHP Editor benutze der mit alle Sachen farbig anzeigt, halte ich das einrücken für sinnlos.
    Was heisst "Ich rücke nicht ein"? Schreibst du alles am Stück oder lässt du das das Programm übernehmen?

    Im Prinzip ist es mir ja egal, wie du deinen Code schreibst, aber denke einmal daran, dass du vielleicht ein Projekt weitergeben willst oder ein Produkt verkaufen willst. Wenn du da die ganze Zeit "eigene Standards" bzw. Chaos als Standard festlegst, wirst du keinen Erfolg haben. Gut strukturierter Code ist eine wichtige Grundlage auch bei Fehlersuche!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •