Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten über checkbox ändern

Einklappen

Neue Werbung 2019

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

  • Daten über checkbox ändern

    Hi also ich habe ein problem und zwar ändert mein Skript nicht die daten in der checkbox und ich bin ratloß

    PHP-Code:
    <?php 
    include 'inc.conf.php';
    $set=$_GET['set'];
    if(
    $set=="1")
    {
          
    $count2="1";
          
    $count3="1";
          
    $count4="1";
        
    $count=$_POST['$count'];
        while(
    $count>=$count4)
            {
                  
    $set=$_POST['$count4'];
                
    $abfrage "UPDATE `lehrer` SET `'$count2'` = '$set', WHERE `id` ='$count3' LIMIT 1 ";
                echo 
    $abfrage;
                
    $ergebnis mysql_query($abfrage);
                  
                  
                
    $count4++;
                  if(
    $count2>=9)
                  {
                    
    $count2="1";
                    
    $count3++;
                }
                else
                {
                  
    $count2++;
                }
            }  
    }




    $abfrage "SELECT * FROM lehrer";
    $ergebnis mysql_query($abfrage);
    $count="1";
    echo 
    '<form action="admin_lehrer.php?set=1" method="POST" >';
    echo 
    "<table>";

       while(
    $row mysql_fetch_array($ergebnis))
       {
             echo 
    "<tr>";
             echo 
    "<td>" ;echo $row['name'];echo "</td>";
             echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['1']=="1")
                {
                    echo 
    "checked";
                } 
            echo 
    ">";echo "</td>";
            echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['2']=="1")
                {
                    echo 
    "checked";
                } 
                echo 
    ">";echo "</td>";
            echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['3']=="1")
                {
                    echo 
    "checked";
                } 
            echo 
    ">";echo "</td>";
            echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['4']=="1")
                {
                    echo 
    "checked";
                } 
            echo 
    ">";echo "</td>";
            echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['5']=="1")
                {
                    echo 
    "checked";
                } 
            echo 
    ">";echo "</td>";
            echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['6']=="1")
                {
                    echo 
    "checked";
                } 
            echo 
    ">";echo "</td>";
            echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['7']=="1")
                {
                    echo 
    "checked";
                } 
            echo 
    ">";echo "</td>";
            echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['8']=="1")
                {
                    echo 
    "checked";
                } 
            echo 
    ">";echo "</td>";
            echo 
    "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                if(
    $row['9']=="1")
                {
                    echo 
    "checked";
                } 
            echo 
    ">";echo "</td>";

                echo 
    "</tr>";
                
       }
    echo 
    '<input type="hidden" value="'.$count.'" name="count" />';
    echo 
    "</table>";
    echo 
    '<input type="submit" value="Übernehmen" />';   
    echo 
    "</form>";
    ?>
    ich hoffe jeamnd kann miri ein wenig helfen
    MFG

  • #2
    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

    16.14. Warum soll ich nicht SELECT * schreiben?
    http://www.php-faq.de/q/q-sql-select.html

    Die Funktion mysql_error hat auch ihren Sinn.

    Auch das sollte man mal gelesen haben: http://www.php.net/manual/de/security.globals.php

    Gruß
    phpfan

    Kommentar


    • #3
      thx für die hilfe also das problem muss irgendwo oben in der schleife liegen , da di enicht gesatrten wird bloß ich habe keine ahnung wieso!

      Der rest klappt alles

      MFG

      Kommentar


      • #4
        Na dann wende die Tipps von phpfan doch mal auf die Schleife an.
        Wo sind bspw die Debug-echos für $count, $count4 usw usw?

        Fehlerbehandlung für die mysql Abfrage sehe ich auch keine -> http://www.phpfriend.de/forum/ftopic57412.html

        Kommentar


        • #5
          Was kommt denn als Parameter bei dem Script an?
          Die Namen der Felder sind Ziffern?

          Und das da:
          $count=$_POST['$count'];

          passt net zu dem da:
          echo "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';

          Das müsste doch eher so lauten:
          $count=$_POST["$count"];
          ????

          Lasst Dir mal dringend $_POST ausgeben.

          Und noch was:

          $abfrage = "UPDATE `lehrer` SET `'$count2'` = '$set', WHERE `id` ='$count3' LIMIT 1 ";

          Hast Du in der Tabelle wirklich Spalten, deren Name `'1'` etc. lautet?

          Also so ganz persönlich finde ich die Feldnamen des Formulars und der Tabelle höchst gruselig.

          Kommentar


          • #6
            PHP-Code:
            <?php 
            include 'inc.conf.php';
            $set=$_GET['set'];
            if(
            $set=="1")
            {
                  echo 
            $count2="1"//Stunden Count
                  
            echo $count3="1"//Zeilen Count
                  
            echo $count4="1"//KA
                
            echo $count=$_POST['count'];
                while(
            $count4<=$count)
                    {
                          
            $set=$_POST[$count4];
                          if(
            $set=="")
                          {
                            
            $set="0";
                        }
                        echo 
            $abfrage "UPDATE `lehrer` SET `$count2` = '".$set."', WHERE `id` =".$count3." LIMIT 1 ";
                        
            $ergebnis mysql_query($abfrage)or die("Error using mysql_query($sql): ".mysql_error());              
                        
            $count4++;
                          if(
            $count2>="9")
                          {
                            
            $count2="1";
                            
            $count3++;
                        }
                        else
                        {
                          
            $count2++;
                        }
                    }  
            }




            $abfrage "SELECT * FROM lehrer";
            $ergebnis mysql_query($abfrage);
            $count="1";
            echo 
            '<form action="admin_lehrer.php?set=1" method="POST" >';
            echo 
            "<table>";

               while(
            $row mysql_fetch_array($ergebnis))
               {
                     echo 
            "<tr>";
                     echo 
            "<td>" ;echo $row['name'];echo "</td>";
                     echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['1']=="1")
                        {
                            echo 
            "checked";
                        } 
                    echo 
            ">";echo "</td>";
                    echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['2']=="1")
                        {
                            echo 
            "checked";
                        } 
                        echo 
            ">";echo "</td>";
                    echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['3']=="1")
                        {
                            echo 
            "checked";
                        } 
                    echo 
            ">";echo "</td>";
                    echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['4']=="1")
                        {
                            echo 
            "checked";
                        } 
                    echo 
            ">";echo "</td>";
                    echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['5']=="1")
                        {
                            echo 
            "checked";
                        } 
                    echo 
            ">";echo "</td>";
                    echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['6']=="1")
                        {
                            echo 
            "checked";
                        } 
                    echo 
            ">";echo "</td>";
                    echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['7']=="1")
                        {
                            echo 
            "checked";
                        } 
                    echo 
            ">";echo "</td>";
                    echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['8']=="1")
                        {
                            echo 
            "checked";
                        } 
                    echo 
            ">";echo "</td>";
                    echo 
            "<td>";echo '<input type="checkbox" value="1" name="'.$count++.'"';
                        if(
            $row['9']=="1")
                        {
                            echo 
            "checked";
                        } 
                    echo 
            ">";echo "</td>";

                        echo 
            "</tr>";
                        
               }
            echo 
            '<input type="hidden" value="'.$count.'" name="count" />';
            echo 
            "</table>";
            echo 
            '<input type="submit" value="Übernehmen" />';   
            echo 
            "</form>";
            ?>
            So habe noch ein paar fehler gefunden bloß da mus snoch ein kleiner fehle rin der SQL syntaxe sein bloß den finde ich absolut nicht für mich sieht alles richtig aus

            UPDATE `lehrer` SET `1` = '1', WHERE `id` =1 LIMIT 1 Error using mysql_query(): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `id` =1 LIMIT 1' at line 1

            MFG

            Kommentar


            • #7
              Das Komma vor WHERE ist falsch.

              Kommentar


              • #8
                Zitat von pchero
                So habe noch ein paar fehler gefunden bloß da mus snoch ein kleiner fehle rin der SQL syntaxe sein bloß den finde ich absolut nicht für mich sieht alles richtig aus

                UPDATE `lehrer` SET `1` = '1',WHERE `id` =1 LIMIT 1 Error using mysql_query(): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `id` =1 LIMIT 1' at line 1
                Na was steht denn direkt vor "WHERE `id`=1 LIMIT 1"?????

                Kommentar


                • #9
                  Dein echo-Marathon in der while-Schleife ist einfach nur grausam!
                  PHP-Code:
                  <?
                    while($row = mysql_fetch_array($ergebnis)) 
                    { 
                        echo "<tr>\n 
                              <td>" . $row['name'] .  "</td>";
                        for ($i = 1; $i <= 9; $i++)
                        {
                           echo "<td><input type='checkbox' value='1' name='" . $count++ . "'"; 
                           echo ($row[$i] == "1") ? " checked" : ""; 
                           echo "></td>";
                        }
                        echo "</tr>";            
                     }
                  ?>
                  Und überlege, was für einen Namen die Checkboxen haben. Ich würde sagen, 1 bis 9 und somit sind das eigentlich ungültige Variablennamen, denn Variablen dürfen nicht mit Zahlen anfangen. Wieso benutzt du dazu eigenlich kein Array???

                  11.10. Wie kann man Checkboxen verarbeiten?
                  http://www.php-faq.de/q/q-formular-checkbox.html

                  Gruß
                  phpfan

                  Kommentar

                  Lädt...
                  X