Ich bekomme das Array nicht ausgelesen!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ich bekomme das Array nicht ausgelesen!

    Hallo,
    ich bin ein absoluter Anfänger was PHP angeht. Ich versuche momentan ein kleines Online Fotoalbum zu erstellen.
    Ich habe verschiedene Funktionen zum Hochladen, entfernen, usw. von Dateien.

    Jetzt habe ich ein Programm welches mir verschiedene Verzeichnisse automatisch ausliest, anschließend in einem Array unterbringt und die Dateinamen der Bilder dann anzeigt.

    Ich möchte nun steuern können, welche Bilder das Programm anzeigt. Normalerweise macht man das doch indem man z.B. print $bild[2] schreibt. Wenn ich das tue sieht die Ausgabe so aus:

    PPPPppppppppppppppppppp


    "p" ist der dritte Buchstabe aller Dateien.

    -->

    DCP_0522.jpg

    DCP_0523.jpg

    DCP_0524.jpg

    DCP_0525.jpg

    Kopie (2) von DCP_0522.jpg

    Kopie (2) von DCP_0523.jpg

    Kopie (2) von DCP_0524.jpg

    Kopie (2) von DCP_0525.jpg

    Kopie (3) von DCP_0522.jpg

    Kopie (3) von DCP_0523.jpg

    Kopie (3) von DCP_0524.jpg

    Kopie (3) von DCP_0525.jpg

    Kopie (4) von DCP_0522.jpg

    Kopie (4) von DCP_0523.jpg

    Kopie (4) von DCP_0524.jpg

    Kopie (4) von DCP_0525.jpg

    Kopie (5) von DCP_0522.jpg

    Kopie (5) von DCP_0523.jpg

    Kopie (5) von DCP_0524.jpg

    Kopie (5) von DCP_0525.jpg

    Kopie von DCP_0522.jpg

    Kopie von DCP_0523.jpg

    Kopie von DCP_0524.jpg

    Genau das ist das Problem. Ich brauche das dritte Element in form des Dateinamens um es später in einem img Tag verwenden zu können und nicht den dritten Buchstaben. Was mache ich falsch?

    Hier noch mal der komplette Code:

    <?php

    $verz = "bilder";

    $dh = opendir($verz);
    $bilder = array();
    while($datei = readdir ($dh))

    {


    $bilder [] = $datei;
    }

    foreach($bilder as $file)

    if ($file != "." && $file != "..")

    print "<p>$file[2]";

    // zum überprüfen ob das Array richtig erstellt wird

    print_r(array_keys ($bilder));

    ?>

    Ich hoffe, dass jemand eine Lösung weiß.

  • #2
    hmm,

    nimm mal nur
    PHP-Code:
    $file 
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Wenn ich nur $file nehme funktionierts. Ich möchte aber steuern können welche Dateinamen er mir rausgibt.

      Kommentar


      • #4
        hmm,

        dann würde ich mich auf $bilder beziehen, denn das ist das array, in dem die dateinamen stehen ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          wäre es nicht besser, $file im foreach erstmal zu zerlegen => explode()
          und dann auf das element $file[2] zuzugreifen, sofern existent (sollte das
          nicht immer das letzte element sein?) ... so wird nämlich der string $file wie
          ein array behandelt und $file[2] ist dann der 3. buchstabe => "p" bei Kopie
          Kissolino.com

          Kommentar


          • #6
            Original geschrieben von diter42
            Wenn ich nur $file nehme funktionierts. Ich möchte aber steuern können welche Dateinamen er mir rausgibt.
            $file[2] wird aber immer der 3. buchstabe der datei sein, nicht der ganze name
            mfg

            Kommentar


            • #7
              Original geschrieben von Trashar
              $file[2] wird aber immer der 3. buchstabe der datei sein, nicht der ganze name
              mfg
              darum soll er auch das array nehmen, in dem die dateinamen gespeichert sind und nicht den dateinamen an sich ...
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Jetzt hat es geklappt.

                Vielen Dank!!!

                Ich habe mich jetzt auf das Array bezogen. ich dachte bisher, dass ich durch foreach($bilder as $file) aus dem Arraynamen $bilder das Array $file forme. Offensichtlich ein Irrtum.
                Eine Frage hätte ich trotzdem noch. Wie kann ich anstatt print $bilder[2]
                print $bilder[$anz] schreiben, wobei $anz die anzuzeigenden Elemente enthält: $anz = 2 bis 12 -also die Elemente zwei bis 12.

                Geht das überhaupt?

                Kommentar


                • #9
                  hmm,

                  schleife von 2-12? zb.
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    Jetzt geht auch das. Meine letzte Frage ist, wie ich die Ausgabe per klick erweitern kann?

                    Das ist der Code und bei einem Klick auf Ergebnis erweitern soll das Programm immer drei weitere Bilder ausgeben:


                    <?php

                    $verzname = "bilder";

                    $dh = opendir($verzname);
                    $bilder = array();
                    while($datei = readdir ($dh))

                    {

                    if ($bilder != "." && $bilder != ".." && $datei != "." && $datei != "..")
                    $bilder [] = $datei;


                    }


                    $start=0;
                    $stop=3;

                    for ($i=$start;$i<=$stop;$i++)
                    {
                    print "<p><img src=\"$verzname/$bilder[$i]\" width=100 height=80><br><b>$verzname/$bilder[$i]</b></img>";
                    }


                    echo "<p><a href=\"array.php?stop+3\">zeige mehr</a>";


                    ?>

                    Vielen Dank schon mal im Vorraus.

                    Kommentar


                    • #11
                      PHP-Code:
                      <a href="<?PHP echo $_SERVER["PHP_SELF"]; ?>?stop=<?PHP echo $_GET["stop"] + 3?>" title="noch 3 mehr">zeige mehr</a>
                      zusätzlich mußt du $_GET["stop"] auf existenz prüfen und ggf. auf 3 setzen, dein $stop holst du dir aus dem get oder benutzt es direkt ...
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        Nochmals vielen Dank für die schnelle Hile. Wie überprüfe ich $_GET["stop"] auf existenz? Ich abe jetzt Alle Dateien in dem Array mit count() gezählt und die Zeile

                        if ($Get["stop"]<=8) eingefügt.

                        Kommentar


                        • #13
                          isset() <- mein favorit...

                          empty()
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            Super!!!

                            Wenn mir jetzt noch jemand sagt warum ich diese Zeile nicht einfach in den PHP Code integrieren kann!

                            print "<a href="<?PHP echo $_SERVER["PHP_SELF"]; ?>?start=<?PHP echo $_GET["start"] + 20; ?>" title="noch 3 mehr">zeige mehr</a>"

                            Folgende Fehlermeldung erscheint:

                            Parse error: parse error, unexpected '?' in c:\apache\apache\htdocs\array.php on line 31

                            Kommentar


                            • #15
                              mit print() bist du doch bereits in php. warum also noch einmal die php-tags aufmachen?
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X