Ankündigung

Einklappen
Keine Ankündigung bisher.

checkboxen mit php-werten füllen

Einklappen

Neue Werbung 2019

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

  • checkboxen mit php-werten füllen

    hallo leute!
    Ich glaub die Überschrift passt nicht ganz, aber ich denke es kommt meinem problem nahe Hier mein Problem: Ich rufe Daten aus der Datenbank ab und fülle damit checkboxen. wenn ich das nun abschicke trägt er die daten aber falsch in die datenbank ein. es geht um ein benutzer-verwaltungs skript!


    (Formular)
    PHP-Code:
    <form action="user_two.php" method="post">
    <?php
      
    //Verbindung herstellen
      
      //Ausgabe der Tabelle mit Checkboxen
      
    echo "<table border>";
      echo 
    "<tr><td>[b]ID[/b]</td><td>[b]Name[/b]</td><td>[b]Admin[/b]</td><td>[b]Eintrag Schreiben[/b]</td><td>[b]Eintrag bearbeiten[/b]</td><td>[b]Eintrag löschen[/b]</td></tr>";
      
      
    //Alle Daten des Users abfragen
      
    $sql "SELECT * FROM ...tabelle...";
      
    $res mysql_query($sql);
      
      while (
    $a mysql_fetch_assoc($res))
      {
            echo 
    "<tr>";
        echo 
    "<td>".$a["id"]."</td>";
        echo 
    "<td>".$a["name"]."</td>";
        
    //Überprüfung, ob Recht Admin vergeben ist (aktuelle ID)
        
    if($a["admin"]=="yes") {
        echo 
    "<td><input type=\"checkbox\" name=\"ad[".$a["id"]."]\" checked></td>"; }
        else if(
    $a["admin"]=="no") {
        echo 
    "<td><input type=\"checkbox\" name=\"ad[".$a["id"]."]\"></td>"; }
            
    //Recht "Eintrag Schreiben" bei aktueller ID?
        
    if($a["write"]=="yes") {
        echo 
    "<td><input type=\"checkbox\" name=\"es[".$a["id"]."]\" checked></td>"; }
        else if(
    $a["write"]=="no") {
        echo 
    "<td><input type=\"checkbox\" name=\"es[".$a["id"]."]\"></td>"; }
            
    //Recht "Bearbeiten"?
        
    if($a["update"]=="yes") {
        echo 
    "<td><input type=\"checkbox\" name=\"eb[".$a["id"]."]\" checked></td>"; }
        else if(
    $a["update"]=="no") {
        echo 
    "<td><input type=\"checkbox\" name=\"eb[".$a["id"]."]\"></td>"; }
        if(
    $a["delete"]=="yes") {
        echo 
    "<td><input type=\"checkbox\" name=\"el[".$a["id"]."]\" checked></td>"; }
        else if(
    $a["delete"]=="no") {
        echo 
    "<td><input type=\"checkbox\" name=\"el[".$a["id"]."]\"></td>"; }
        echo 
    "</tr>";
      }
      
      echo 
    "</table>";
    ?>


    <input type="submit" value="Speichern"></p></form>

    (Auswertung)
    PHP-Code:
    <?php
    if($_POST)
    {
      
    //Verbindung herstellen
      
      
    $sql "SELECT * FROM ...tabelle...";
      
    $res mysql_query($sql);
      
      while (
    $e mysql_fetch_assoc($res))
      {
         
    //Ist das Recht Admin bei ID xy aktiviert?
         
    if(isset($ad[$e["id"]])) {
           
    $sql2 "UPDATE sv_user SET admin='yes' WHERE id='".$e["id"]."'";
           
    mysql_query($sql2);
         }
             
    //Wenn es nicht aktiviert ist
         
    else if(!isset($ad[$e["id"]])) {
           
    $sql2 "UPDATE sv_user SET admin='no' WHERE id='".$e["id"]."'";
           
    mysql_query($sql2);
         }
             
    //Recht "Schreiben" bei aktueller ID aktiviert?
         
    if(isset($es[$e["id"]])) {
           
    $sql2 "UPDATE sv_user SET write='yes' WHERE id='".$e["id"]."'";
           
    mysql_query($sql2);
         }
         else if(!isset(
    $es[$e['id']])) {
           
    $sql2 "UPDATE sv_user SET write='no' WHERE id='".$e["id"]."'";
           
    mysql_query($sql2);
         }
         if(isset(
    $eb[$e['id']])) {
           
    $sql2 "UPDATE sv_user SET update='yes' WHERE id='".$e["id"]."'";
           
    mysql_query($sql2);
         }
         else if(!isset(
    $eb[$e['id']])) {
           
    $sql2 "UPDATE sv_user SET update='no' WHERE id='".$e["id"]."'";
           
    mysql_query($sql2);
         }
         if(isset(
    $el[$e['id']])) {
           
    $sql2 "UPDATE sv_user SET delete='yes' WHERE id='".$e["id"]."'";
           
    mysql_query($sql2);
         }
         else if(!isset(
    $el[$e['id']])) {
           
    $sql2 "UPDATE sv_user SET delete='no' WHERE id='".$e["id"]."'";
           
    mysql_query($sql2);
         }
      }
    }
    ?>
    Bin echt ratlos...


    Vielen Dank!

    phyton

  • #2
    kleine frage am rande: hat das was damit zutun, dass der spalten typ "null" ist?
    ihr wisst schon..."NULL DEFAULT 'FALSE'"

    Kommentar


    • #3
      Benutz mal sprechende Variablenbezeichner. $a und $e wirken etwas kryptisch. In dem kurzen Teil noch verständlich, kann dir das ziemlich Ärger machen.

      wenn ich das nun abschicke trägt er die daten aber falsch in die datenbank ein.
      Was heißt "falsch"?
      kleine frage am rande: hat das was damit zutun, dass der spalten typ "null" ist?
      Kurz vorweg: Den Spaltentyp NULL gibt es nicht. Das Schlüsselwort gibt nur an, dass NULL erlaubt ist.
      Um welche Spalte geht es? Wie ist die Spalte definiert?

      Kommentar


      • #4
        PHP-Code:
        <?php
          
        //Verbindung herstellen
          
          //Ausgabe der Tabelle mit Checkboxen
          
        echo "<table border>";
          echo 
        "<tr><td>[b]ID[/b]</td><td>[b]Name[/b]</td><td>[b]Admin[/b]</td><td>[b]Eintrag Schreiben[/b]</td><td>[b]Eintrag bearbeiten[/b]</td><td>[b]Eintrag löschen[/b]</td></tr>";
          
          
        //Alle Daten des Users abfragen
          
        $sql "SELECT * FROM ...tabelle...";
          
        $res mysql_query($sql);
          
          while (
        $erg mysql_fetch_assoc($res))
          {
                echo 
        "<tr>";
            echo 
        "<td>".$erg["id"]."</td>";
            echo 
        "<td>".$erg["name"]."</td>";
            
        //Überprüfung, ob Recht Admin vergeben ist (aktuelle ID)
            
        if($erg["admin"]=="yes") {
            echo 
        "<td><input type=\"checkbox\" name=\"ad[".$erg["id"]."]\" checked></td>"; }
            else if(
        $erg["admin"]=="no") {
            echo 
        "<td><input type=\"checkbox\" name=\"ad[".$erg["id"]."]\"></td>"; }
                
        //Recht "Eintrag Schreiben" bei aktueller ID?
            
        if($erg["write"]=="yes") {
            echo 
        "<td><input type=\"checkbox\" name=\"es[".$erg["id"]."]\" checked></td>"; }
            else if(
        $erg["write"]=="no") {
            echo 
        "<td><input type=\"checkbox\" name=\"es[".$erg["id"]."]\"></td>"; }
                
        //Recht "Bearbeiten"?
            
        if($erg["update"]=="yes") {
            echo 
        "<td><input type=\"checkbox\" name=\"eb[".$erg["id"]."]\" checked></td>"; }
            else if(
        $erg["update"]=="no") {
            echo 
        "<td><input type=\"checkbox\" name=\"eb[".$erg["id"]."]\"></td>"; }
            if(
        $erg["delete"]=="yes") {
            echo 
        "<td><input type=\"checkbox\" name=\"el[".$erg["id"]."]\" checked></td>"; }
            else if(
        $erg["delete"]=="no") {
            echo 
        "<td><input type=\"checkbox\" name=\"el[".$erg["id"]."]\"></td>"; }
            echo 
        "</tr>";
          }
          
          echo 
        "</table>";
        ?>
        PHP-Code:
        <?php
        if($_POST)
        {
          
        //Verbindung herstellen
          
          
        $sql "SELECT * FROM ...tabelle...";
          
        $res mysql_query($sql);
          
          while (
        $abf mysql_fetch_assoc($res))
          {
             
        //Ist das Recht Admin bei ID xy aktiviert?
             
        if(isset($ad[$abf["id"]])) {
               
        $sql2 "UPDATE sv_user SET admin='yes' WHERE id='".$abf["id"]."'";
               
        mysql_query($sql2);
             }
                 
        //Wenn es nicht aktiviert ist
             
        else if(!isset($ad[$abf["id"]])) {
               
        $sql2 "UPDATE sv_user SET admin='no' WHERE id='".$abf["id"]."'";
               
        mysql_query($sql2);
             }
                 
        //Recht "Schreiben" bei aktueller ID aktiviert?
             
        if(isset($es[$abf["id"]])) {
               
        $sql2 "UPDATE sv_user SET write='yes' WHERE id='".$abf["id"]."'";
               
        mysql_query($sql2);
             }
             else if(!isset(
        $es[$abf['id']])) {
               
        $sql2 "UPDATE sv_user SET write='no' WHERE id='".$abf["id"]."'";
               
        mysql_query($sql2);
             }
             if(isset(
        $eb[$abf['id']])) {
               
        $sql2 "UPDATE sv_user SET update='yes' WHERE id='".$abf["id"]."'";
               
        mysql_query($sql2);
             }
             else if(!isset(
        $eb[$abf['id']])) {
               
        $sql2 "UPDATE sv_user SET update='no' WHERE id='".$abf["id"]."'";
               
        mysql_query($sql2);
             }
             if(isset(
        $el[$abf['id']])) {
               
        $sql2 "UPDATE sv_user SET delete='yes' WHERE id='".$abf["id"]."'";
               
        mysql_query($sql2);
             }
             else if(!isset(
        $el[$abf['id']])) {
               
        $sql2 "UPDATE sv_user SET delete='no' WHERE id='".$abf["id"]."'";
               
        mysql_query($sql2);
             }
          }
        }
        ?>

        Ich habe in der Datenbank schon 2 Nutzer mit allen Rechten eingetragen. Wenn ich das Formular nun aufrufe stimmt es sobald ich jedoch irgendein recht aktiviere, deaktiviere wird in der datenbank eingetragen, die beiden nutzer hätten keine "admin" rechte
        • admin ENUM ('yes','no') NULL DEFAULT 'no'
        • write ENUM ('yes','no') NULL DEFAULT 'no'


        So sind alle definiert (admin, write, update, delete)

        Kommentar


        • #5
          Kurz nochma abschließend: Das Problem war mal wieder register_globals.

          Kommentar

          Lädt...
          X