Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankeintrag funzt nicht

Einklappen

Neue Werbung 2019

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

  • Datenbankeintrag funzt nicht

    Ich habe eine Tabelle in der sämtlicher INhalt einer Tabelle aus der Datenbank angezeigt wird.
    Nun habe ich ein Formular mit dem ich neue Einträge zu der Datenbank hinzufügen möchte.
    Der Inhalt der zwei Options Felder werden aus andere Tabellen ausgelesen.

    Leider funktioniert das ganze nicht so richtig.
    Wenn man auf den Button klickt dann läd er eine weiße Seite ohne Text.
    Achja das ganze Script steht in einem IFrame (keine Ahnung ob das relevant ist)

    Ich hoffe ihr könnt mir helfen
    PHP-Code:
    <?php
    /* includes */
    include ("checkuser.php");

    /* Datenbankverbindung */
    @mysql_connect('localhost''root''********') OR die(mysql_error());
        
    mysql_select_db(db_smc) OR die(mysql_error());

        
    $sql "SELECT
                    user_id,
                    user_name,
            user_dept,
            user_userstat
                FROM
                    tb_user
                ORDER BY
                    user_id ASC;"
    ;

    /* Anzahl der Einträge */
        
    $sql2 "SELECT * FROM tb_user";
        
    $result mysql_query($sql2);
        
    $daten mysql_num_rows($result);

    /* Tabellenausgabe */
        
    echo "<b><u>Benutzerübersicht ('<b>$daten</b>' Benutzer)</u>";

        echo 
    "<form action='deleteuser.php' method='POST'>\n";
        echo 
    "<table border='0' width='100%'>";
        echo 
    "<tr  bgcolor='#0000FF' ><th><b><font color='#FFFFFF'>ID</font></b></th><th><font color='#FFFFFF'>Name</font></b></th><th><font color='#FFFFFF'>Status</font></b></th><th><font color='#FFFFFF'>Abteilung</font></b></th><th><b><font color='#FFFFFF'>Aktion</font></b></th></td>";

        while(
    $row mysql_fetch_assoc($result)) {
        echo 
    "<tr bgcolor='#D3D3D3'><td>";
        echo 
    $row['user_id'];
        echo 
    "</td><td>";
        echo 
    $row['user_name'];
        echo 
    "</td><td>";
        echo 
    $row['user_userstat'];
        echo 
    "</td><td>";
        echo 
    $row['user_dept'];
        echo 
    "</td><td>";
        echo 
    "<input type='submit' value='löschen' name='del' >";
        echo 
    "<input name='user_id' value='<? echo $user_id ; ?>' type='hidden'>";
        echo 
    "</td></tr>";
        }
        echo 
    "</table>\n";
        echo 
    "</form>\n";

        
    $result mysql_query("SELECT userstat_name FROM tb_userstat;");
        
    $stats "";
        while (
    $row mysql_fetch_array($result)) {
            
    $stats .= "<option>".$row["userstat_name"]."</option>\n";
        }
        
    $result mysql_query("SELECT dept_name FROM tb_dept;");
        
    $depts "";
        while (
    $row mysql_fetch_array($result)) {
            
    $depts .= "<option>".$row["dept_name"]."</option>\n";
        }

    /* Datenbankeintrag */

    if (isset ($_POST['submit'])) {
       
    $sql3 "INSERT INTO tb_user (user_name, user_dept, user_userstat, user_pwd) VALUES ('$_POST[user_name]', '$_POST[user_dept]', '$_POST[user_userstat]', 'SHA1 ($_POST[user_pwd])')";

    $result mysql_query($sql3);
    if (
    $result) {
       echo 
    "Dateneingabe erfolgreich";
       } else {
       echo 
    "Dateneingabe fehlgeschlagen";
       }
       }

        echo 
    "<form action='$_SERVER[PHP_SELF]' method='POST'>\n";
        echo 
    "  <table border='0' cellpadding='5' cellspacing='0' bgcolor='#E0E0E0'>\n";
        echo 
    "    <tr>\n";
        echo 
    "      <td align='right'>Name</td>\n";
        echo 
    "      <td><input name='user_name' type='text' value='$POST[user_name]'></td>\n";
        echo 
    "    </tr>\n";
        echo 
    "    <tr>\n";
        echo 
    "      <td align='right'>Passwort</td>\n";
        echo 
    "      <td><input name='user_password' type='password' value='$POST[user_pwd]'></td>\n";
        echo 
    "    </tr>\n";
        echo 
    "    <tr>\n";
        echo 
    "       <td align='right'>Status</td> <td>\n";
        echo 
    "     <select name='user_userstat' value='$POST[user_userstat]'>\n";
        echo 
    $stats;
        echo 
    "    </select></td>\n";
        echo 
    "    </tr>\n";
        echo 
    "    <tr>\n";
        echo 
    "     <td align='right'>Abteilung</td>\n";
        echo 
    "     <td>\n";
        echo 
    "     <select name='user_dept' value='$POST[user_dept]'>\n";
        echo 
    $depts;
        echo 
    "    </select></td>\n";
        echo 
    "</tr>\n";
        echo 
    "<tr>\n";
        echo 
    "<td align='right'></td>\n";
        echo 
    "<td>\n";
        echo 
    "<input type='submit' name ='submit' value=' Absenden '>\n";
        echo 
    "<input type='reset' value=' Felder leeren '>\n";
        echo 
    "</td>\n";
        echo 
    "</tr>\n";
        echo 
    "</table>\n";
        echo 
    "</form>\n";


    $id $_GET['user_id'];

    while (
    $row mysql_fetch_assoc($result)) {
          echo 
    "<tr>";
          foreach (
    $row as $key => $value) {
          echo 
    "<td style='border: 1px solid black; padding: 5px'>$value</td>";
          }
          echo 
    '<td> <a href="?del='.$row['user_id'].'">Löschen</a></td>';
          echo 
    "</tr>";
          }
    if (isset (
    $_GET['del'])) {
       
    //mysql_select_db("db_smc", $dp);
       
    $query_delete = ("DELETE FROM tb_user WHERE user_id = '".$_GET['del']."'");
       
    $delete mysql_query($query_delete);
    }           
    ?>

  • #2
    Hi,

    Machst du dein "Form" nicht wieder zu?

    Gruß Thomas

    Kommentar


    • #3
      Zitat von Thomas Beitrag anzeigen
      Hi,

      Machst du dein "Form" nicht wieder zu?

      Gruß Thomas
      Danke den Schusselfehler hab ich übersehen. Jetzt funktionierts.
      Leider klappt meine andere Funktion nicht. Ich habe in jeder Zeile der Tabelle einen Button zum löschen der Benutzer. Leider passiert nix wenn ich drauf klick, außer das er mit anzeigt "gelöscht". Wenn ich dann wieder zurück zur Tabelle gehe zeigt er mir das was gelöscht sein sollte immernoch an

      (Ich hab das Script oben aktualisiert)
      Die userdelete.php sieht so aus
      PHP-Code:
      <?php
      if (isset($_POST['del'])) {
      $sql "DELETE FROM tb_user WHERE user_id='".$_POST['user_id']."' LIMIT 1";
      echo 
      mysql_error();
      echo 
      " gelöscht";
      }  
      ?>
      findest du dafür eine Lösung?

      Kommentar


      • #4
        nunja... das Query führt sich nicht von selbst aus mysql_query() fehlt.

        btw.:
        Bitte mach dich mal über "SQL Injections" schlau bzw. schau dir mysql_real_escape_string() an.
        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

        Kommentar


        • #5
          sql injections beachten.
          Programming:PHP/SQL Injection - Wikibooks, collection of open-content textbooks

          Kommentar


          • #6
            PHP-Code:
             <?php
            if (isset($_POST['del'])) {
            $sql "DELETE FROM tb_user WHERE user_id='".mysql_real_escape_string($_POST['user_id'])."' LIMIT 1";
            mysql_query($sql);
            echo 
            mysql_error();
            echo 
            " gelöscht";
            }  
            ?>

            richtig quasi so

            Kommentar


            • #7
              Hab ich versucht funktioniert aber leider nicht.

              PHP-Code:
              if (isset($_POST['del'])) {
              $sql5 "DELETE FROM tb_user WHERE user_id='".mysql_real_escape_string($_POST['user_id'])."' LIMIT 1";
              mysql_query($sql5);
              echo 
              mysql_error();
              echo 
              " gelöscht";
              }

                  while(
              $row mysql_fetch_assoc($result)) {
                  echo 
              "<tr bgcolor='#D3D3D3'><td>";
                  echo 
              $row['user_id'];
                  echo 
              "</td><td>";
                  echo 
              $row['user_name'];
                  echo 
              "</td><td>";
                  echo 
              $row['user_userstat'];
                  echo 
              "</td><td>";
                  echo 
              $row['user_dept'];
                  echo 
              "</td><td>";
                  echo 
              "<input type='submit' value='Löschen' name='del' >";
                  echo 
              "</td></tr>";
                  }
                  echo 
              "</table>\n";
                  echo 
              "</form>\n"

              Kommentar


              • #8
                PHP-Code:
                if (isset($_POST['del'])) {
                $sql5 "DELETE FROM tb_user WHERE user_id='".mysql_real_escape_string($_POST['user_id'])."' LIMIT 1";
                mysql_query($sql5);
                echo 
                mysql_error();
                echo 
                " gelöscht";
                }
                    
                $result mysql_query("SELECT * FROM tb_user ORDER BY `ID` DESC");
                    echo 
                "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">".
                         
                "<table border=1>";
                    while(
                $row mysql_fetch_assoc($result)) {
                    echo 
                "<tr bgcolor='#D3D3D3'><td>";
                    echo 
                $row['user_id'];
                    echo 
                "</td><td>";
                    echo 
                $row['user_name'];
                    echo 
                "</td><td>";
                    echo 
                $row['user_userstat'];
                    echo 
                "</td><td>";
                    echo 
                $row['user_dept'];
                    echo 
                "</td><td>";
                    echo 
                "<input type='submit' value='Löschen' name='del' >";
                    echo 
                "</td></tr>";
                    }
                    echo 
                "</table>\n";
                    echo 
                "</form>\n"
                Du hast die andere hälfte vom script vergessen zum auslesen der DB brauchst du auchn qury

                Kommentar


                • #9
                  es funktioniert nicht.
                  immernoch das selbe Problem. Er sagt gelöscht aber macht es nicht...


                  PHP-Code:
                  /* ZEILE LÖSCHEN
                  Auswahl der Benutzer-ID und löschen aller damit verbundenen Informationen, wenn "del" ausgelöst wird. Wenn Löschung erfolgreich war
                  oder nicht, wird eine entsprechende Meldung ausgegeben.  */
                      
                  if (isset($_POST['del'])) {
                  $sql5 "DELETE FROM tb_user WHERE user_id='".mysql_real_escape_string($_POST['user_id'])."' LIMIT 1";
                  mysql_query($sql5);
                  echo 
                  mysql_error();
                  echo 
                  "gelöscht";
                  }

                  /* ERMITTLUNG DER ANZAHL DER TABELLENEINTRÄGE */
                      
                  $sql4 "SELECT * FROM tb_user";
                      
                  $result4 mysql_query($sql4);
                      
                  $daten mysql_num_rows($result4);

                  /* Ausgabe der Informationen aus der Benutzertabelle */

                      
                  echo "<b><u>Benutzerübersicht (<b>$daten</b> Benutzer)</u>";
                      echo 
                  "<tr  bgcolor='#0000FF' ><th><b><font color='#FFFFFF'>ID</font></b></th><th><font color='#FFFFFF'>Name</font></b></th><th><font color='#FFFFFF'>Status</font></b></th><th><font color='#FFFFFF'>Abteilung</font></b></th><th><b><font color='#FFFFFF'>Aktion</font></b></th></td>";
                      
                  $result mysql_query("SELECT * FROM tb_user ORDER BY `ID` DESC");

                      echo 
                  "<form action='$_SERVER[PHP_SELF]' method='POST'>";

                      echo 
                  "<table border='0' width='100%'>";
                      echo 
                  "<tr bgcolor='0000FF' ><th><font color='FFFFFF'>ID</th><th><font color='FFFFFF'>Name</font></th><th><font color='FFFFFF'>Status</font></th><th><font color='FFFFFF'>Abteilung</font></th><th><font color='FFFFFF'>Aktion</font></th></td>";
                      while(
                  $row mysql_fetch_assoc($result4)) {
                      echo 
                  "<tr bgcolor='#D3D3D3'><td>";
                      echo 
                  $row['user_id'];
                      echo 
                  "</td><td>";
                      echo 
                  $row['user_name'];
                      echo 
                  "</td><td>";
                      echo 
                  $row['user_userstat'];
                      echo 
                  "</td><td>";
                      echo 
                  $row['user_dept'];
                      echo 
                  "</td><td>";
                      echo 
                  "<input type='submit' value='Löschen' name='del' >";
                      echo 
                  "</td></tr>";
                      }
                      echo 
                  "</table>\n";
                      echo 
                  "</form>\n"

                  Kommentar


                  • #10
                    Was gibt folgende Änderung aus?
                    PHP-Code:
                    if (isset($_POST['del'])) {
                      
                    $sql5 "DELETE FROM tb_user WHERE user_id='".mysql_real_escape_string($_POST['user_id'])."' LIMIT 1";
                      
                    $result mysql_query($sql5) or die(mysql_error());
                      
                    var_dump($sql5$result"gelöscht"mysql_affected_rows());

                    Kommentar


                    • #11
                      Vielleicht stimmt mit der User-Id etwas nicht ganz. Ich weiß, dass ich auch mal so ein Problem hatte. Versuche mal folgendes:
                      PHP-Code:
                      $sql5 "DELETE FROM tb_user WHERE user_id = ".(int)$_POST['user_id']." LIMIT 1"
                      Im Übrigen: das LIMIT 1 kannst du dir sparen - IDs sind von Natur aus einmalig.
                      Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                      Kommentar


                      • #12
                        Zitat von Manko10 Beitrag anzeigen
                        Im Übrigen: das LIMIT 1 kannst du dir sparen - IDs sind von Natur aus einmalig.
                        Nein bitte nicht an der falschen Stelle sparen, denn das geht ganz mächtig auf die Performance. Wenn das LIMIT 1 nicht da wäre vergleicht er bei jedem User ob ID = X, da es aber nur einen gibt mit der ID kann man das nach dem ersten Treffer abbrechen um Ressourcen zu sparen.

                        Mfg Drieling

                        Kommentar


                        • #13
                          Naja, bei einem unique index wie zum Beispiel einem auto_increment Wert relativiert sich das. So schlau ist mysql dann doch schon Und wenn user_id kein unique index ist, ist sicher was an der Tabellendefinition falsch.
                          Aber stimmt schon, bei komplizierteren Vergleichen, bei denen mysql nicht automatisch den richtigen Index findet, kann das wirklich bremsen.

                          Kommentar


                          • #14
                            Zitat von David Beitrag anzeigen
                            Was gibt folgende Änderung aus?
                            PHP-Code:
                            if (isset($_POST['del'])) {
                              
                            $sql5 "DELETE FROM tb_user WHERE user_id='".mysql_real_escape_string($_POST['user_id'])."' LIMIT 1";
                              
                            $result mysql_query($sql5) or die(mysql_error());
                              
                            var_dump($sql5$result"gelöscht"mysql_affected_rows());

                            string(44) "DELETE FROM tb_user WHERE user_id='' LIMIT 1" bool(true) string( "gelöscht" int(0)


                            Zitat von Manko10
                            Vielleicht stimmt mit der User-Id etwas nicht ganz. Ich weiß, dass ich auch mal so ein Problem hatte. Versuche mal folgendes:
                            PHP-Code:
                            $sql5 = "DELETE FROM tb_user WHERE user_id = ".(int)$_POST['user_id']." LIMIT 1";

                            Im Übrigen: das LIMIT 1 kannst du dir sparen - IDs sind von Natur aus einmalig.
                            geht leider auch nicht.

                            Kommentar


                            • #15
                              Also fest steht, dass der Query gültig ist. Jetzt solltest du doch mal prüfen, ob die Bedingung überhaupt so erfüllt werden kann.
                              Wie es hier aussieht, ist $_POST["user_id"] nämlich leer.
                              Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                              Kommentar

                              Lädt...
                              X