Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Błąd z zapamiętywaniem danych w formularzu
boy76
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 27.01.2010

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


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ą?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
toel
post
Post #2





Grupa: Zarejestrowani
Postów: 97
Pomógł: 11
Dołączył: 2.02.2010

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


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ą.
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
IceManSpy
post
Post #4





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


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ł.


--------------------
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: 19.08.2025 - 21:04