Findet hier jemand einen Fehler?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Findet hier jemand einen Fehler?

    Hier ist mein Script zum Verwalten von Benutzern, d.h. ihnen verschiedene Werte(Rechte) zuweißen.

    Das Script sieht folgendermaßen aus

    Dies ist das Array mit den Rechten
    PHP Code:
     $allRights = array();                
            
    $allRights[] = "Admin";                
            
    $allRights[] = "Member";                              
            
    sort($allRights); 
    So nun die Form mit den Checkboxen
    PHP Code:
    echo "<form ""action=\"index.php? "method=\"post\" ""class=\"formular\">\n";
    echo 
    "    <ol>\n"
    echo 
    "            <ul>\n";                
                        foreach(
    $allRights as $value) {                    
                            echo 
    "<li>\n";                    
                            echo 
    "    <input id=\"".$value."\" type=\"checkbox\" name=\"rights[]\"";                    
                            if(
    in_array($value$rights)) {                        
                                echo 
    " checked=\"checked\"";                    
                            }                    
                            echo 
    " value=\"".$value."\" />\n";                    
                            echo 
    "    <label for=\"".$value."\">".$value."</label><br />\n";                
                        }               
                        echo 
    "            </ul>\n";                
                        echo 
    "        </li>\n";                
                        echo 
    "        <li>\n";                
                        echo 
    "            <input type=\"submit\" name=\"submit\" value=\"Rechte speichern\" />\n";                
                        echo 
    "            <input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";                
                        echo 
    "            <input type=\"hidden\" name=\"".session_name()."\" ".                                                            "value=\"".session_id()."\" />\n";                
                        echo 
    "    </ol>\n";                
                        echo 
    "</form>\n";                
                        echo 
    "<p>\n"
    So und nun der Teil der die markierten Checkboxen in eine DB einträgt
    PHP Code:
    if(isset($_POST['submit']) AND "Rechte speichern" == $_POST['submit']) {            
                     if(!isset(
    $_POST['rights'])) {                
                        echo 
    "<p class=\"error\">\n";                
                        echo 
    "    Sie müssen mindestens ein Recht angeben.\n";                
                        echo 
    "</p>\n";           
                     } else {  
                         
    // alte Reche löschen            
                         
    $sql "DELETE FROM                            
                                    'user_rights'                        
                                WHERE                            
                                    'UserID' = '"
    .$_SESSION['uid']."';";                
                        
    mysql_query($sql) OR die(mysql_error());             
                                      
                        
    // Neue Rechte                
                        
    foreach($_POST['rights'] as $right) {                    
                            
    $sql "INSERT INTO                                
                                        'user_rights'('UserID', 'Recht')                            
                                    VALUES                                
                                        ('"
    .$_SESSION['uid']."',                                 
                                        '"
    .$right."');";                  
                            
    mysql_query($sql) OR die(mysql_error());                
                        }                
                        echo 
    "<p>\n";                
                        echo 
    "    Die Rechte wurden gespeichert.\n";                
                        echo 
    "</p>\n"
    Und zwar geschieht der Fehler an //Neue Rechte

    PHP Code:
    // alte Reche löschen            
                         
    $sql "DELETE FROM                            
                                    `user_rights`                     
                                WHERE                            
                                    `UserID` = '"
    .$_SESSION['uid']."';";                
                        
    mysql_query($sql) OR die(mysql_error()); 
    // Neue Rechte                
                        
    foreach($_POST['rights'] as $right) {                    
                            
    $sql "INSERT INTO                                
                                        `user_rights´('UserID', 'Recht')                            
                                    VALUES                                
                                        ('"
    .$_SESSION['uid']."',                                 
                                        '"
    .$right."');";                  
                            
    mysql_query($sql) OR die(mysql_error());                
                        } 
    es werden jedoch keine Daten in die Datenbank eingetragen, der Teil hingegen //Alte Löschen funktioniert.
    Aber wo liegt der Fehler in //Neue Rechte ?

    sorry hatte ausversehn den Post schon abgeschickt bevor ich fertig war...
    Last edited by Flize; 20-07-2006, 17:32.

  • #2
    1. halte dich bitte an die spielregeln.
    2. erkläre, wo das problem liegt.

    Comment


    • #3
      hi

      probier mal das

      PHP Code:
          $sql " INSERT INTO `user_rights` ( `userID`, `Recht`) VALUES (".$_SESSION['uid'].", '".$right."');"
      EDIT:

      ich sehe gerade `userID` oder `UserID` ??
      achte auf die schreibweise



      gruß SuRaXor

      Comment


      • #4
        Danke für die Hinweise,
        Ich habe es im oben angegegebenen code abgeändert,
        jedoch passiert immernoch dasselbe,
        entdeckt sonst jemand einen fehler?

        Comment


        • #5
          fehlermeldung?

          Comment


          • #6
            es gibt keine Fehlermeldung:

            PHP Code:
            // alte Reche löschen            
                                 
            $sql "DELETE FROM                            
                                            'user_rights'                        
                                        WHERE                            
                                            'UserID' = '"
            .$_SESSION['uid']."';";                
                                
            mysql_query($sql) OR die(mysql_error()); 
            // Neue Rechte                
                                
            foreach($_POST['rights'] as $right) {                    
                                    
            $sql "INSERT INTO                                
                                                'user_rights'('UserID', 'Recht')                            
                                            VALUES                                
                                                ('"
            .$_SESSION['uid']."',                                 
                                                '"
            .$right."');";                  
                                    
            mysql_query($sql) OR die(mysql_error());                
                                } 
            im Teil //Neue Rechte sollen Werte in eine Table einer DB geschrieben werden jedoch sind nach dem durchlauf nur die alten Rechte gelöscht und keine neuen eingefügt.
            Warum?

            Comment


            • #7
              so hi nochmal

              so meinte ich das !
              PHP Code:
              $sql " INSERT INTO `user_rights` ( `UserID`, `Recht`) VALUES ('".$_SESSION['uid']."', '".$right."');"
              du hast die ` zu ' gemacht, was ich nicht meinte !!

              aber egal nimm das jetzt mal ohne die `, hab da auch wieder die alten Hochkommas reingemacht, das lag sicherlich an dem "UserID" das das U klein war
              PHP Code:
              $sql " INSERT INTO user_rights ( UserID, Recht) VALUES ('".$_SESSION['uid']."', '".$right."');"
              wenn nicht poste mal deine Fehlermeldung !!

              ach noch was
              PHP Code:
              echo "<form ""action=\"index.php? "method="post\" ""class=\"formular\">\n";
              #zu
              echo "<form ""action=\"index.php?\" method=\"post\" ""class=\"formular\">\n"
              und mach mal das, ob das array überhaupt gefüllt wird

              PHP Code:
              echo "<pre>";
              print_r$_POST['rights'] );
              echo 
              "</pre>"
              EDIT:

              hier das gleiche mit dem ' mach die bei user_rights weg oder mach statt ' die ` das nach WHERE kannste lassen
              $sql = "DELETE FROM
              'user_rights'
              WHERE
              'UserID' = '".$_SESSION['uid']."';";



              MfG SuRaXor

              Comment


              • #8
                du hast doch nichts von dem umgesetzt, was SuRaXor empfohlen hatte.

                Comment


                • #9
                  Ok vielen dank, nun zeigt es einen Fehler für die foreach schleife an

                  hmm
                  das
                  PHP Code:
                  print_r$_POST['rights'] ); 
                  direkt vor der foreach schleife gibt mir "array" aus, d.h. das array ist leer :-/
                  was zur folge hat:
                  Warning: Invalid argument supplied for foreach() in /usr/export/www/hosting/flize/test/admin_user.php on line 186

                  PHP Code:
                  foreach($_POST['rights'] as $right) {                    
                                              
                  $sql " INSERT INTO user_rights ( UserID, Recht) VALUES ('".$_SESSION['uid']."', '".$right."');";
                                      
                                              
                  mysql_query($sql) OR die(mysql_error());               
                                          } 
                  heißt das es wurde von der Form nichts gesendet ?
                  Last edited by Flize; 20-07-2006, 17:26.

                  Comment


                  • #10
                    der fehler kommt wenn $_POST['rights'] leer ist

                    das kannste damit überprüfen und gegenfalls als ein leeres array deklarieren

                    PHP Code:
                    if( empty( $_POST['rights'] ) ) $_POST['rights'] = array(); 
                    das $_POST['rights'] dürfte ja dann nicht mehr leer sein wenn du was in deiner Form angeklickt hast !

                    gruß SuRaXor

                    Comment


                    • #11
                      sobald nichts angeklickt ist
                      PHP Code:
                      if(!isset($_POST['rights'])) {                
                                              echo 
                      "<p class=\"error\">\n";                
                                              echo 
                      "    Sie müssen mindestens ein Recht angeben.\n";                
                                              echo 
                      "</p>\n"

                      Was auch passiert wenn ich keinen haken klicke, jedoch habe ich haken geklickt doch das array ist trotzdem leer wie kann das sein?
                      Dann müsste schon was an der Form nicht stimmen die action stimmt auf jeden fall schonmal,hmm...
                      Last edited by Flize; 20-07-2006, 17:39.

                      Comment

                      Working...
                      X