Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeilenupdate sql

Einklappen

Neue Werbung 2019

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

  • Zeilenupdate sql

    Hallo zusammen,
    Ich komme einfach nicht weiter. Seit Tagen versuche ich eine Zutatenliste
    upzudaten. Mein Problem ist das nur veränderungen in der untersten
    Inputbox möglich sind. Was mach ich nur falsch ???.

    Anfrage:
    Code:
    $db = mysql_connect($server, $user, $pw)
       or die("Keine Verbindung möglich");
       mysql_select_db("rezepte");
    
    
    print "<form name=\"updaten\" action=\"fetcharray1.php\" method=\"get\">";
    
    $res = mysql_query("SELECT z.id, z.zutatart, z.menge, z.mass FROM zutaten z");
    
    while($inhalt = mysql_fetch_array($res))
      {
        $id = $inhalt['id'];
        print "<input type=\"hidden\" name=\"id[]\" value=\"".$id."\" />\n";
    
        $zutat = $inhalt['zutatart'];
        print "<input type=\"text\" name=\"zutat[]\" value=\"".$zutat."\" />\n";
    
        $menge = $inhalt['menge'];
        print "<input type=\"text\" name=\"menge[]\" value=\"".$menge."\" />\n";
    
        $mass = $inhalt['mass'];
        print "<input type=\"text\" name=\"mass[]\" value=\"".$mass."\" />\n";
    
        print "
    
    \n";
      }
    
    print "<input type=\"submit\" name=\"senden\" value=\"senden\" />\n";
    print "</form>";
    ANTWORT:

    Code:
    $db = mysql_connect($server, $user, $pw);
    
    if(isset($_get['senden']))
      {
        $id = $_get['id'];
        $zutat = $_get['zutatart'];
        $menge = $_get['menge'];
        $mass = $_get['mass'];
       }
        for ($i=0;$i<sizeof($id);$i++)
    
     $sqlab  =  ("UPDATE zutaten SET zutatart='".$zutat[$i]."',
    menge='".$menge[$i]."', mass='".$mass[$i]."' WHERE id='".$id[$i]."'");
    
    $res = mysql_db_query("rezepte" , $sqlab );
    
    echo $sqlab;
    Ich hoffe wirklich ihr könnt mir weiterhelfen.

    Gruss
    Mathias

  • #2
    alles was in der for-schleife gemacht werden soll muss in {-klammern eingebetet sein, wenn dies mehrere anweisungen betrifft, sonst führt der nur die erste anweisung mehrfach aus

    Kommentar


    • #3
      Danke für die schnelle Antwort. Ich habe es eine Sekunde nach dem posten gesehen. 4 Tage erfolglos gesucht.

      Kommentar


      • #4
        ja einfach genauso machen wie bei deiner if-bedingung, dann sollte es gehen

        Kommentar


        • #5
          Und ich schon wieder...

          Was ich jetzt aber überhaupt nicht verstehe.
          Wieso erhalte ich folgende Sql-Abfrage:

          Code:
          UPDATE zutaten SET zutatart='Petersilie', menge='1', mass='Bund' WHERE id='1'UPDATE zutaten SET zutatart='Pfeffer', menge='1', mass='Prise' WHERE id='1'UPDATE zutaten SET zutatart='thymian', menge='1', mass='Prise' WHERE id='2'UPDATE zutaten SET zutatart='', menge='', mass='' WHERE id='1'UPDATE zutaten SET zutatart='', menge='', mass='' WHERE id='3'UPDATE zutaten SET zutatart='', menge='', mass='' WHERE id='1'
          Der Tabelleninhalt lautet:

          1 Petersilie 1 Bund
          1 Pfeffer 1 Prise
          1 thymian 1 Prise

          Also, Die ersten drei Updateanweisungen sind ok, danach macht er es
          wieder kaputt.
          Ich glaube mein Rechner hasst mich.

          Kommentar


          • #6
            du hast in jedem query ...WHERE id='1'

            demzufolge änderst du die selbe spalte immer wieder, so soll es doch sicher nicht sein oder?

            edit: zwar nicht in jedem, aber trotzdem komisch?!

            Kommentar


            • #7
              Genau da liegt mein Problem Soul. Die Abfrage lautet ja:


              Code:
              for ($i=0;$i<sizeof($id);$i++) {
              
               $sqlab  =  ("UPDATE zutaten SET zutatart='".$zutat[$i]."',
              menge='".$menge[$i]."', mass='".$mass[$i]."' WHERE id='".$id[$i]."'");
              
              $res = mysql_db_query("rezepte" , $sqlab );
              
              echo $sqlab;   }
              Es sieht so aus als ob SQL willkürlich die Ids verändert. Ausserdem,
              was sollen die 3 überflüssigen Updatezeilen ?.
              [/code]

              Kommentar

              Lädt...
              X