Ankündigung

Einklappen
Keine Ankündigung bisher.

User mit PHP aus DB löschen

Einklappen

Neue Werbung 2019

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

  • User mit PHP aus DB löschen

    Hallo Zusammen

    Habe da ein kleines Problem.^^

    Also folgendes:
    Ich möchte die User durch ein mit PHP realisiertes GUI aus der Datenbank löschen können.

    Das habe ich gemacht:
    -User ausgelesen und in Tabelle dargestellt
    -Funktion (delete_user) geschrieben, die User löschen kann (dazu später mehr)

    Das funzt:
    -User löschen, indem ich den usernamen direkt als Parameter bei Funktionsaufruf übergebe

    Das funzt nicht:
    User löschen, indem ich den usernamen als Parameter IN FORM EINER VARIABLE bei Funktionsaufruf übergebe

    Zur Funktion:
    Die Funktion wird aufgerufen, sobald ich das Formular absende, indem ich auf den Submit-Button in Form einer Grafik klicke. Die Funktion sucht den beim Aufruf als Parameter übergebenen User und löscht ihn.
    Leider funktioniert das aber nur, wenn ich den Parameter direkt angebe, statt der Variable "$data [$y][user_name]" gebe ich also beispielsweise "urs" ein.

    Hier der Code dazu:
    PHP-Code:
    <?php
        
    include ("mysql_func.php");                //mysql_func.php wird für diverse Datenbank-Funktionen gebraucht (SELECTS, UPDATES usw.)
        
    conn();                                    //Verbindung zum SQL-Server aufbauen

        
    $rows give_me_rows();                    //Anzahl rows in der DB auslesen
        
    $data give_me_data();                    //Datenfelder mit SELECT auslesen und in Array speichern

        
    function delete_user($user_name)
        {
            
    //SQL-Statement absetzen
            
    $db "spmf";
            
    $sql "delete from spieler where user_name = '$user_name';";
            
    $result send_sql ($db$sql);                                    //SQL-Befehl ausführen
        
            
    $rows get_rows($result); //Anzahl Zeilen.$count = 0;
            
    $data get_fetch_array($result);
            return 
    $data;
        }
    ?>
    <html>
        <head>
            <script language="JavaScript" type="text/javascript">
                function request_delete_user() 
                {   
                    return confirm("Ausgewählte User löschen?")
                }
            </script>
        </head>
        <body>
            <?php
                
    for ($y=0$y<$rows$y++)
                    { 
                        if(
    $data [$y][user_name]!='admin')
                        {
                            echo 
    "<tbody>";
                                echo 
    "<tr>";
                                    echo 
    "<td nowrap class='data'>".$data [$y][user_name]."&nbsp;</td>";
                                    echo 
    "<td nowrap class='data'>"?>
                                    <form method="POST" action="<?php delete_user($data [$y][user_name]);?>" onSubmit="return request_delete_user()">
                                        <input type="image" src="images/papierkorb.gif" alt="abschicken"  border="0">
                                    </form>
                                    <?php "&nbsp</td>";
                                echo 
    "</tr>";
                            echo 
    "</tbody>";
                        }
                    }
            
    ?>
        </body>
    </html>
    <?php
        mysql_close
    ();                            //Verbindung zum SQL-Server trennen
    ?>
    Könnt Ihr mir vielleicht helfen?
    Krieg das nich gebacken
    Ich sitze nun schon fast den ganzen Morgen und den ganzen Nachmittag daran, aber komme einfach nicht weiter

    Danke schon mal

    Schöne Grüsse

  • #2
    das hier

    Code:
    <form method="POST" action="<?php delete_user($data [$y][user_name]);?>" o
    ist absoluter Blödsinn. In action kann nur eine Datei angegeben werden wohin die Daten geschickt werden sollen.

    Kommentar


    • #3
      Zitat von cycap Beitrag anzeigen
      das hier

      Code:
      <form method="POST" action="<?php delete_user($data [$y][user_name]);?>" o
      ist absoluter Blödsinn. In action kann nur eine Datei angegeben werden wohin die Daten geschickt werden sollen.
      Warum gehts dann, wenn ich $data [$y][user_name] durch den tatsächlichen Username ersetze?

      Was schlägst Du vor, wie ich es anders machen könnte

      Kommentar


      • #4
        Wir ham' da mal was vorbereitet Guckst du hier: Affenformular (Standardverfahren) - PHP.de Wiki

        Kommentar


        • #5
          Mal so ganz nebenbei,
          PHP-Code:
          $data [$y][user_name
          ist onehin falsch, da zwischen $data und [ kein leerzeichen stehen darf (glaub ich zumindest, habs jez nicht getestet ^^). Sprich du übergibst der Funktion gar nichts.

          Abgesehen davon stimmt es was hier gesagt wurde: HTML verlangt eine Datei als action-Parameter. Was du machen kannst ist action="delete.php" aufrurufen und im Formular ein Feld
          Code:
          <input type="hidden" name="userToDelete" value="<?=$data[$y][user_name];?>">
          zu machen.
          Und dann in delete.php ein
          PHP-Code:
          delete_user($_POST['userToDelete']); 
          mfg

          Kommentar


          • #6
            ist onehin falsch, da zwischen $data und [ kein leerzeichen stehen darf (glaub ich zumindest, habs jez nicht getestet ^^).
            Hättest Du aber besser. Ist Blödsinn.
            Btw.: welcher Funktion?

            Er kann auch
            PHP-Code:
            action="delete_user.php?user_name=<?php echo $data[$y]['user_name'];?>"
            nutzen. Bedenke aber, dass Formulardaten stets manipulierbar sind.

            Was ihr nicht tun solltet ist user_name ohne Anführungszeichen als Arrayschlüssel verwenden.

            Kommentar


            • #7
              Zitat von BlackWolf Beitrag anzeigen
              Mal so ganz nebenbei,

              ist onehin falsch, da zwischen $data und [ kein leerzeichen stehen darf (glaub ich zumindest, habs jez nicht getestet ^^). Sprich du übergibst der Funktion gar nichts.
              Klar gehts. Ausserdem: Das is keine Funktion, sondern ein Array ^^

              Zitat von BlackWolf Beitrag anzeigen
              Was du machen kannst ist action="delete.php" aufrurufen und im Formular ein Feld
              Code:
              <input type="hidden" name="userToDelete" value="<?=$data[$y][user_name];?>">
              zu machen.
              Und dann in delete.php ein
              PHP-Code:
              delete_user($_POST['userToDelete']); 
              mfg
              Habs jetzt so gemacht:
              PHP-Code:
              <form method="POST" action="delete_user.php" onSubmit="return request_delete_user()">
                  <input type='radio' name="user_name" value="<?php echo $data [$y][IDSpieler]; ?>">
              </form>
              und im "delete_user.php" so:
              PHP-Code:
              $user_name $_POST['user_name'];
                                                  echo 
              $user_name;
                                                  
              delete_user($user_name); 
              Damit gehts.^^

              Zitat von nikosch Beitrag anzeigen
              Er kann auch
              PHP-Code:
              action="delete_user.php?user_name=<?php echo $data[$y]['user_name'];?>"
              nutzen. Bedenke aber, dass Formulardaten stets manipulierbar sind.

              Was ihr nicht tun solltet ist user_name ohne Anführungszeichen als Arrayschlüssel verwenden.
              Wie bitte? xD
              Arrayschlüssel? 0_o
              Was das?

              Ansonsten Danke für die Hilfe.

              Grzz

              Kommentar


              • #8
                Wie bitte? xD
                Arrayschlüssel? 0_o
                Was das?
                Ein Array besteht aus einer Reihe von Datensätzen, bei denen jeweils ein Wert einem Schlüssel zugeordnet ist. Der Schlüssel kann dabei numerisch (INT) oder assoziativ (String) sein.

                Kommentar


                • #9
                  Dingdong! -> Quakenet/#php Tutorial - de - Arrays

                  Kommentar


                  • #10
                    Auch, wenn's bissel spät ist, muss ich hier mal klugscheißen.

                    Zitat von nikosch Beitrag anzeigen
                    Btw.: welcher Funktion?
                    delete_user()

                    Zitat von MistaJ
                    Ausserdem: Das is keine Funktion, sondern ein Array
                    Ach?
                    $data [] soll ja übergeben werden, also kann $data wohl kaum selber die angebliche Funktion sein.

                    Augen auf Kollegen!

                    delete_user($data [$y][user_name])

                    Kommentar


                    • #11
                      Zitat von MistaJ Beitrag anzeigen
                      Warum gehts dann, wenn ich $data [$y][user_name] durch den tatsächlichen Username ersetze?
                      Weil es dann schon ausgeführt wird, bevor das Formular abgeschickt wird. Nämlich schon in dem Durchlauf, wo PHP das HTML für das Formular ausgibt.

                      Kommentar

                      Lädt...
                      X