Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z przekazywaniem wartości
Forum PHP.pl > Forum > Przedszkole
Kaczoki
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
mortus
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).
Kaczoki
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.