itschlumpf
Goto Top

PHP - Userverwaltung

Hallo zusammen,

ich bastel gerade eine kleine Intranetseite zusammen und wollte jetzt noch eine kleine Userverwaltug dazu machen, damit man nicht immer die User in der Datenbank freischalten muss.

Ich wollte das ganze über eine Tabelle regeln, welche mittels einer SQL-Abfrage befüllt wird. Hinter die Tabelle sollte eine Checkbox kommen welche ich dann auslese und die angewählten User lösche, freischalte oder sonst irgendwas mache.

Kann mir da jemand bitte helfen, wie ich die checkbox so auslesen kann, damit ich genau den User bekomme der in der Zeile steht?

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
        <title></title>
    </head>
    <body>
        <form action="index.php" method="post">  
            <br/>
            <input type="Submit" name="startseite" value="Startseite">  
        </form>
        <form action="liste.php?sort=IP&dir=asc" method="post">  
            <br/>
            <input type="Submit" name="uebersicht" value="EEEPC Übersicht">  
        </form>
        <br/>
        <?php
        include ('server.php');  

        $dbconnect = mssql_connect($SQL_Server, $SQL_User, $SQL_Pw);
        mssql_select_db($SQL_db);

        $sql = "SELECT * FROM Benutzer";  
        $result = mssql_query($sql);
        $row = mssql_fetch_array($result, MSSQL_ASSOC);

        echo "<form action=verwaltung.php>";  
        echo" <input type=Submit name=absenden value=\"Daten ändern\">";  
        if (isset($_REQUEST['edit'])) {  
            echo "edit ist gesetzt";  
            echo $_REQUEST['edit'];  
            $edit = $_REQUEST['edit'];  
        } else {
            echo "edit ist nicht gesetzt";  
        }

        echo "<table border=1><tr>";  

        if ($row == "") {  
            echo "Es sind keine Neuen User vorhanden";  
        } else {
            while ($field = key($row)) {

                echo "<th> $field </th>";  
                next($row);
            }
            echo "<th>Hinzufügen</th>";  
            echo "</tr>";  

            while ($row = mssql_fetch_array($result, MSSQL_ASSOC)) {
                echo "<tr>  
                        <td>$row[Benutzername]</td>
                        <td>$row[Flag]</td>
                        <td>$row[Vorname]</td>
                        <td>$row[Name]</td>
                        <td>$row[admin]</td>  
                <td></td>
                <td></td>
                <td></td>
                <td><input type=checkbox name=edit value=test></td>                              
               </tr>";  
               
            }/* while */
        } /* if/else */
        echo" </table>";  
        echo "</form>";  
        mssql_close($dbconnect);
        
        
        ?>
    </body>
</html>

Vielen dank für eure Hilfe.

Gruß
Schlumpf

Content-Key: 177037

Url: https://administrator.de/contentid/177037

Printed on: April 24, 2024 at 23:04 o'clock

Member: msr972
msr972 Nov 30, 2011 at 09:05:10 (UTC)
Goto Top
Hi,

Du musst eigentlich nur der Checkbox eine eindeutige ID geben, z.B. mit einer Nummer, wenn Du einen AI PK in der Table hast.
Und vorallem nicht per GET übertragen sondern per POST, also <form method="POST" action="verwaltung.php">

Danach kannst Du im verwaltung.php einfach über die entsprechenden Daten itterieren


Gruß
Member: ITSchlumpf
ITSchlumpf Nov 30, 2011 at 09:21:25 (UTC)
Goto Top
Hi,
danke für die fixe Antwort.

Naja aber die Tabelle ist ja nicht immer gleich groß, wie soll ich ihm dann nen eindeutigen Wert zuweisen? Das ganze müsste doch flexibel sein oder?

Gruß
Schlumpf
Member: msr972
msr972 Nov 30, 2011 at 10:09:38 (UTC)
Goto Top
Zitat von @ITSchlumpf:
Naja aber die Tabelle ist ja nicht immer gleich groß, wie soll ich ihm dann nen eindeutigen Wert zuweisen? Das ganze
müsste doch flexibel sein oder?

Ok, ich merke, Du weißt nicht, was ich mit AI PK meinte.
Jeder vernünftige Tabelle hat einen Primary Key, der immer eindeutig ist. AI steht einfach für AutoIncrement.

Du machst ja einen
 $sql = "SELECT * FROM Benutzer";   

Welche Felder kommen dann genau zurück?
Benutzername, Flag, Vorname, Nachname und Admin Flag? Sonst nichts? Ok, denn dann wäre der Benutzername ein PK, da er ja nur einmal vorkommen kann. Ich hoffe, Du hast die Tabelle so angelegt.
Dann gib im Notfall der Inputbox die ID vom Benutzernamen.

Damit hast Du eine eindeutige Kennzeichnung und kannst das Update durchführen.
Member: ITSchlumpf
ITSchlumpf Nov 30, 2011 at 11:44:07 (UTC)
Goto Top
Also die Tabelle hat folgende Spalten:
ID auto_increment, pk, not null
benutzername not null
passwort not null
flag (ob Benutzer berechtigt ist sich einzuloggen)
vorname
name
eingeloggt
admin

Wie gebe ich der checkbox dann die ID vom Benutzernamen?
Einfach in die Schleife der Tabellenerstellung
<input type=checkbox id="$row[benutzername]" name='selected' >  
oder geht das anderst?

Gruß
Member: msr972
msr972 Nov 30, 2011 at 12:16:48 (UTC)
Goto Top
Jap genau so.. oder alternativ

<input type=checkbox id="$row[ID]" name="selected">  

Dann hätte die Checkbox den Wert der jeweiligen ID und Du könntest Dein SQL Update Statement mit dem Schlüssel ID erstellen.
In Deinem Beispiel müsstest Du das SQL Updatestatement auf 'Benutzername' anpassen.
Member: nxclass
nxclass Nov 30, 2011 at 12:42:24 (UTC)
Goto Top
... wir reden doch hier von HTML oder ?
<input type="checkbox" name="benutzerId" value="<?php echo $row['ID'] ?>" />  

ggf noch:
<input type="checkbox" name="benutzerId" value="<?php echo $row['ID'] ?>" selected="selected" />  
... wenn die ID vor selektiert werden soll bei der anzeige.

TIPP: trenne optisch deinen Code so weit es geht (PHP - HTML) - am besten erst die Daten speichern/selektieren - dann sich um die Anzeige kümmern
Member: msr972
msr972 Nov 30, 2011 at 12:56:41 (UTC)
Goto Top
Ich habs grade nicht ausprobiert, aber...
wenn ich ein post auf ein Form mache, werden dann nicht nur die selected items übertragen? damit hätte er über ID die Benutzer IDs aus der Table.. Mehr wollte er ja auch nicht.
Kann mich natürlich auch irren.

aber du hast natürlich schon auch recht nx!
Member: ITSchlumpf
ITSchlumpf Nov 30, 2011 at 13:05:25 (UTC)
Goto Top
Danke für eure Tipps. Das hat mir echt geholfen.
Okay ich merks mir für die Zukunft nx.

Gruß
Schlumpf
Member: ITSchlumpf
ITSchlumpf Nov 30, 2011 at 13:22:31 (UTC)
Goto Top
Noch ne kurze Frage. Wie kann ich das ganze dann auslesen um es dann in meine SQL-Abfrage einzubauen??

Gruß
Member: nxclass
nxclass Nov 30, 2011 at 14:08:23 (UTC)
Goto Top
Das Form sendet mit method="post" ? - dann sollten die Daten in der Super Globalen $_POST sein.
In meinem Beispiel sollte unter $_POST['benutzerId'] ein Array mit den selektierten Benutzer IDs zu finden sein.
Member: ITSchlumpf
ITSchlumpf Nov 30, 2011 at 14:17:11 (UTC)
Goto Top
Okay danke. Hab grad gesehen, dass er die Daten in den html-Link schreibt. Dann kann ich des über POST oder GET auslesen. Danke,
Member: msr972
msr972 Nov 30, 2011 at 14:27:32 (UTC)
Goto Top
Deshalb hab ich schon im ersten Post gesagt, nimm POST her und nicht GET face-smile
GET ist scheibe bei sowas, denn GET hat eine Zeichenbeschränkung usw. und die Links kann man aus Versehen nochmal aufrufen und alles ist fürn Allerwertesten.. Deshalb über method="post" im form-tag und dann die Superglobal $_POST benutzen!