Findet hier jemand einen Fehler?

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

  • 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...
    Zuletzt geändert von Flize; 20.07.2006, 18:32.

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

    Kommentar


    • #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

      Kommentar


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

        Kommentar


        • #5
          fehlermeldung?

          Kommentar


          • #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?

            Kommentar


            • #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

              Kommentar


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

                Kommentar


                • #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 ?
                  Zuletzt geändert von Flize; 20.07.2006, 18:26.

                  Kommentar


                  • #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

                    Kommentar


                    • #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...
                      Zuletzt geändert von Flize; 20.07.2006, 18:39.

                      Kommentar

                      Lädt...
                      X