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-ID: 177037

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

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

msr972
msr972 30.11.2011 um 10:05:10 Uhr
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ß
ITSchlumpf
ITSchlumpf 30.11.2011 um 10:21:25 Uhr
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
msr972
msr972 30.11.2011 um 11:09:38 Uhr
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.
ITSchlumpf
ITSchlumpf 30.11.2011 um 12:44:07 Uhr
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ß
msr972
msr972 30.11.2011 um 13:16:48 Uhr
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.
nxclass
nxclass 30.11.2011 um 13:42:24 Uhr
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
msr972
msr972 30.11.2011 um 13:56:41 Uhr
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!
ITSchlumpf
ITSchlumpf 30.11.2011 um 14:05:25 Uhr
Goto Top
Danke für eure Tipps. Das hat mir echt geholfen.
Okay ich merks mir für die Zukunft nx.

Gruß
Schlumpf
ITSchlumpf
ITSchlumpf 30.11.2011 um 14:22:31 Uhr
Goto Top
Noch ne kurze Frage. Wie kann ich das ganze dann auslesen um es dann in meine SQL-Abfrage einzubauen??

Gruß
nxclass
nxclass 30.11.2011 um 15:08:23 Uhr
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.
ITSchlumpf
ITSchlumpf 30.11.2011 um 15:17:11 Uhr
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,
msr972
msr972 30.11.2011 um 15:27:32 Uhr
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!