Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błąd z zapamiętywaniem danych w formularzu
Forum PHP.pl > Forum > Przedszkole
boy76
Dzięki error_reporting(E_ALL); ini_set('display_errors','1'); mogłem zobaczyć jakie są błędy....

Kod działa ok, ale bez zapamiętywania danych w formularzu.

  1. <?php
  2. ini_set('display_errors','1');
  3.  
  4. if (isset($_POST['submit'])) {
  5. $from = 'edward@zrobzemnieelvisa.com';
  6. $subject = $_POST['subject'];
  7. $text = $_POST['elvismail'];
  8. $output_form = false;
  9.  
  10. if (empty($subject) && empty($text)) {
  11. // Wiadomo, że pola $subject i $text są puste.
  12. echo 'Nie podałeś tematu i treści wiadomości.<br />';
  13. $output_form = true;
  14. }
  15.  
  16. if (empty($subject) && (!empty($text))) {
  17. echo 'Nie podałeś tematu wiadomości.<br />';
  18. $output_form = true;
  19. }
  20.  
  21. if ((!empty($subject)) && empty($text)) {
  22. echo 'Nie podałeś treści wiadomości.<br />';
  23. $output_form = true;
  24. }
  25. }
  26. else {
  27. $output_form = true;
  28. }
  29.  
  30. if ((!empty($subject)) && (!empty($text))) {
  31. $dbc = mysqli_connect('data.zrobzemnieelvisa.com', 'edward', 'theking', 'elvis_store')
  32. or die('Brak połączenia z serwerem MySQL.');
  33.  
  34. $query = "SELECT * FROM email_list";
  35. $result = mysqli_query($dbc, $query)
  36. or die('Błąd w zapytaniu do bazy danych.');
  37.  
  38. while ($row = mysqli_fetch_array($result)){
  39. $to = $row['email'];
  40. $first_name = $row['first_name'];
  41. $last_name = $row['last_name'];
  42. $msg = "Drogi $first_name $last_name,\n$text";
  43. mail($to, $subject, $msg, 'From:' . $from);
  44. echo 'Wysłano e-mail pod adres ' . $to . '<br />';
  45. }
  46.  
  47. mysqli_close($dbc);
  48. }
  49.  
  50. if ($output_form) {
  51. ?>

  1. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  2. <label for="subject">Temat wiadomości:</label><br />
  3. <input id="subject" name="subject" type="text" size="30" /><br />
  4. <label for="elvismail">Treść wiadomości:</label><br />
  5. <textarea id="elvismail" name="elvismail" rows="8" cols="40"></textarea><br />
  6. <input type="submit" name="submit" value="Wyślij" />
  7. </form>

  1. }


Ale jak wpiszę:
  1. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  2.  
  3. <label for="subject">Temat wiadomości:</label><br />
  4.  
  5. <input id="subject" name="subject" type="text" value="<?php echo $subject; ?>" size="30" /><br /> line 70
  6.  
  7. <label for="elvismail">Treść wiadomości:</label><br />
  8.  
  9. <textarea id="elvismail" name="elvismail" rows="8" cols="40"><?php echo $text; ?></textarea><br /> line 72
  10.  
  11. <input type="submit" name="submit" value="Wyślij" />
  12.  
  13. </form>


To pojawiają się komunikaty:
Notice: Undefined variable: subject in head first-projekty/rozdzial4/moj/sendemail.php on line 70

Notice: Undefined variable: text in /head first-projekty/rozdzial4/moj/sendemail.php on line 72

Czemu tak jest? Co oznaczają?
toel
Używasz zmiennych, których nigdy nie zdefiniowałeś.
Bo jeśli są one zdefiniowane w warunku , to gdy ten nie jest spełniony = zmienne nie istnieją.
I właśnie o tym informuje Cię komunikat.

Zainicjuj je sobie przed warunkiem pustą wartością.
nospor
No zmienne nie istnieją. Wyraźnie masz to napisane.
Jesli nie wyslesz forma to nie zrobisz:
$subject = $_POST['subject'];
a jak tak nie zrobisz to zmienna $subject nie istnieje.
IceManSpy
Undefined variable = niezdefiniowana zmienna. Zrób sobie na początku if, który sprawdza czy jest pusta wartość np $_POST['subject']. Jeśli tak to nadaj im początkową wartość, jeśli nie, to pokaż to co użytkownik wpisał.
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.