Ankündigung

Einklappen
Keine Ankündigung bisher.

Auf der Suche nach hilfe...

Einklappen

Neue Werbung 2019

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

  • Auf der Suche nach hilfe...

    Hi Leute.

    Ich hab da ein Problem (sonst würd ich ja nix schreiben ^^)

    Ich bin gerade dabei, ein Script zu schreiben, mit dem man Benutzer verwalten kann. leider bekomme ich folgende Fehlermeldung:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web0/html/portal/usr_edit.php on line 20

    PHP-Code:
    <?php
    session_start
    ();
    if(!
    session_is_registered('user') || $_SESSION['user'] == "") {
        
    header("location_index.php");
        die;
    }
    require(
    "connect.inc.php");
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Benutzer Bearbeiten</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <?php
        $mysql_query
    ="SELECT id,user,location,user_status FROM users WHERE id=" $_GET['edit_user'];
        
    $result=mysql_query($mysql_query);
        
    $data=mysql_fetch_array($result);
    ?>
    <?php 
    if(!isset($_POST['submit'])) { ?>
    <form action="usr_edit.php" method="post" name="user_editor">
    <table width="400" border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#000000">
      <tr>
        <td colspan="2" bgcolor="#e7e7e7"><div align="center">Benutzer editieren </div></td>
      </tr>
      <tr>
        <td width="170" bgcolor="#e7e7e7">Benutzername</td>
        <td width="230" bgcolor="#FFFFFF"><input type="text" name="username" class="input" size="20" value="<?php echo $data['user']; ?>"></td>
      </tr>
      <tr>
        <td width="170" bgcolor="#e7e7e7">Passwort</td>
        <td width="230" bgcolor="#FFFFFF"><input type="password" name="password" class="input" size="20"></td>
      </tr>
      <tr>
        <td width="170" bgcolor="#e7e7e7">Passwort wiederholen </td>
        <td width="230" bgcolor="#FFFFFF"><input type="password" name="password2" class="input"></td>
      </tr>
      <tr>
        <td width="170" bgcolor="#e7e7e7">Userstatus</td>
        <td width="230" bgcolor="#FFFFFF"><select name="status">
        <?php
                        $mysql_query
    ="SELECT status_id, status_name FROM user_status";
                        
    $result=mysql_query($mysql_query);
                        while(
    $data=mysql_fetch_array($result)){
                        echo 
    '<option>' $data['status_name'] . '</option>';
                        }
                        
    ?>
        </select>    </td>
      </tr>
      <tr>
        <td width="170" bgcolor="#e7e7e7">Herkunft</td>
        <td width="230" bgcolor="#ffffff"><input type="text" name="location" size="20" class="input" value="<?php echo $data['location']; ?>"></td>
      </tr>
      <tr>
        <td colspan="2" bgcolor="#e7e7e7"><div align="center"><input type="submit" name="submit" value="Speichern" class="button"></div></td>
      </tr>
    </table>
    </form>
    <?php
    }elseif(!isset($_POST['username']) || $_POST['username'] == ""){
        echo 
    '<p align="center">Keinen Benutzernamen eingegeben.

    [url="usr_edit.php?edit_user=' 
    $data['id'] . '"]Zurück[/url]</p>';
    }elseif(
    $_POST['password'] != $_POST['password2']) {
        echo 
    '<form action="usr_edit.php" method="post">';
        echo 
    '<p align="center>Die Passwörter stimmen nicht überein!

    '
    ;
        echo 
    '<input type="hidden" name="edit_user" value="'$data['id'] .'">';
        echo 
    '<input type="submit" name="zurueck" value="Zurück"></p>';
        echo 
    '</form>';
    }else{
            
    $username $_POST['username'];
            
    $location $_POST['location'];
            
    $usr_status $_POST['status'];
            if(
    $insert = @mysql_query("UPDATE users SET user = '$username', user_status = '$usr_status', location = '$location' WHERE id=" $_GET['edit_user'])) {
                echo 
    '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!

    [url="admin.php"]Zur Admin-Seite[/url]</p>'
    ;
            }else{
                echo 
    '<p align="center">Beim editieren des Benutzers trat ein Fehler auf!

    [url="usr_edit.php?edit_user="]Zurück[/url]</p>'
    ;
            }
        }

    ?>
    </body>
    </html>
    Vielleicht kann mir ja hier wer weiterhelfen...


    LG Tomcat Killer

  • #2
    Deine MySQL-Abfrage hat offensichtlich einen Syntaxfehler. Lasse dir diese einfach mal anzeigen und benutze mysql_error(), um den Fehler zu ermitteln.

    Kommentar


    • #3
      error_reproting(E_ALL);
      und mysql_error(); sind deine freunde...... :wink:
      Gruß JEGO ;-)

      Ein PHP Script tut, was Du schreibst, nicht was Du willst.

      Kommentar


      • #4
        PHP-Code:
        <?php
         $mysql_query
        ="SELECT `id`,`user`,`location`,`user_status` FROM users WHERE id='" $_GET['edit_user']."'"
        ?>
        Probiers mal so. Weiß aber nicht obs stimmt

        Kommentar


        • #5
          Zitat von CodeX
          Probiers mal so. Weiß aber nicht obs stimmt
          Mit der Abfrage bekommst du zwar keinen Fehler mehr aber vermutlich auch kein Ergebnis. Anscheinend enthält $_GET['edit_user'] keinen Wert.

          Kommentar


          • #6
            Doch. Ich habe ein Script geschrieben, dass alle angelegten User auflistet. Das hab ich auf der Linken Seite der Tabelle gemacht. Auf der rechten Seite habe ich automatisch Links generieren lassen:

            PHP-Code:
            <?php
            $mysql_query
            ="SELECT id, user, pass, location, user_status FROM users";
            $result=mysql_query($mysql_query);
            while(
            $data=mysql_fetch_array($result)){
            echo 
            '[url="usr_edit.php?edit_user=' $data['id'] . '"]Benutzer bearbeiten[/url]

            '
            ;
                        }
                    
            ?>
            edit:

            Achso... ich habe vergessen euch zu sagen, was denn nun mein script falsch macht.

            Die Fehlermeldung erscheint zwar mit der Meldung, dass das editieren nicht hingehauen hat, aber zusätzlich ändert er alle (!) angelegten user.
            Das heißt, dass auf einmal alle user den gleichen Namen, die gleiche Herkunft und den gleichen Status haben.

            Kommentar


            • #7
              Zitat von TomcatKiller
              Doch.
              Das bezieht sich worauf?

              Kommentar


              • #8
                Zitat von xabbuh
                Das bezieht sich worauf?
                Das bezieht sich auf die letzte Aussage von dir mit dem Array $_GET['edit_user']

                Kommentar


                • #9
                  du kannst es dir selber anschauen: http://www.tomcat-killer.de/portal

                  Ich habe einen BEnutzer mit folgenden Daten angelegt:

                  Username: xabbuh
                  Passwort: test

                  Kommentar


                  • #10
                    Zitat von TomcatKiller
                    Das bezieht sich auf die letzte Aussage von dir mit dem Array $_GET['edit_user']
                    Welche Abfrage ruft denn dann den Fehler hervor? Mal abgesehen davon, dass du in deiner Abfrage, die du eben gezeigt hast, $data['id'] statt $_GET['edit_user'] verwendest.

                    Kommentar


                    • #11
                      Das war von der anderen Seite.

                      Also:

                      Ich gehe mal von der Datei "userlist.php" aus. Der Rest funktioniert ja und ist damit unwichtig.

                      userlist.php
                      PHP-Code:
                      <?php
                      session_start
                      ();
                      if(!
                      session_is_registered('user') || $_SESSION['user'] == "") {
                          
                      header("location_index.php");
                          die;
                      }
                      require(
                      "connect.inc.php");
                      ?>
                      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                      <html>
                      <head>
                      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                      <title>Userliste</title>
                      <link rel="stylesheet" type="text/css" href="style.css">
                      </head>

                      <body>
                      <table width="400" border="0" cellspacing="1" cellpadding="5" bgcolor="#000000" align="center">
                        <tr>
                          <td colspan="2" bgcolor="#e7e7e7"><p align="center">[b]Userliste[/b]</p></td>
                        </tr>
                        <tr>
                          <td width="230" bgcolor="#E7E7E7">
                          <?php
                                  $mysql_query
                      ="SELECT id, user, pass FROM users";
                                  
                      $result=mysql_query($mysql_query);
                                  while(
                      $data=mysql_fetch_array($result)) {
                                      echo 
                      $data['id'] . ". " $data['user'] . "

                      "
                      ;
                                  }
                                  
                      ?>
                          </td>
                          <td width="170" bgcolor="#FFFFFF">
                              <?php
                                  $mysql_query
                      ="SELECT id, user, pass, location, user_status FROM users";
                                  
                      $result=mysql_query($mysql_query);
                                  while(
                      $data=mysql_fetch_array($result)){
                                      echo 
                      '[url="usr_edit.php?edit_user=' $data['id'] . '"]Benutzer bearbeiten[/url]

                      '
                      ;
                                  }
                              
                      ?>
                          </td>
                        </tr>
                      </table>




                      <table bgcolor="#000000" cellpadding="5" cellspacing="1" align="center" border="0">
                          <tr>
                              <td bgcolor="#e7e7e7" align="center">
                                  [url="sichere_seite.php"]Zur&uuml;ck[/url]
                              </td>
                          </tr>
                          <tr>
                              <td bgcolor="#ffffff" align="center">
                                  <p align="center">[b]&copy; Copyright by Tomcat Killer. All rights reserved.[/b]</p>
                              </td>
                          </tr>
                      </table>
                      </body>
                      </html>
                      Hier ist eine Tabelle, in der auf der linken Seite alle User angezeigt werden, die angelegt wurden. In der rechten Spalte werden Links zu usr_edit.php generiert, die aufgrund der fast gleichen MySQL-Abfrage wie in der linken Spalte die gleiche Reihenfolge hat wie die Userliste.

                      Der generierte Link ist folgendermaßen aufgebaut:

                      Benutzer bearbeiten

                      Jett kommt die Datei "usr_edit.php ins Spiel:

                      usr_edit.php
                      PHP-Code:
                      <?php
                      session_start
                      ();
                      if(!
                      session_is_registered('user') || $_SESSION['user'] == "") {
                          
                      header("location_index.php");
                          die;
                      }
                      require(
                      "connect.inc.php");
                      ?>
                      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                      <html>
                      <head>
                      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                      <title>Benutzer Bearbeiten</title>
                      <link rel="stylesheet" type="text/css" href="style.css">
                      </head>
                      <body>
                      <?php
                          $mysql_query
                      ="SELECT id,user,location,user_status FROM users WHERE id=" $_GET['edit_user'];
                          
                      $result=mysql_query($mysql_query);
                          
                      $data=mysql_fetch_array($result);
                      ?>
                      <?php 
                      if(!isset($_POST['submit'])) { ?>
                      <form action="usr_edit.php" method="post" name="user_editor">
                      <table width="400" border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#000000">
                        <tr>
                          <td colspan="2" bgcolor="#e7e7e7"><div align="center">Benutzer editieren </div></td>
                        </tr>
                        <tr>
                          <td width="170" bgcolor="#e7e7e7">Benutzername</td>
                          <td width="230" bgcolor="#FFFFFF"><input type="text" name="username" class="input" size="20" value="<?php echo $data['user']; ?>"></td>
                        </tr>
                        <tr>
                          <td width="170" bgcolor="#e7e7e7">Passwort</td>
                          <td width="230" bgcolor="#FFFFFF"><input type="password" name="password" class="input" size="20"></td>
                        </tr>
                        <tr>
                          <td width="170" bgcolor="#e7e7e7">Passwort wiederholen </td>
                          <td width="230" bgcolor="#FFFFFF"><input type="password" name="password2" class="input"></td>
                        </tr>
                        <tr>
                          <td width="170" bgcolor="#e7e7e7">Userstatus</td>
                          <td width="230" bgcolor="#FFFFFF"><select name="status">
                          <?php
                                          $mysql_query
                      ="SELECT status_id, status_name FROM user_status";
                                          
                      $result=mysql_query($mysql_query);
                                          while(
                      $data=mysql_fetch_array($result)){
                                          echo 
                      '<option>' $data['status_name'] . '</option>';
                                          }
                                          
                      ?>
                          </select>    </td>
                        </tr>
                        <tr>
                          <td width="170" bgcolor="#e7e7e7">Herkunft</td>
                          <td width="230" bgcolor="#ffffff"><input type="text" name="location" size="20" class="input" value="<?php echo $data['location']; ?>"></td>
                        </tr>
                        <tr>
                          <td colspan="2" bgcolor="#e7e7e7"><div align="center"><input type="submit" name="submit" value="Speichern" class="button"></div></td>
                        </tr>
                      </table>
                      </form>
                      <?php
                      }elseif(!isset($_POST['username']) || $_POST['username'] == ""){
                          echo 
                      '<p align="center">Keinen Benutzernamen eingegeben.

                      [url="usr_edit.php?edit_user=' 
                      $data['id'] . '"]Zurück[/url]</p>';
                      }elseif(
                      $_POST['password'] != $_POST['password2']) {
                          echo 
                      '<form action="usr_edit.php" method="post">';
                          echo 
                      '<p align="center>Die Passwörter stimmen nicht überein!

                      '
                      ;
                          echo 
                      '<input type="hidden" name="edit_user" value="'$data['id'] .'">';
                          echo 
                      '<input type="submit" name="zurueck" value="Zurück"></p>';
                          echo 
                      '</form>';
                      }else{
                              
                      $username $_POST['username'];
                              
                      $location $_POST['location'];
                              
                      $usr_status $_POST['status'];
                              if(
                      $insert = @mysql_query("UPDATE users SET user = '$username', user_status = '$usr_status', location = '$location' WHERE id=" $_GET['edit_user'])) {
                                  echo 
                      '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!

                      [url="sichere_seite.php"]Zur Admin-Seite[/url]</p>'
                      ;
                              }else{
                                  echo 
                      '<p align="center">Beim editieren des Benutzers trat ein Fehler auf!

                      [url="usr_edit.php?edit_user="]Zurück[/url]</p>'
                      ;
                              }
                          }

                      ?>
                      </body>
                      </html>
                      Hier soll die mit $_GET übermittelte User-ID zur Identifikation des richtigen Users in der MySQL-Tabelle 'users' verwendet werden. Die Zeile in der Tabelle wird im Array $data gespeichert und dann soll sie durch die Eingaben in dem Formular entsprechend geändert werden.

                      Leider bekomme ich dann o.g. Fehlermeldung und alle User werden auf einen Schlag geändert.

                      Das ist mein Problem. Ich weiß nicht, woran das liegt.

                      Kommentar


                      • #12
                        Ich komme mit den Tipps nicht weiter. Hat vielleicht noch wer ne andere Idee?

                        Kommentar

                        Lädt...
                        X