Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Problem z przekazywaniem wartości, tablice w pętli while i foreach
-Kaczoki-
post
Post #1





Goście







Witam wszystkich forumowiczów!

Napisałem prosty skrypt, który oferowałby możliwość edycji rekordów w bazie danych. Problem występuje z przekazaniem wartości z pętli while do pętli foreach, w której następuje upgrade tabeli. Spróbowałem rzutować wartości używając polecenia (array), jednakże nie pomogło.
  1. <?php
  2. require_once 'constants.php';
  3.  
  4. $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  5. if (isset($_POST['submit'])) {
  6. $first_name_up = $_POST['first_name'];
  7. $last_name_up = $_POST['last_name'];
  8. $email_up = $_POST['email'];
  9. $output_form = false;
  10.  
  11. foreach ((array) $_POST['todelete'] as $id_up) {
  12.  
  13. //tu musi byc formularz update
  14.  
  15. if (!empty($first_name_up) && !empty($last_name_up) && !empty($email_up)) {
  16.  
  17.  
  18.  
  19. $query = "UPDATE email_list SET first_name='$first_name_up', last_name='$last_name_up',email='$email_up, WHERE id=$id_up";
  20. mysqli_query($dbc, $query) or die('Błąd w zapytaniu do bazy danych');
  21. echo("Dodano klienta $first_name_up $last_name_up");
  22. } elseif (empty($first_name_up) && empty($last_name_up) && empty($email_up)) {
  23. echo 'Próbujesz wysłać pustą wiadomość';
  24. $output_form = true;
  25. } elseif (empty($first_name_up)) {
  26. echo 'Brak imienia';
  27. $output_form = true;
  28. } elseif (empty($last_name_up)) {
  29. echo 'Brak nazwiska';
  30. $output_form = true;
  31. } elseif (empty($emai_up)) {
  32. echo 'Brak adresu email';
  33. $output_form = true;
  34. } else {
  35. $output_form = true;
  36. }
  37.  
  38. if ($output_form) {
  39. ?>
  40.  
  41. <p>
  42. <strong>Dodaj klienta do bazy danych</strong>.</p>
  43. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
  44. <p> <label for="firstname">Imię: </label>
  45. <input type="text" id="first_name" name="first_name" value="<?php echo $first_name_up; ?>" /><br /></p>
  46. <p>Nazwisko: <input type="text" id="last_name" name="last_name" value="<?php echo $last_name_up; ?>"/><br /></p>
  47. <p> <label for="email">Adres e-mail: </label>
  48. <input type="text" id="email" name="email" value="<?php echo $email_up; ?>" /><br /></p>
  49.  
  50. <p> <input type="submit" value="Wyślij" name="submit" /></p>
  51. </form>
  52. <?php
  53. }
  54. }
  55. ////////////////////
  56.  
  57.  
  58.  
  59. echo 'Zaktualizowano dane klienta.<br />';
  60. }
  61. // Wyświetla dane klientów z polami do wyboru edytowanych wierszy.
  62. $query = "SELECT * FROM email_list";
  63. $result = mysqli_query($dbc, $query);
  64. while ($row = mysqli_fetch_array($result)) {
  65. echo '<input type="radio" value="' . $row['id'] . '" name="todelete[]" />';
  66. echo $row['first_name'];
  67. echo ' ' . $row['last_name'];
  68. echo ' ' . $row['email'];
  69. echo '<br />';
  70. }
  71. ?>
  72. <input type="submit" name="submit" value="Edytuj" />
  73. </form>


Z góry dziękuję za pomoc i pozdrawiam
Go to the top of the page
+Quote Post
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Trochę namieszałeś w tym kodzie, ale:
1. drugi formularz (ten do edycji danych użytkownika) nie ma tagu otwierającego,
2. używasz pola input typu radio, co oznacza, że możesz edytować tylko jednego użytkownika, a to z kolei oznacza, że nie potrzebujesz tablicy do przekazywania identyfikatora tego użytkownika (inaczej ma się sprawa z polem input typu checkbox),
3. musisz oddzielić dodawanie i edycję użytkownika, bo w obu przypadkach warunek z linii 5 będzie spełniony, ale w przypadku edycji w liniach 6, 7, 8 pojawią się błędy typu notice,
4. ogólnie to edycja powinna odbywać się trochę inaczej:
- wybierasz użytkownika i klikasz przycisk edytuj, po czym przechodzisz do odpowiedniego fragmentu kodu,
- na podstawie przekazanego id pobierasz dane użytkownika z bazy danych i wypełniasz nimi formularz (istotne jest przekazanie identyfikatora użytkownika do pola input typu hidden),
- teraz masz możliwość edycji danych, edycje możesz kontynuować lub jej zaniechać (wypadałoby jakiś odnośnik do Anuluj),
- i teraz po kliknięciu przycisku dajmy na to Zmień, czy Zapisz przechodzisz do fragmentu kodu, w którym wykonujesz UPDATE.

Brakuje Ci dwóch z wymienionych wyżej kroków, ale przede wszystkim musisz poprawić kod pod względem czytelności i użyteczności (w sensie oddzielenia akcji dodawania użytkowników od akcji polegającej na edycji danych wyżej wspomnianych).
Go to the top of the page
+Quote Post
-Kaczoki-
post
Post #3





Goście







Wielkie dzięki za pomoc smile.gif tak już myślałem żeby trochę przemodelować ten skrypt. Wyświetlę wszytko selectem i nie będę miał problemów z przekazaniem wartości do edycji.

pozdrawiam
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 Aktualny czas: 22.08.2025 - 01:07