Ankündigung

Einklappen
Keine Ankündigung bisher.

problem mit update von positionsnr nach löschen einer Position

Einklappen

Neue Werbung 2019

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

  • problem mit update von positionsnr nach löschen einer Position

    Also ich hab da folgenden code , welcher die Positionnr nach dem löschvorgang wierder neu setzen soll damit ich ohne lücken die positionen da stehen habe. Code setzt mir beide positionsnummern auf 02 soll aber 01 und 02 haben . grr wo ist mein problem ??

    [phpwiki]
    $bestid = $_POST['bestid'];
    // zählen klappt
    $count = mysql_query("SELECT count(*) FROM ".$_CONFIG['db']['tbl.bkd']." WHERE bstat='a' OR bstat='o' AND bestid='$bestid' order by besid") or die ( mysql_error() );
    while($row = mysql_fetch_array($count)) {
    $anz = $row[0];

    }
    // Schleife für update mit $i
    for($i=1; $i <= $anz; $i++) {
    $pos = sprintf("%02.0f", $i);
    $ds1u = "UPDATE ".$_CONFIG['db']['tbl.bkd']." SET pos='$pos' WHERE bstat='a' OR bstat='o' AND bestid='$bestid' ";
    mysql_query($ds1u) or die(mysql_error());
    // echo ist kontrolle da zeigt er mir bei $ i auch 01 02 an...
    echo "<br> $pos <br>";
    }
    [/phpwiki]

    wie bekomme ich die verbleibenden datensatz id da mit rein und lasse von erster bis letzter jeweils $i bzw $pos schreiben ??


  • #2
    PHP-Code:
    $bestid $_POST['bestid'];
    // zählen klappt
    $count mysql_query("SELECT count(*) FROM ".$_CONFIG['db']['tbl.bkd']." WHERE bstat='a' OR bstat='o' AND bestid='$bestid' order by besid") or die ( mysql_error() );
    while(
    $row mysql_fetch_array($count)) {
    $anz $row[0];

    }
    // Schleife für update mit $i
    for($i=1$i <= $anz$i++) {
    $pos sprintf("%02.0f"$i);
    $ds1u "UPDATE ".$_CONFIG['db']['tbl.bkd']." SET pos='$pos' WHERE bstat='a' OR bstat='o' AND bestid='$bestid' ";
    mysql_query($ds1u) or die(mysql_error());
    // echo ist kontrolle da zeigt er mir bei $ i auch 01 02 an...
    echo "<br> $pos <br>";

    Warte kurz
    MfG
    ~Capfly

    Kommentar


    • #3
      Zitat von ronaldl Beitrag anzeigen
      grr wo ist mein problem ??
      Dein erste Problem ist, dass du die [phpwiki] statt der [php]-Tags nutzt - bitte passe dein Posting an!

      Kommentar


      • #4
        Sorry hab ich verklickt

        hier noch mal richtig...

        PHP-Code:
        $bestid $_POST['bestid'];
        // zählen klappt
        $count mysql_query("SELECT count(*) FROM ".$_CONFIG['db']['tbl.bkd']." WHERE bstat='a' OR bstat='o' AND bestid='$bestid' order by besid") or die ( mysql_error() );
        while(
        $row mysql_fetch_array($count)) {
        $anz $row[0];

        }
        // Schleife für update mit $i
        for($i=1$i <= $anz$i++) {
        $pos sprintf("%02.0f"$i);
        $ds1u "UPDATE ".$_CONFIG['db']['tbl.bkd']." SET pos='$pos' WHERE bstat='a' OR bstat='o' AND bestid='$bestid' ";
        mysql_query($ds1u) or die(mysql_error());
        // echo ist kontrolle da zeigt er mir bei $ i auch 01 02 an...
        echo "<br> $pos <br>";

        Kommentar


        • #5
          Na herzlichen Dank auch
          MfG
          ~Capfly

          Kommentar


          • #6
            Zitat von ronaldl Beitrag anzeigen

            Code:
            $count = mysql_query(
            
            "SELECT count(*) 
               FROM ".$_CONFIG['db']['tbl.bkd']." 
               WHERE ( bstat='a' OR bstat='o' ) AND bestid='$bestid' 
               order by besid"
            
            ) or die ( mysql_error() );
            while($row = mysql_fetch_array($count)) {
            $anz = $row[0];
            
            }
            Mir ist aufgefallen, das bei dem SQL vermutlich eine Klammer fehlt. Damit sind die Ergebnisse der Abfrage vielleicht nicht die erwünschten.

            Ich habe eine Klammer "fett" ergänzt.

            Passt zwar nicht zu Deiner Frage, ist aber eventuell hilfreich...

            EDIT
            Desweiteren ist der ORDER BY beim COUNT(*) unnötig.

            Grüße
            Thomas

            Kommentar


            • #7
              Also ich hab der tabelle nun ein feld up zugefügt und dieses auf 0 gesetzt

              dann lasse mit der positionsnr das feld auf eins setzen und nur änder wo up = 0 aber nix er läuft immer noch 2 mal durch die schelife .. grrr

              aktueller code...

              PHP-Code:
              $count mysql_query("SELECT  count(*) FROM ".$_CONFIG['db']['tbl.bkd']." WHERE (bstat='a' OR bstat='o') AND bestid='$bestid' ") or die ( mysql_error() );
                while(
              $row mysql_fetch_array($count)) {
                 
              $anz $row[0];      
               }
              // Schleife für update mit $i, beginne bei ersten datensatz
               
               
              for($i=1$i <= $anz$i++) {
                  
              $pos sprintf("%02.0f"$i);
                  
              $ds1u "UPDATE ".$_CONFIG['db']['tbl.bkd']." SET pos='$pos' , up = '1'  WHERE ( bstat='a' OR bstat='o') AND up ='0' ");
                 
              mysql_query($ds1u) or die(mysql_error());
                 echo 
              "<br> $ds1u <br> $pos <br>";
                } 
              was versteht die schleife an der bedingung = 0 nicht ???
              danach wollte ich ausserhalb der schleife per update wieder alle up wieder auf 0 setzen...

              Kommentar


              • #8
                Wichtig ist vor allem bei den Variablen:

                PHP-Code:
                $bsp "SELECT * FROM `Wasweißich` WHERE `ID` = '".$id."'"
                MfG
                ~Capfly

                Kommentar


                • #9
                  Zitat von ronaldl Beitrag anzeigen
                  Also ich hab der tabelle nun ein feld up zugefügt und dieses auf 0 gesetzt

                  Code:
                  $count = mysql_query("SELECT  count(*) FROM ".$_CONFIG['db']['tbl.bkd']." WHERE (bstat='a' OR bstat='o') 
                  AND bestid='$bestid' ") or die ( mysql_error() );
                    while($row = mysql_fetch_array($count)) {
                     $anz = $row[0];      
                   }
                  // Schleife für update mit $i, beginne bei ersten datensatz
                   
                   for($i=1; $i <= $anz; $i++) {
                      $pos = sprintf("%02.0f", $i);
                      $ds1u = "UPDATE ".$_CONFIG['db']['tbl.bkd']." SET pos='$pos' , up = '1'  WHERE ( bstat='a' OR bstat='o') 
                  AND up ='0' ");
                     mysql_query($ds1u) or die(mysql_error());
                     echo "<br> $ds1u <br> $pos <br>";
                    }
                  a) Dein SELECT prüft nach wie vor auf die Spalte "bestid" und mit diesem Ergebnis läuft der UPDATE auf "up". Das passt so nicht zusammen.

                  b) Eventuell brauchst Du den SELECT oben und die Schleife gar nicht. Der UPDATE findet auch so alle passenden Datensätze.

                  Grüße
                  Thomas

                  Kommentar

                  Lädt...
                  X