Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Co w kodzie jest nie tak
Forum PHP.pl > Forum > Przedszkole
7sekund
Witam,
od niedawna uczę się programowania w PHP i robię przykłady z książki , jednak zatrzymałem się na pewnym przykładzie, bo nie rozumiem gdzie jest błąd w kodzie PHP.
Czy ktoś mógłby pomóc to rozwiązać? Siedzę już drugi dzień nad tym i nie umiem znaleźć błędu.

Poniżej wklejam kod:
  1. <html>
  2. <body>
  3. <h1>ZróbZeMnieElvisa.com</h1>
  4.  
  5. <p><strong>Prywatne:</strong> Do WYLACZNEGO uzytku Edwarda<br />
  6. Napisz i wyslij wiadomosci do osób z listy mailingowej.</p>
  7. <?php
  8. if (isset($_POST['submit'])) {
  9.  
  10. $from = 'przyklad.gmail.com';
  11. $subject = $_POST['subject'];
  12. $text = $_POST['elvismail'];
  13.  
  14. $output_form = false;
  15.  
  16. if((empty($subject)) && (empty($text))) {
  17. echo 'Nie podales tematu ani tresci wiadomosci.<br />';
  18. $output_form = true; }
  19. if ((empty($subject)) && (!empty($text))) {
  20. echo 'Nie podales tematu wiadomosci.<br />';
  21. $output_form = true; }
  22. if ((!empty($subject)) && (empty($text))) {
  23. echo 'Nie wpisales tresci wiadomosci.<br />';
  24. $output_form = true; }
  25. if ((!empty($subject)) && (!empty($text))) {
  26.  
  27. $dbc = mysqli_connect('localhost', 'root', 'xx2', 'elvis_store' )
  28. or die('Blad przy polaczeniu z serwerem MySQL!');
  29.  
  30. $query = "SELECT * FROM email_list";
  31.  
  32. $result = mysqli_query($dbc, $query)
  33. or die('Blad w zapytaniu do bazy danych');
  34.  
  35. while ($row = mysqli_fetch_array($result)) {
  36. $first_name = $row['first_name'];
  37. $last_name = $row['last_name'];
  38.  
  39. $msg = "Drogi $first_name $last_name,\n $text";
  40. $to = $row['email'];
  41. mail($to, $subject, $msg, 'From: ', $from);
  42.  
  43. echo 'Wyslano wiadomosc pod adres: ' . $to . '<br />';
  44. }
  45.  
  46. mysqli_close($dbc);
  47. }
  48. }
  49. else { $output_form = true; }
  50.  
  51. if ($output_form) {
  52. ?>
  53.  
  54. <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
  55. <label for="subject">Temat wiadomosci:</label><br />
  56. <input id="subject" name="subject" value="<?php echo $subject; ?>" type="text" size="30" /> <br />
  57. <label for="elvismail">Tresc wiadomosci:</label><br />
  58. <textarea id="elvismail" name="elvismail" rows="8" cols="40" ><?php echo $text; ?></textarea><br />
  59. <input type="submit" name="submit" value="Wyslij" />
  60. </form>
  61. <?php
  62. }
  63. ?>
  64.  
  65. </body>
  66. </html>


Chodzi o dolny formularz z pamięcią do wpisywania tematu i treści wiadomości, a dokładniej o wartość VALUE w formularzu na dole, bo to tam zgłasza błąd.
Po wycięciu wartości VALUE jest wszystko ok ale chodzi właśnie o to żeby formularz miał pamięć.
Ma ktoś jakieś pomysły jak zapisać VALUE żeby to działało? Siedzę już długo nad tym i wszystko wydaje mi się ok, a jednak zgłasza błąd..:-(
nospor
Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracy



Edytujesz swoj post juz przynajmniej drugi raz i nadal nie napisales w czym problem...

Cytat
Po wycięciu wartości VALUE jest wszystko ok
Czy naprawde tak ciezko napisac co sie dzieje, gdy nie wytniesz tej VALUE? Masz jakis blad?

Cytat
wszystko wydaje mi się ok, a jednak zgłasza błąd..
Wlasnie, jeszcze trzeba nam podac dokladnie jaki blad ci zglasza.
gogomania
Treść błędu i wszystko będzie jasne. smile.gif
7sekund
Aha, błąd wychodzi taki:
Notice: Undefined variable: subject in C:\wamp64\www\Projekt2\sendemail.php on line 56 Call Stack #TimeMemoryFunctionLocation 10.0020245840{main}( )...\sendemail.php:0 " />
gogomania
Cytat(7sekund @ 9.05.2017, 16:13:02 ) *
Aha, błąd wychodzi taki:
Notice: Undefined variable: subject in C:\wamp64\www\Projekt2\sendemail.php on line 56 Call Stack #TimeMemoryFunctionLocation 10.0020245840{main}( )...\sendemail.php:0 " />

To nie błąd tylko notka (Notice) informująca Cię, że nie masz zdefiniowanej zmiennej.

Użyj isset()

Kliknij tu: php
lub tu: Klik
7sekund
Ale przecież na samym początku skryptu jest użyta funkcja isset() więc nadal nie rozumiem...
Tomplus
ale dotyczy innej zmiennej.
Pyton_000
@gogomania Do Twojej wiadomości Notice to też błąd.
gogomania
Cytat(7sekund @ 9.05.2017, 17:10:22 ) *
Ale przecież na samym początku skryptu jest użyta funkcja isset() więc nadal nie rozumiem...


To
  1. <?php echo $subject; ?>


Zmień na
  1. <?php if (isset($subject)) { echo htmlentities($subject); } ?>


Analogicznie dla drugiej zmiennej to samo.
7sekund
gogomania dzięki , to bardzo mi pomogło:-)


Witam po długiej przerwie.
Chciałem zapytać, bo zapomniałem, jak wstawić tutaj do treści posta cały kod html wraz z php tak, jak to kiedyś zrobiłem wyżej??
Niestety nie da rady tu skopiować funkcją kopiuj spod prawego przycisku myszy ani przez ctrl+v ... Dlaczego?
Szukałem w pomocy i regulaminie forum ale niestety tego nie znalazłem...
dublinka
Masz od tego formatowanie. Naciskasz odpowiednie buttony z menu lub wstawiasz to ręcznie

7sekund
  1.  
  2. if (isset($output_form)) {
  3.  
  4. ?>
  5.  
  6. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  7. <label for="subject">Temat wiadomosci:</label><br />
  8. <input id="subject" name="subject" type="text" value="<?php if (isset($subject)) { echo htmlentities($subject); } ?>" size="30" /><br />
  9. <label for="elvismail">Tresc wiadomosci:</label><br />
  10. <textarea id="elvismail" name="elvismail" rows="8" cols="40"><?php if (isset($text)) { echo htmlentities($text); } ?></textarea><br />
  11. <input type="submit" name="submit" value="Wyslij" />
  12. </form>
  13. <?php } ?>


Teraz już się udaje wklejać kod, a więc wkleiłem ten, który moim zdaniem nie działa prawidłowo.
Bardzo proszę o podpowiedź, czemu muszę zdefiniować zmienną $subject i $text ? Przecież one są zdefiniowane już w <input name="subject" ... >

To ma być formularz autoreferencyjny, natomiast po wypełnieniu jednego z dwóch pól, zamiast działania funkcji empty i !empty , pojawia się na nowo czysty formularz....
dublinka
Do wysylania danych przez formularz sluzy tablica $_POST lub $_GET
Wiec nie $zmienna tylko $_POST['zmienna']
7sekund
dublinka: bardzo Ci dziękuję. Bardzo pomogłaś:-)

Mam jeszcze pewien fragment kodu, który mi nie działa:

  1. <?php
  2.  
  3. if (isset($_POST['Wyslij'])) {
  4. $from = 'przyklad@gmail.com';
  5. $subject = $_POST['subject'];
  6. $text = $_POST['elvismail'];
  7. $output_form = false;
  8.  
  9. if ((empty($subject)) && (empty($text))) { // $subject i $text nie mają wartości
  10. echo 'Nie podałeś ani tematu ani treści wiadomości!';
  11. $output_form = true;
  12. }
  13. if ((!empty($subject)) && (empty($text))) { // $text nie ma wartości
  14. echo 'Nie podałeś treści wiadomości!';
  15. $output_form = true;
  16. }
  17. if ((empty($subject)) && (!empty($text))) { // $subject nie ma wartości
  18. echo 'Nie podałeś tematu wiadomości!';
  19. $output_form = true;
  20. }
  21. }
  22. else {
  23. $output_form = true ;
  24. }
  25. if ((!empty($subject)) && (!empty($text))) { // Wszystko ok, można wysłać wiadomość
  26.  
  27. $dbc = mysqli_connect('localhost', 'user', 123'', 'elvis_store')
  28. or die ('Nie udało się połączyć z serwerem');
  29.  
  30. $query = "SELECT * FROM email_list";
  31. $result = mysqli_query($dbc, $query)
  32. or die ('Błąd zapytania do bazy danych!');
  33.  
  34. while ($row = mysqli_fetch_array($result)) {
  35. $first_name = $row['first_name'];
  36. $last_name = $row['last_name'];
  37. $to = $row['email'];
  38. $msg = "Witaj $first_name $last_name, \n . $text";
  39.  
  40. mail($to, $subject, $msg . 'From: ' . $from);
  41.  
  42. echo 'Wysłano wiadomość do: ' . $to . '<br />';
  43. }
  44. mysqli_close($dbc);
  45. }
  46. if (isset($output_form)) {
  47.  
  48. ?>


Czy coś się da z tym zrobić, żeby formularz reagował w zadany sposób , odpowiednio do sytuacji?

Uczę się dopiero na przykładzie książki i jestem właściwie na samym początku. Proszę o wskazówkę, co tu jest nie tak w kodzie, bo siedzę nad tym skryptem już drugi dzień :-( . Pewnie robię gdzieś podstawowe błędy, ale nie wiem jak sobie we własnym zakresie sprawdzać , gdzie ten błąd tkwi.
dublinka
Ale co nie dziala.

Twoj button submit ma inna nazwe niz "Wyslij". To "submit" czyli

  1. if (isset($_POST['submit']))
7sekund
Jeszcze raz dzięki dublinka . Teraz formularz działa w pełni.

Kurcze, nie wiem skąd mi się wzięło, że nazwę funkcji przycisku wysyłania podstawiamy z value, a nie z name.

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.