Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ Edycja i usuwanie użytkowników z bazy MySQL

Napisany przez: Barcelona 25.02.2010, 11:29:28

Witam, problem mam taki że robie stronkę i się zawiesiłem w jednym miejscu.
Zrobiłem sobie spis wszystkich użytkowników i na końcu tabeli dodałem dwie opcje "Edytuj" i "Usuń" i nie wiem jak zrobić żeby edytowało akurat tego konkretnego użytkownika. Wiem że najłatwiej to zrobić po numerze id z bazy.
Sam formularz edycji i usuwania jestem w stanie zrobić ale w nim bym musiał sam wpisywać dane użytkownika, którego chce usunąć/edytować a mi chodzi o to żebym mógł edytować odrazu po kliknieciu w link edycji.

Oto kod uzytkownicy.php

  1. <?php
  2. if (
  3. $_SESSION['admin']!=1
  4. )
  5. {
  6. http://www.php.net/die("Nie jestes adminem");
  7. }
  8. include("menu.php");
  9. http://www.php.net/echo "<br><br><br><br><fieldset><legend>Użytkownicy</legend>
  10. Lista wszystkich zarejestrowanych użytkowników portalu. W celu edycji, dodania, bądĽ usunięcia użytkownika proszę wybrać opcję z menu powyżej lub skożystać z opcji pod tabelką.
  11. </fieldset>";
  12. $zapytanie = http://www.php.net/mysql_query("SELECT * FROM `uzytkownicy` order by id ASC") or http://www.php.net/die(http://www.php.net/mysql_error());
  13. $wykonaj = http://www.php.net/mysql_num_rows($zapytanie);
  14. http://www.php.net/echo "<p>Wszystkich użytkowników = ".$wykonaj."</p>";
  15. http://www.php.net/echo"<table class='m-tabela'>
  16. <tr>
  17. <td><b>Id:</b> </td>
  18. <td><b>Imię:</b> </td>
  19. <td><b>Nazwisko:</b> </td>
  20. <td><b>Login:</b> </td>
  21. <td><b>Miejscowość:</b> </td>
  22. <td><b>Telefon:</b> </td>
  23. <td><b>Mail:</b> </td>
  24. <td><b>GG:</b> </td>
  25. <td></td>
  26. <td><b>Opcje:</b></td>
  27.  
  28. </tr>";
  29. while($rekord=http://www.php.net/mysql_fetch_array($zapytanie))
  30. {
  31. http://www.php.net/echo"<tr><td> ".$rekord['id']." </td><td> ".$rekord['imie']." </td><td> ".$rekord['nazwisko']." </td><td> ".$rekord['login']."</td><td> ".$rekord['adres']." </td><td> ".$rekord['telefon']." </td><td> ".$rekord['mail']."</td><td><a href='gg:".$rekord['gg']."'><IMG SRC='http://status.gadu-gadu.pl/users/status.asp?id=".$rekord['gg']."&amp; styl=1' ALT='Gadu-Gadu'>".$rekord['gg']."</a></td><td></td><td><a href=\"?dzial=admin&poddzial=edytujusera\"><img src=\"images/b_edit.png\" alt=\"Edytuj\" name=\"Edytuj\" title=\"Edytuj\"></a>&nbsp&nbsp<a href=\"?dzial=admin&poddzial=usunusera\"><img src=\"images/b_drop.png\" alt=\"Usuń\" name=\"Usuń\" title=\"Usuń\"></a></tr>";
  32. }
  33. http://www.php.net/echo"</table>";
  34. ?>


Z góry dziękuje smile.gif

Napisany przez: emtiej 25.02.2010, 11:43:26

przy każdym użytkowniku daj <input type="radial" name="userid" value="tu id użytkownika"> i na dole przycisk edycji który prześle dane formularza do strony odpowiadającej za edycję użytkowników, albo rób przy każdym użytkowniku przyciski usuń/edytuj (co moim zdaniem jest praktyczne, ale za ciekawie nie wygląda)

id użytkowników przesyłaj metodą get ( w linkach, np. http://www.twojastrona.com/admin.php?action=edituser&userid=5 )

Napisany przez: Barcelona 25.02.2010, 11:56:54

Właśnie mam przy każdym userze opcje edycji i usuwania.



I chce pozostać przy tej opcji.

Napisany przez: thek 25.02.2010, 12:53:10

No to najlepiej w takim wypadku przesyłaj owo id_usera poprzez $_GET. W skrypcie zaś sprawdzaj uprawnienia usera wykonującego skrypt i w zależności od tego pozwól na usunięcie lub edycję. Przy edycji oczywiście po sprawdzeniu uprawnień sprawdź parametr user_id i pobierz z bazy dane jeśli możesz. Reszta edycji już typowa. W efekcie plik do edycji wygląda mniej więcej tak:

  1. <?php
  2. $pola = http://www.php.net/array();
  3. $errors = http://www.php.net/array();
  4. if( http://www.php.net/isset( $_GET ) AND !http://www.php.net/empty( $_GET ) AND http://www.php.net/array_key_exists( 'id', $_GET ) ) {
  5. //sprawdzenie $_GET['id'] i ustawienie go jako $pola['id']
  6. //pobranie danych z bazy i wpisanie do $pola
  7. }
  8. if( http://www.php.net/isset( $_POST ) AND !http://www.php.net/empty( $_POST ) AND http://www.php.net/array_key_exists( 'send', $_POST ) ) {
  9. //walidacja danych
  10. //Jeśli są jakieś problemy to wrzuć błąd do $errors['name_pola'] :)
  11. //sprawdzenie czy wszystko OK zasadzie:
  12. if( http://www.php.net/empty( $errors ) ) {
  13. //tutaj update lub insert
  14. } else {
  15. //a tutaj możesz zrobić coś dodatkowo jeśli są błędy, bo wyświetlasz i tak je obok konkretnych pól ich tyczących :)
  16. }
  17. //update jeśli wszystko ok i zrobienie $pola['name_pola'] = $_POST['name_pola'] by wyświetlić owe dane w formie oraz dodatkowo po insercie:
  18. //$pola['id'] = mysql_insert_id();
  19. //co ma na celu wykluczyć choć część dubli a userowi jeśli zauważy błąd udostępnić już edycję tegoż rekordu a nie insert ponownie jeśli to było dodanie nowego.
  20. }
  21. ?>
  22. a tutaj formularz na zasadzie
  23. <form method="post" action="">
  24. <input type="text" name='pole1' value="<?php http://www.php.net/echo $pola['pole1']; ?>" />
  25. <?php
  26. if( http://www.php.net/isset( $errors['pole1'] ) )
  27. http://www.php.net/echo '<p class="error">'.$errors['pole1'].'</p>';
  28. ?>
  29. <input type="hidden" value="<?php http://www.php.net/echo $pola['id']; ?>">
  30. <input type="submit" value="Wyślij" />
  31. </form>
Takie podejście pozwoli Ci ładnie ogarnąć co dzieje się w kodzie bo oddziela logikę od prezentacji, jeśli nie korzystasz z OOP z jakichś względów smile.gif A jak pokombinujesz to zrobić z tego bibliotekę do generowania formularzy już nietrudno. Jeśli się zaś przyjrzysz, to plik ten pozwala na użycie pliku zarówno do edycji jak i tworzenia. Zależnie od tego czy $pola['id'] będzie 0 czy większe od 0 wywołasz albo insert albo update. A obecność prawidłowego $_GET['id'] spowoduje dodatkowo wyciągnięcie z bazy wartości do edycji. Z kolei $_POST ustawione sygnalizuje walidację danych z formularza otrzymanych. Jedynie można się zastanawiać czy pierwsze ma być sprawdzanie GET czy może $_POST, albo zrobienie ifelse by wykluczyć wariowanie z przesłaniem obu, co może być niepożądane.

Napisany przez: Barcelona 27.02.2010, 10:28:15

Dzięki za obszerny tutek. Sorki że dopiero teraz odpisuje ale czasu nie miałem.
Thek Twój tutek jest bardzo dobry i duzo rzeczy objasnia, ale niestety nie dokońca wiem jak to zdziałać. sadsmiley02.gif
Ale i tak wielkie dzięki

Napisany przez: thek 27.02.2010, 14:38:24

Jeśli masz oparte na formularzu podobnym do tego z mojego objasnienia, to wystarczy zrobić na stronie ze wszystkimi userami porobić odpowiednie linki kierujące do strony edycji o odpowiednim parametrze GET['id'].

Napisany przez: Barcelona 27.02.2010, 19:59:56

Dzisiaj pokombinuje, zobaczymy co mi wyjdzie z tego.
Wróce z editem

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)