04. oktober 2005 - 18:57Der er
48 kommentarer og 1 løsning
Slet brugere / edit
Hej =)
hvordan kan jeg få vist alle mine rækker fra en tabel hvor den viser kun brugernavn =).. og så ud fra hver brugere skal det være 3 muligheder Slet aktiver un-aktiver
Slet skal bare slette rækken aktiver skal ændre noget data i rækken og un-aktiver også ændre noget data for den pågældende bruger
Jamen du kan jo bare bruger deres brugernavn - men husk at det skal være unik. Altså "update address=?,navn=? where brugernavn=? in usertable" execute($addres,$navn,$brugernavn);
Vi skal jo først have fundet ud af hvilke rækker dine tabel indeholder inden vi kan udskrive dem - det kan alternativt også bare gøres ved at skrive "SELECT * FROM tabel" - men det er MEGET dårligt praksis!!
user <-- brugeren og hvis der er en bruger skal slettes skal alt data fra den brugere slettes active <-- Den skal sættes til "yes" hvis man har valgt aktiver og "no" hvis man ha valgt un-aktiver
switch( $sAction ){ case "delete" ){ $query = mysql_query("DELETE FROM myUsers WHERE id=".$_GET['id']) or die(mysql_error()); case "edit": editUser(); break; case "save": $query = mysql_query("UPDATE myUsers SET user_name ='".$_POST['user_name']."' WHERE id=".$_POST['id']) or die(mysql_error()); default: showUser(); break; } }
function showUser(){ $query = mysql_query("SELECT * FROM myUsers") or die(mysql_error()); if(mysql_num_rows($query) < 1){ print "Der er ikke oprettet nogle brugere..."; } else {?> <table> <tr> <th>Id</th> <th>Brugernavn</th> <th>Handling</th> </tr> <? while ($row = mysql_fetch_array($query)) { $user_id = $row["id"]; $user_name = $row["user_name"]; ?> <tr> <th><?=$user_id?></th> <td><?=$user_name?></td> <td> [ <a href="user.php?action=edit&id=<?=$user_id?>">Redigér</a> ] [ <a href="user.php?action=delete&diary_id=<?=$diary_id?>">Slet</a> ] </td> </tr> <? }?> </table> <?}?>
function editUser(){ $query = mysql_query("SELECT * FROM myUsers WHERE id=".$_GET['id']) or die(mysql_error()); $row = mysql_fetch_array($query)); $user_id = $row["id"]; $user_name = $row["user_name"];?> <form action="user.php?action=save" method="post"> Brugernavn <input type="text" name="user_name" value="<?=$user_name?>"> <input type="submit" value="gem"> </form> <? }
Okay - for at være ærlig, så ligner det kode du har skrevet "jeg ved ikke hvad":-) Jeg synes ligeså godt du kan starte med at få det organiseret til at starte med. Jeg har noget som jeg har brugt til et administratormodul - og det må du gerne få. Men du bliver nok nød til selv at rette det til!
function createUser($data) { $string = '<h1>FTP-bruger</h1>'; $string .='<p>De indtastede data er blevet gemt i databasen. <br /><a href="./">Hop til oversigten</a>.'; $query = "INSERT INTO usertable (userid,passwd,homedir,shell,uid,gid,LoginAllowed) VALUES (?,Password(?),?,?,?,?,?)"; $sth = $this->dbh->prepare($query); $sth->execute($data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6]); return $string; }
function editUser($data) { $string = '<h1>Ændringer gemt</h1>'; $string .='<p>De indtastede data er blevet gemt i databasen. <br /><a href="./">Hop til oversigten</a>.'; $sth = $this->dbh->prepare('UPDATE usertable SET userid=?,passwd=?,homedir=?,shell=?,uid=?,gid=?,LoginAllowed=? WHERE id=?'); $sth->execute($data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6],$data[7]); return $string; }
function getUserData($id) { $sth = $this->dbh->prepare('SELECT userid,passwd,homedir,shell,uid,gid,LoginAllowed,id FROM usertable WHERE id=?'); $sth->execute($id); list($userid,$passwd,$homedir,$shell,$uid,$gid,$LoginAllowed,$id) = $sth->fetch_one_row(); $data = array($userid,$passwd,$homedir,$shell,$uid,$gid,$LoginAllowed,$id); return $data; }
function deleteUser($id,$files) { $sth = $this->dbh->prepare('DELETE FROM usertable WHERE id=?'); $sth->execute($id); $string = "<h1>FTP-bruger slettet</h1>"; $string .= "<p>FTP-brugeren er slettet. <br /><a href=\"./\">Hop til oversigten</a>.</p>"; return $string; }
function showDeleteUser($id) { $sth = $this->dbh->prepare('SELECT userid FROM usertable WHERE id=?'); $sth->execute($id); list($userid) = $sth->fetch_one_row(); $string = "<h1>Sletning af FTP-bruger</h1>"; $string .= '<p>Er du sikker på at du vil slette følgende FTP-bruger:</p>'; $string .= "<p>".$userid."</p>"; $string .= '<form action="delete.php" method="post"><table>'; $string .= '<tr><td>Slet filer:</td><td>Ja:<input type="radio" name="files" checked value="1"> Nej:<input type="radio" name="files" value="0"></td></tr></table>'; $string .= '<input type="hidden" name="delete" value="true"></input><input type="hidden" name="id" value="'.$id.'"></input><input type="submit" name="submit" value="Bekræft"></input></form>'; return $string; }
function removeUserLog($id) { $sth = $this->dbh->prepare('SELECT userid FROM usertable WHERE id=?'); $sth->execute($id); list($userid) = $sth->fetch_one_row(); $sth = $this->dbh->prepare('DELETE FROM xfer_stats where usr=?'); $sth->execute($userid); $string = "<h1>Log slettet</h1>"; $string .= '<p>Loggen for '.$userid.' blev slettet!</p>'; $string .= '<form action="index.php" method="post"><input type="submit" value="Tilbage"></input></form>'; return $string; } } $ftp = new FTP(); ?>
Funktionerne i class.ftp.php gør det muligt at du ikke skal have en masse grim mysq-kode i dine filer - men du skal dog være opmærksom på at du bliver nød til at ændre i funktionerne - du ikke kan bruge denne logik: $sth = $this->dbh->prepare('SELECT userid FROM usertable WHERE id=?'); $sth->execute($id);
Altså jeg må nok indrømme at det kommer til at tage for lang tid at forklare dig herover hvert enkelte skridt - så det ville være noget lettere for mig at lave det hele selv. OG det ville nok ca. tage 30 min, hvis jeg havde adgang til din database.
Hvis du nu have arbejdet på unix ville det have været så nemt at logge ind via ssh - og arbejde på din computer. (lige en lille salgstale for open source:-))
Den har lidt fejl Feks submit knappen kommer ovenover det andet :S og så skriver den ikke brugeren er slettet feks når man vælger slet det er meget simpelt.. men det er ikke behov for noget helt vildt powerkodning som du vidste der oppe :P for så kan jeg ikke gå ind og ændre senere hvis der skulle blive behov for det, da jeg ikke er så god endnu :P ( har jeg vidst sagt )
<?php $fjolletobakII = mysql_query("SELECT * FROM users WHERE klan='".$_SESSION['klan']."'") or die(mysql_error()); while ($fjol = mysql_fetch_array($fjolletobakII)) { $sus = $fjol['user']; echo "<table><form action=\"#\" method=\"POST\" name=\"submit\">"; echo "<tr><td><b>Brugere</b></td><td><b>Handlinger</b></td></tr>"; echo "<tr><td>".$fjol['user']."</td><td><select name=\"".$fjol['user']."\"><option value=\"ingen\">Intet</option><option value=\"slet\" >Slet</option><option value=\"aktiver\" >Aktiver</option><option value=\"unaktiver\" >UnAktiver</option></select></td></tr>"; echo "<input name=\"submit\" type=\"submit\" value=\"Ret\" >"; echo "</form></table>"; } if ($_POST['$sus'] == "") { // gør intet // } elseif ($_POST['$sus'] == "slet") { // mysql // echo "brugeren er slettet"; } elseif ($_POST['$sus'] == "aktiver") { // mysql // echo "brugeren er Aktiveret"; } elseif ($_POST['$sus'] == "unaktiver") { // mysql // echo "brugeren er unAktiveret"; } ?>
krukken >> Lad mig sige med det samme at yes det _er_ nødvendigt for et ordentligt framework at køre med en sådan objectstruktur du leger med (hvilket ser lækkert ud foriøvrigt)... men men alt ting til sin tid :-)
"Everything worth doing is worth overdoing" Krukken 4. oktober. Man kan ligeså godt lave ting ordentlig første gange, istedet for at bruger tid på det to gange:-)
har i en løsning i min simple kode der gør at man kan aktivere eller slette 2 brugere på samme tid.. har ændret koden sådan at alle brugerne er inde under den samme <form>
hyanen >> start med at få det du har nu til at virke fornuftigt. Så går der sikkert ikke lang tid før du kan overskue en smartere og mere sexet måde at gøre det på (og mere sikker måde for den sags skyld)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.