Array erstellen

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

  • Array erstellen

    Hallo,

    ich möchte Daten aus eine MySQL Tabelle in ein Array einlesen.
    Die Daten kommen aus 5 verschiedenen Felder der Tabelle.
    Es sollen aber nur die Felder eingelesen werden die auch einen Wert enthalten.

    Wie muss ich den folgenden Code erweitern oder kann mann direkt in der SQL-Anweisung nur die mit Werten gefüllten Felder auslesen.

    Hier der Code
    PHP-Code:
    mysql_select_db($db,$conn);
    $sql="SELECT fzid, foto1, foto2, foto3, foto4, foto5 FROM tblfz";
    $erg=mysql_query($sql,$conn);
    $row=mysql_fetch_array($erg);


    //Neuer Teil
    $fotodaten=array($row[foto1], $row[foto2], $row[foto3], $row[foto4], 
    Gruss Klaus

  • #2
    sind das NULL werte?

    WHERE field IS NOT NULL oder halt auf einen leeren wert prüfen ...

    btw.: das ist doch schon nen array wieso machst du das nochmal?

    und: strings sind mit ' ' einzuschließen!
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Hallo,

      danke für die schnelle Antwort.

      Ja es sind Nullwerte.

      Das Problem ist nur wie die Abfrage dann aussehen kann.

      Es kann z.B. sein das foto1 einen Wert hat, fot2 Null ist und foto5 wieder einen Wert hat.

      Deswegen wollte ich die Daten die einen Wert haben in ein neues Array einlesen.

      Ist klar, wenn es direkt mit ser sql geht ist das nicht notwendig.

      Gruss Klaus

      Kommentar


      • #4
        Hallo,

        ich habe es jetzt folgendermassen versucht:

        PHP-Code:
        //Fotos in Array einlesen
        mysql_select_db($db,$conn);
        $sql="SELECT foto1, foto2, foto3, foto4, foto5 FROM tblfz";
        $erg=mysql_query($sql,$conn);
        $verz=opendir ('../img/fz/gross/');
        $row mysql_fetch_assoc($erg);
        $zaehler=0;
        while (
        $file readdir ($verz)) { 
         if (
        in_array($file,$row) != true){ 
        print_r ($file);
        //unlink($file);
        $zaehler=$zaehler+1;
        echo 
        "<br>";
        }
        }
        echo 
        "Es wurden insgesamt " "$zaehler" Dateien gelöscht"
        closedir($verz); 
        mysql_free_result($erg
        Das funktioniert aber nicht
        Er gibt mir dann alle Dateien die in $verz vorhanden sind aus.

        Woran liegt das?

        Gruss Klaus

        Kommentar


        • #5
          Shurakai hat dich schonmal gefragt warum du ein bestehendes Array in ein neues einliest.

          Wenn "WHERE field IS NOT NULL" ein Array liefert sind da keine leeren Felder mehr drin. Du kannst also dein Ergebnis mit z.B
          PHP-Code:
          while ($i=0;$i<count($erg);$i++) 
          {
           
          usw...

          auslesen.

          Versteh ich irgendetwas anders als andere?
          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Kommentar


          • #6
            Hallo,

            danke für deine Antwort.

            Ich habe jetzt erstmal "WHERE field IS NOT NULL" in den SQL-String eingebaut aber er funktioniert nicht. Was bedeutet denn "field".

            Ich frage ja dann über die while-Schleife ob die Datei im Array $row enthalten ist.

            Irgendwie passt das aber noch nicht so recht.


            Gruss Klaus

            Kommentar


            • #7
              Original geschrieben von hhcm
              PHP-Code:
              while ($i=0;$i<count($erg);$i++) 
              {
               
              usw...

              Er wollte for schreiben.

              Probiere es mal hiermit:
              PHP-Code:
              mysql_select_db($db$conn);
              $sql 'SELECT foto1, foto2, foto3, foto4, foto5 FROM tblfz';
              $erg mysql_query($sql$conn);
              $pfad '../img/fz/gross/';
              $zaehler 0;
              while (
              $row mysql_fetch_row($erg)) {
                foreach (
              $row as $fotox) {
                  if (
              is_file($pfad.$fotox)) {
                    echo 
              $pfad.$fotox.' wäre gelöscht<br />';
                    
              // unlink($pfad.$fotox);
                    
              $zaehler++;
                  }
                }
              }
              echo 
              "Es wurden insgesamt $zaehler Dateien gelöscht"

              Kommentar


              • #8
                Hallo,

                vielen Dank für deine schnelle Antwort.

                Wenn ich das jetzt so mache werden 1352 Dateien gelöscht.
                Es dürften aber nur etwa 350 sein.

                Das ist etwa die Anzahl an nicht mehr benötigten Dateien im Verzeichnis "img/fz/gross/".
                bzw. die Dateinamen die nicht mehr in der Datenbank enthalten sind.

                Meine Frage ist jetzt, ob im Array nach nicht mehr vorhandenen Dateinamen gesucht wird.
                Dafür hatte ich es mit "in_array" versucht und mit "mysql_fetch_assoc"

                Kannst du mir wieiterhelfen.

                Gruss Klaus
                Zuletzt geändert von kmergen; 09.08.2005, 21:44.

                Kommentar


                • #9
                  Original geschrieben von onemorenerd
                  Er wollte for schreiben.
                  OffTopic:

                  ARG Ja wollte er....

                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    Hallo,

                    verstehe die Antwort mit "for" schreiben nicht.

                    Die Lösung mit der foreach-Schleife ist ja gut, aber das Script würde ja dann alle Dateien löschen die in der Tabelle einen entsprechenden Eintrag haben.

                    Es sollen aber nur diejenigen Dateien gelöscht werden, die keinen Eintrag mehr in der Tabelle haben.

                    Also wenn im Verzeichnis eine Datei "1345.jpg" ist und in der Tabelle nicht mehr, dann soll diese Datei gelöscht werden.

                    Wie man das Script nicht dementsprechend umschreiben.


                    Gruss Klaus

                    Kommentar

                    Lädt...
                    X