Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Co w kodzie jest nie tak
7sekund
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


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..:-(

Ten post edytował 7sekund 9.05.2017, 14:26:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
nospor
post
Post #2





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




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





Grupa: Zarejestrowani
Postów: 51
Pomógł: 1
Dołączył: 7.02.2013

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


Treść błędu i wszystko będzie jasne. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
7sekund
post
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


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 " />

Ten post edytował 7sekund 9.05.2017, 15:14:06
Go to the top of the page
+Quote Post
gogomania
post
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 1
Dołączył: 7.02.2013

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


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
Go to the top of the page
+Quote Post
7sekund
post
Post #6





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


Ale przecież na samym początku skryptu jest użyta funkcja isset() więc nadal nie rozumiem...

Ten post edytował 7sekund 9.05.2017, 16:10:36
Go to the top of the page
+Quote Post
Tomplus
post
Post #7





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


ale dotyczy innej zmiennej.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


@gogomania Do Twojej wiadomości Notice to też błąd.
Go to the top of the page
+Quote Post
gogomania
post
Post #9





Grupa: Zarejestrowani
Postów: 51
Pomógł: 1
Dołączył: 7.02.2013

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


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.

Ten post edytował gogomania 9.05.2017, 19:22:16
Go to the top of the page
+Quote Post
7sekund
post
Post #10





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


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

Ten post edytował 7sekund 20.02.2022, 13:29:02
Go to the top of the page
+Quote Post
dublinka
post
Post #11





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Masz od tego formatowanie. Naciskasz odpowiednie buttony z menu lub wstawiasz to ręcznie

Go to the top of the page
+Quote Post
7sekund
post
Post #12





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


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

Ten post edytował 7sekund 20.02.2022, 14:59:09
Go to the top of the page
+Quote Post
dublinka
post
Post #13





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Do wysylania danych przez formularz sluzy tablica $_POST lub $_GET
Wiec nie $zmienna tylko $_POST['zmienna']
Go to the top of the page
+Quote Post
7sekund
post
Post #14





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


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.

Ten post edytował 7sekund 20.02.2022, 19:15:09
Go to the top of the page
+Quote Post
dublinka
post
Post #15





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Ale co nie dziala.

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

  1. if (isset($_POST['submit']))


Ten post edytował dublinka 20.02.2022, 19:50:08
Go to the top of the page
+Quote Post
7sekund
post
Post #16





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 9.05.2017

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


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.

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:04