Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datenbank und Ordner auslesen funzt net

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Datenbank und Ordner auslesen funzt net

    Der code soll eine Datenbank und einen Unterordner von /bilder auslesen
    und die Ergebnisse in arrays speichern

    der Unterordner entspricht der mysql-Tabelle zuordng



    aber irgendwie funzts net so wirklich (keine Fehlermeldung aber irgendwie endlosschleife)

    Hier ma der code
    wenn wer weis wie ich des auch kürzer machn kann dann bitte auch schreiben

    Danke schon ma

    PHP-Code:
    <html>
    <body>

    <?
        include("mysql.inc");
      $query = "SELECT bildpfad, bildart, zuordng FROM bilder ORDER BY zuordng";
      $sql = mysql_query($query);
      $i = 0;
      $j = 0;
      $bildnamesql = array();
      $bildtypsql = array();
      $bildordnersql = array();
      $dir_base = '/bilder';
      while ($ds = mysql_fetch_object($sql)){   //soll Datenbank auslesen
        $bildnamesql[$i] = $ds->bildpfad;
          $bildtypsql[$i] = $ds->bildart;
          $bildordnersql[$i] = $ds->zuordng;
        if ($i>0);
          if ($bildordnersql[$i] != $bildordnersql[($i-1)];  //soll Ordner auslesen
            $dir_ordner = $bildordnersql[($i-1)];
            $dir = $dir_base."/".$dir_ordner;
            if ($handle = opendir($dir)){
              while(false !== ($file = readdir ($handle))) {
                if ($file != "." && $file != "..") {
                  $bildnamedir[$j] = $file;
                  $bildordnerdir[$j] = $dir_ordner;
                  $j++
                }
              }
              closedir($handle);
            }
          }
        }
        $i++
      }
      $countdir = count($bildnamedir);
      $countsql = count($bildnamesql);
      $i = 0;
      $bilddir = array();
      $bildarray = array();
      while ($i == ($countdir-1)){
        $bildarray[$i] = array($bildnamedir[$i],$bildordnerdir[$i]);
        $bilddir[$i] = $bildarray[$i];
        $i++
      }
      $i = 0;
      $bildsql = array();
      $bildarray = array();
      while ($i == ($countsql-1)){
        $bildsql[$i] = array($bildnamesql[$i],$bildordnersql[$i]);
        $i++
      }
      $i = 0;
      $j = 0;
      if ($countdir > $countsql){
        $counts = $countdir;
      } else {
        $counts = $countsql;
      }
      echo "Bilder <table>";
      while ($i == ($counts-1)){
        echo "<tr><td>".$bildsql[$i][$j]."</td><td>".$bilddir[$i][$j]."</td></tr>";
        $j++
        if ($j == 2){
          $j = 0;
          $i++;
        }
      }
      echo "</table>";
    ?>

    </body>
    </html>

  • #2
    Zitat von borsty Beitrag anzeigen
    aber irgendwie funzts net so wirklich
    Sehr orginelle, präzise Fehlerbeschreibung!
    Vielleicht versuchst du mal kurz zu beschreiben was du willst. Das aus deinem Text ist das nicht nicht und aus dem Code noch weniger ersichtlich.
    Gruss
    L

    Kommentar


    • #3
      dachte das wär offensichtlich
      naja irren ist menschlich ^^

      ok also so siehts auf meinem Server aus:
      /bilder/sonstiges/ // enthält .jpg Bilder
      /bilder/bauwagen/ // enthält .jpg Bilder
      /bilder/party/ // enthält .jpg Bilder

      die bilder sind (bis auf neu hochgeladene) in einer mysql-Datenbank angelegt, die wie folgt aussieht:

      bildpfad bildart zuordng
      beispiel.jpg jpg sonstiges
      lustig.jpg jpg bauwagen
      .... .... ...


      was ich nu will is das php in ´nem eigenen script die Bilder in der Mysql-Datenbank mit denen der oberen ordner vergleicht

      nu hab ich im obigen script die erstma alle ausgelesen und in verschiedene arrays gestopft

      von euch will ich nu das ihr des ma durchguckt weil irgendwo ´n fehler drin is und ich den nich find
      sicher kann ma des auch irgendwie kürzer machn des script und des wär auch nich schlecht.

      Kommentar


      • #4
        Dieser Code erzeugt mehrere Parse Errors. Könnten wir bitte den echten Code sehen?

        Kommentar


        • #5
          eigendlich hab ich nur ´n paar Kommentare oben noch dazu

          aber egal hier is er nochma:

          PHP-Code:
          <html>
          <body>

          <?
              include("mysql.inc");
            $query = "SELECT bildpfad, bildart, zuordng FROM bilder ORDER BY zuordng";
            $sql = mysql_query($query);
            $i = 0;
            $j = 0;
            $bildnamesql = array();
            $bildtypsql = array();
            $bildordnersql = array();
            $dir_base = '/bilder';
            while ($ds = mysql_fetch_object($sql)){
              $bildnamesql[$i] = $ds->bildpfad;
                $bildtypsql[$i] = $ds->bildart;
                $bildordnersql[$i] = $ds->zuordng;
              if ($i>0);
                if ($bildordnersql[$i] != $bildordnersql[($i-1)];
                  $dir_ordner = $bildordnersql[($i-1)];
                  $dir = $dir_base."/".$dir_ordner;
                  if ($handle = opendir($dir)){
                    while(false !== ($file = readdir ($handle))) {
                      if ($file != "." && $file != "..") {
                        $bildnamedir[$j] = $file;
                        $bildordnerdir[$j] = $dir_ordner;
                        $j++
                      }
                    }
                    closedir($handle);
                  }
                }
              }
              $i++
            }
            $countdir = count($bildnamedir);
            $countsql = count($bildnamesql);
            $i = 0;
            $bilddir = array();
            $bildarray = array();
            while ($i == ($countdir-1)){
              $bildarray[$i] = array($bildnamedir[$i],$bildordnerdir[$i]);
              $bilddir[$i] = $bildarray[$i];
              $i++
            }
            $i = 0;
            $bildsql = array();
            $bildarray = array();
            while ($i == ($countsql-1)){
              $bildsql[$i] = array($bildnamesql[$i],$bildordnersql[$i]);
              $i++
            }
            $i = 0;
            $j = 0;
            if ($countdir > $countsql){
              $counts = $countdir;
            } else {
              $counts = $countsql;
            }
            echo "Bilder <table>";
            while ($i == ($counts-1)){
              echo "<tr><td>".$bildsql[$i][$j]."</td><td>".$bilddir[$i][$j]."</td></tr>";
              $j++
              if ($j == 2){
                $j = 0;
                $i++;
              }
            }
          ?>

          </body>
          </html>

          Kommentar


          • #6
            Zitat von borsty Beitrag anzeigen
            was ich nu will is das php in ´nem eigenen script die Bilder in der Mysql-Datenbank mit denen der oberen ordner vergleicht
            Die Formulierung ist immer noch sehr vage. Willst du nun die Bilder ausgeben, die in der DB, aber nicht im Verzeichnis stehen?
            PHP-Code:
            $sql "
                SELECT 
                    zuordng 
                FROM 
                    bilder 
                ORDER BY 
                    zuordng"
            ;
            $res mysql_query($sql) or exit("Fehler: " mysql_error() . "<br />$sql<br />");
            while (
            $obj mysql_fetch_object($res)){
                
            $sql2 "
                        SELECT
                            bildpfad
                        FROM
                            bilder
                        WHERE
                            CONCAT(zuordng, '/', bildpfad) NOT IN('" 
            .
                                
            implode("', '"glob("$obj->zuordng/*.jpg") .
                            
            "')";
                
            $res2 mysql_query($sql2) or exit("Fehler: " mysql_error() . "<br />$sql2<br />");
                if (
            mysql_num_rows($res2) > 0){
                    echo 
            "Verzeichnis: $obj->zuordng<br>");
                    while(
            $obj2 mysql_fetch_object($res2)){
                        echo 
            " - $obj2->pildpfad<br />";
                    }
                }

            diejenigen, im Verzeichnis, aber nicht in der DB
            PHP-Code:
            $sql "
                SELECT 
                    bildpfad,
                    zuordng 
                FROM 
                    bilder 
                ORDER BY 
                    zuordng"
            ;
            $res mysql_query($sql) or exit("Fehler: " mysql_error() . "<br />$sql<br />");
            while (
            $obj mysql_fetch_object($res)){
                if (!
            file_exists("$obj->zuordng/$obj->bildpfad")){
                    echo 
            "$obj->zuordng/$obj->bildpfad<br />"
                
            }

            oder sonst etwas.
            Sind sicher noch ein paar Fehler in den Beispielen. Aber etwa in die Richtung könnte es gehen
            Gruss
            L

            Kommentar


            • #7
              danke das ihr mir trotz meiner Ausdrucksweise weitergeholfn habt ^^
              ich denk damit komm ich weiter

              Kommentar

              Lädt...
              X