Wie komm ich an den nächsten DB-Eintrag

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

  • Wie komm ich an den nächsten DB-Eintrag

    Ich will über die Datensätze in meiner DB die dort angegebenen Bilder löschen.

    Alle anderen DB-Anfragen mach ich über genaue ID-Bestimmungen.
    Beim Löschen von allen Bildern einer Rubrik kann ich aber nur auf einen Fremdschlüssel zugreifen.
    Da dieser ja bei mehreren Bildern eingetragen ist löscht es mir halt nur ein Bild - iss ja klar.
    Deshalb frag ich erst mal ab wieviele Bilder es sind und hab dann ne Schleife gemacht. Das Problem ist, dass er mir mit mysql_fetch_array immer nur einen Datensatz rausgibt.

    Das Handbuch hat mir nicht mehr weitergeholfen, das Suchen im Forum hat mich ebenfalls nicht weitergebracht.
    Wer gibt mir nen Tipp wie ich das hinbekomm?!
    Kann ich irgendwie den Zeiger auf die nächste Spalte (Datensatz) setzen?
    Oder, ohne mehrmaligen Schleifendurchlauf, alle Datensätze in ein mehrdimensionales Array setzen?

    thx

  • #2
    verstehe nicht ganz was du willst, vielleicht hilft dir aber das schon weiter:

    Das Problem ist, dass er mir mit mysql_fetch_array immer nur einen Datensatz rausgibt.
    ist logisch, steht auch so im manual.
    Kann ich irgendwie den Zeiger auf die nächste Spalte (Datensatz) setzen?
    wenn du das manual aber richtig ließt, steht da auch, dass der Zeiger eins weiter gesetzt wird. somit auf den nächsten Datensatz. mit einer While-schleife kannst du also das ganze result durchgehen. (da sind auch beispiele)

    BTW: Datensäte sind zeilen, keine Spalten

    Kommentar


    • #3
      BTW: Datensäte sind zeilen, keine Spalten
      Ähh ja klar. Ich seh vor lauter Zeilen und Spalten die Tabellen nicht mehr

      dass der Zeiger eins weiter gesetzt wird. somit auf den nächsten Datensatz. mit einer While-schleife kannst du also das ganze result durchgehen
      hmm, ja, so hab ich das auch verstanden. Wenn ich das Result aber mit print_r ausgebe bekomm ich immer nur den letzten eingetragenen Datensatz. Den dann aber so oft wie Datensätze gefunden worden.

      ich mach erstmal nen fetch_rows
      dann ne for-schleife von $i=0 solange $i<$anzahl aus fetch_rows
      {
      dort drin $temp_array[$i] = fetch_array der suchanfrage
      und dort gib ich mit print_r den $temp_array[$i] aus
      }

      wo ist mein Logik-Fehler ???

      Kommentar


      • #4
        lass uns nen deal machen...

        du postest den code und keinen pseudocode und ich sag dir, wo dein logikfehler is ok?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          lass mal nen deal machen: spar dir den hickhack mit der for-schleife und nutze wie gesagt mal ne while-schleife!

          Kommentar


          • #6
            PHP-Code:

            $piccount 
            mysql_num_rows(mysql_db_query($db_database"SELECT * FROM ".$varhttp_webid."picture WHERE ".$dbspalte."='".$delvar."'"));

            $i=0;

            while (
            $i $piccount) {
               if (
            $temp_array[$i] = mysql_fetch_array(mysql_db_query($db_database"SELECT * FROM ".$varhttp_webid."picture WHERE ".$dbspalte."='".$delvar."'"), MYSQL_ASSOC)) {
                        
                    
            print_r($temp_array[$i]);
                    
            //print_r($piccount." ");
                        
                    //unlink ($temp_array[$i]['pic']);
                    //unlink ($temp_array[$i]['thumb']);
                    
            $i++;
                }

            Kommentar


            • #7
              es reicht völlig die datenbank einmal abzufragen
              PHP-Code:
              $result=mysql_db_query($db_database"SELECT * FROM ".$varhttp_webid."picture WHERE ".$dbspalte."='".$delvar."'");
              piccount mysql_num_rows($result);
              $i=0;
              while (
              $temp_array[$i] = mysql_fetch_array($resultMYSQL_ASSOC))
              {
                      
              print_r($temp_array[$i]);
                      
              $i++;

              so sollte es gehen

              btw: mysql_db_query is veraltet, mysql_query sollte bevorzugt wqerden
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                bei dem print_r kommt übrigens folgendes raus:

                Array ( [picID] => 006 [h1IDfk] => 001 [h2IDfk] => 002 [webID] => [picIDnum] => 2 [pic] => pic08-1-1.jpg [thumb] => pic08-1-1_th.jpg [DateTime] => 2003-12-08 18:00:06 ) Array ( [picID] => 006 [h1IDfk] => 001 [h2IDfk] => 002 [webID] => [picIDnum] => 2 [pic] => pic08-1-1.jpg [thumb] => pic08-1-1_th.jpg [DateTime] => 2003-12-08 18:00:06 )

                Ich lade zum Test 2 Dateien hoch. Die zweite heisst aber pic08-1-2.jpg + das Thumbnail

                Aber hier kommt beide male nur der erste Eintrag bei raus.

                Kommentar


                • #9
                  hast du meinen code mal probiert?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Hab Deinen Beitrag erst gar nicht bemerkt, kam zwischen meinen beiden.

                    Mich laust der Affe - jetzt gehts.

                    Aber warum ist das so?
                    Ich mein ich kann mir das jetzt merken und werd mich dran halten - aber WARUM???

                    Dank Dir nochmal vielmals. Ich wär daran verzweifelt.

                    Kommentar


                    • #11
                      du hast in der schleife die gleiche abfrage nochmal gestellt

                      wenn du die datenbank mit mysql_db_query oder mysql_query abfragst bekommst du ganz vereinfacht gesagt eine liste aller datensätze geliefert, auf die deine bedingenen zutreffen


                      damit dir keine datensätze verloren gehen, setzt mysql_(db_)query einen internen zeiger auf das erste element dieser liste

                      => du fragst die datenbank ab und bekommst das erste element;
                      in der schleife fragst du die datenbank nochmal ab und bekommst logischerweise wieder das erste element, da weder php noch mysql wissen, dass du jetzt das zweite element der schon gelieferten liste haben willst
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        ahhh ja - jetzt ist's logisch.

                        Hätt ich eigentl. auch selber drauf kommen können - irgendwann mal - nächstes Jahr(hundert)

                        dank Dir nochmal

                        Kommentar

                        Lädt...
                        X