Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Edycja i usuwanie użytkowników z bazy MySQL, Z poziomu formularza na stronie
Barcelona
post 25.02.2010, 11:29:28
Post #1





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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. die("Nie jestes adminem");
  7. }
  8. include("menu.php");
  9. 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 = mysql_query("SELECT * FROM `uzytkownicy` order by id ASC") or die(mysql_error());
  13. $wykonaj = mysql_num_rows($zapytanie);
  14. echo "<p>Wszystkich użytkowników = ".$wykonaj."</p>";
  15. 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=mysql_fetch_array($zapytanie))
  30. {
  31. 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. echo"</table>";
  34. ?>


Z góry dziękuje smile.gif
Go to the top of the page
+Quote Post
emtiej
post 25.02.2010, 11:43:26
Post #2





Grupa: Zarejestrowani
Postów: 207
Pomógł: 18
Dołączył: 12.04.2009
Skąd: Rypin

Ostrzeżenie: (0%)
-----


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?actio...er&userid=5 )
Go to the top of the page
+Quote Post
Barcelona
post 25.02.2010, 11:56:54
Post #3





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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



I chce pozostać przy tej opcji.
Go to the top of the page
+Quote Post
thek
post 25.02.2010, 12:53:10
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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 = array();
  3. $errors = array();
  4. if( isset( $_GET ) AND !empty( $_GET ) AND 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( isset( $_POST ) AND !empty( $_POST ) AND 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( 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 echo $pola['pole1']; ?>" />
  25. <?php
  26. if( isset( $errors['pole1'] ) )
  27. echo '<p class="error">'.$errors['pole1'].'</p>';
  28. ?>
  29. <input type="hidden" value="<?php 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.

Ten post edytował thek 25.02.2010, 13:01:24


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Barcelona
post 27.02.2010, 10:28:15
Post #5





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
thek
post 27.02.2010, 14:38:24
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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'].


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Barcelona
post 27.02.2010, 19:59:56
Post #7





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Dzisiaj pokombinuje, zobaczymy co mi wyjdzie z tego.
Wróce z editem
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 17:04