Dateifilter funktioniert local aber nicht online

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

  • Dateifilter funktioniert local aber nicht online

    Hallo. Ich nutze eine Art von Dateifilter um bei einer bestimmten bei jeden Datensatz nach einer Bilddatei zu suchen, die mit ID+RowID+IMG+NrdesBildes anfängt um diese dan per Link anzeigen zu lassen.
    Dieses functioniert local sehr gut, doch online wird besagte datei bei jeden Datensatz angezeigt.
    Kann mir jemand sagen, wie ich an dieses Problem beseitigen kann?

    PHP-Code:
    $Pfad = "upload";
    $Nr = 0;
    if($Verzeichniszeiger = opendir($Pfad))
    {
        while($Datei = readdir($Verzeichniszeiger))
        {
            if($Datei != "." && $Datei != "..")
            {
              $suche = "ID".$row->id."IMG";
              $Bilddaten = getimagesize($Pfad."/".$Datei);
              if($Bilddaten[2] == 1 || $Bilddaten[2] == 2 || $Bilddaten[2] == 3)
              {
           if (strrpos($Datei, $suche) !== false) {
              $Nr = $Nr+1;
    ?>
             <a href="<?php echo $Pfad."/".$Datei?>" title="Bild"><?php echo "Bild ".$Nr?></a><br><br>

    <!--    <b>Dateiname:</b> <i><?php echo $Datei?></i><br>
        <b>Dateigröße:</b> <i><?php echo filesize($Pfad."/".$Datei); ?> Bytes</i><br>
        <b>Bildgröße:</b> <i><?php  echo$Bilddaten[0]; ?> x <?php echo$Bilddaten[1]; ?> Pixel</i> -->
    <?php
                
    }
              }
            }
        }
        
    closedir($Verzeichniszeiger);
    }
    ?>
    Danke
    Marco

  • #2
    wenn ich richtig verstanden habe, werden dir nun alle dateien angezeigt.
    also scheint es ja an folgender abfrage zu liegen:

    if (strrpos($Datei, $suche) !== false) { ...


    gebe doch mal aus, was er da vergleicht. also $Datei und $suche

    wäre vielleicht ein erster schritt, um das problem einzugrenzen.
    **********
    arkos
    **********

    Kommentar


    • #3
      Also hier der Vergleich

      PHP-Code:
      $suche "ID".$row->id."IMG"
      Die Dateien haben diesens Vormat.

      ID1IMG1 -> erster Datensatz, erstes Bild
      ID1IMG2 -> erster Datensatz, zweites Bild
      ID2IMG1 -> zweiter Datensatz, erste Bild

      Ein weiteres Problem ist, das online die extention der Datei beim kopieren beibehalten wird, und offline nicht. Das heißt eine hochgeladene Datei heißt nun ID1IMG1.jpg.jpg statt, so wie es soll ID1IMG1.jpg so wie ich es im Script geschrieben habe. kann daran der Fehler liegen? Eigendlich nicht, oder?
      Woran kann es liegen, das die Extention doppelt angegeben wird (online).

      Kommentar


      • #4
        ich weiß nicht, ob ich dein problem mittlerweile noch richtig verstehe

        dennoch sehe ich eine möglichkeit, wo der fehler liegen könnte:

        ändere:
        Code:
        if (strrpos($Datei, $suche) !== false) { ...

        in:
        Code:
        if (strrpos($Datei, $suche) != false) { ...
        wie das mit deinen endungen (.jpg.jpg) kann ich nicht sagen, ohne das uploadscript zu sehen.

        und mal am rande: musst du nicht gelegentlich (wenn sich id ändert) $nr wieder auf 1 setzen?
        **********
        arkos
        **********

        Kommentar


        • #5
          from manual (strrpos)

          Note that the needle in this case can only be a single character in PHP 4.

          Es steht noch mehr dergleichen bei strrpos. Warum wird das überhaupt benützt?

          Kommentar


          • #6
            Das wird genutzt, ob halt entsprechender String im Dateinamen enthalten ist. Wenn nicht wird "false" zurückgeliefert. Jedoch nicht als String, sondern anders.

            Leider funktioniert das definitiv nicht mit !=, es muß !== sein, sonnst übergeht er diese ansage :-(.

            Die Änderung wird weiter oben gemacht, wenn der nächste Datensatz eingelesen wird. Oben ist nur ein Teil des oben genannten.

            Kommentar


            • #7
              Ich denke, mein Tipp erklärt das von Dir geschilderte Verhalten.
              (a) welche PHP Version
              (b) versuchst Du es mit strpos anstatt strrpos und informierst Dich über den(die)Unterschied(e).

              Das !== ist richtig, wie von Dir verwendet, und wird so empfohlen.

              Kommentar


              • #8
                evtl könnte http://de.php.net/manual/de/function.glob.php dir viel Arbeit abnehmen
                Wir werden alle sterben

                Kommentar

                Lädt...
                X