Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Komentarze i problem z empty
ryba303
post 27.05.2008, 20:15:59
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.11.2007

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


Najpierw kodzik

  1. <?php
  2.  
  3. if ($_POST['wys']) {
  4. header("Location: wyslane.php");
  5. }
  6.  
  7. $os1 = $_POST['osoba'];
  8. $os2 = $_POST['wpis'];
  9.  
  10. if(strlen($os1) > 15) {
  11. header("Location: blad.php");
  12. break;
  13. }
  14. elseif(strlen($os2) > 500) {
  15. header("Location: blad.php");
  16. break;
  17. }
  18. ?>
  19.  
  20. <html>
  21. <head>
  22. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  23. <title>Komentarze</title>
  24. </head>
  25. <body>
  26. <form method="POST">
  27. <table border="0" align="center">
  28. <tr><td><b>Osoba:</b><br> <input type="text" name="osoba">
  29.  <input type=hidden value="send2" name='send2'></td></tr>
  30. <tr><td><b>Wpis:</b><br>
  31.  <textarea name="wpis" cols=45 rows=4 warp="VIRTUAL"></textarea>
  32.  
  33. </td></tr>
  34. <tr><td align="center" colspan="2">
  35. <input type=hidden value="wys" name='wys'>
  36. <input type="submit" value="wyślij">
  37. </tr></td>
  38. </table>
  39. </form>
  40. <?php
  41.  
  42. $li = 1;
  43. if ($li =){ echo "<HR>";}
  44. ?>
  45.  
  46. <?php
  47.  
  48. $link = mysql_connect("localhost", "root", "krasnal")
  49. or die ("Sprawdz poloaczenie z serwerem");
  50.  
  51. mysql_select_db("baza", $link)
  52. or die (mysql_error());
  53. mysql_query('SET CHARSET latin2');
  54.  
  55.  
  56.  
  57. $osoba = addslashes(nl2br(htmlspecialchars($_POST['osoba'])));
  58. $wpis = addslashes(nl2br(htmlspecialchars($_POST['wpis'])));
  59.  
  60. if ($osoba && $wpis) { 
  61.  
  62.  $query = "INSERT INTO komentarze (data, osoba ,wpis) " .
  63. "VALUES (now(), '$osoba', '$wpis' );";
  64.  $wynik = mysql_query ($query)
  65. or die ("Nieporawne zapytanie : ". mysql_error());
  66.  }
  67.  
  68. if(!empty($_POST['osoba']) && !empty($_POST['wpis'])) {
  69.  
  70. $wynik = mysql_query ("SELECT * FROM ksiegagosci ORDER BY data
  71.  DESC;");
  72.  
  73.  
  74. while ($wynik && $rekord = mysql_fetch_assoc($wynik)) {
  75.  
  76. echo "<table border=\"1\" align=\"center\" font-size=\"1px\" width=\"300\"><tr><td><b>Skomentował:&nbsp;".stripslashes($rekord['osoba'])."</td></tr><tr><td>".
  77. stripslashes($rekord['wpis'])."</td></tr>
  78. <I><tr><td align=\"right\" >".$rekord['data']."</I></td></<tr>\n</table>";
  79.  
  80. $sawpisy = 1;
  81. }
  82. } else { echo "Uzupełnij wszytkie pola !!"; }
  83. ?>
  84.  
  85. </body>
  86. </html>


Niestety gdy wysyłam z pustymi polami to mnie przerzuca do wyslane.php :/

gdy natomiast pozbędę sie
  1. <?php
  2. if ($_POST['wys']) { 
  3. header("Location: wyslane.php"); 
  4. }
  5. ?>


to gyd wysyłam z pustymi polami czy polem to nic sie nie dzieje a ja jak zupełnie to wali mi komunikat ze nie uzupełniłem wszystkich pól.


Próbwałem też z
[/php]
<?php
if (isset($_POST['wys'])) ...?>
[/php]


Tez nic. Zależy mi na tym żeby mnie po dodaniu komentarze przerzucalo (bo to mi załatwia problem z odswiezaniem) na to wyslane.php ale gdy nikt nic nie wpisze to żeby sypnął błedem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
hiszpanespaniol
post 27.05.2008, 20:25:44
Post #2





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


w tym 1-szym if'e nie sprawdzasz, czy POST zawiera jakiekolwiek informacje. sprawdzasz tylko czy się POSTnęło smile.gif więc zadziała zwsze jak wyślesz formularz.
można dodać jeszcze if'a typu isset albo !empty


--------------------
Go to the top of the page
+Quote Post
piotrooo89
post 27.05.2008, 20:25:56
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




może tu daj:

  1. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">


--------------------
Go to the top of the page
+Quote Post
ryba303
post 27.05.2008, 20:37:37
Post #4





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.11.2007

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


na początku zmieniłem
  1. <?php
  2. if (isset($_POST['submit'])){
  3. if ($_POST['send']) {
  4. header("Location: wyslane.php");
  5. }
  6. }
  7. ?>


skutkiem jest to że gdy wciskam "wyślij" z putymi polami nie przerzuca mnie ani nic poprostu tylko strona sie odswieża ale też gdy coś napisze wyskakuje mi uzupełnij pola dry.gif

a tam probowałem róznie
albo tak

  1. <?php
  2. ...
  3. if(!empty($_POST['osoba']) && !empty($_POST['wpis'])) {
  4. echo " Uzupenil"; } else {
  5. $wynik = mysql_query ("SELECT * FROM ksiegagosci ORDER BY data
  6.  DESC;");
  7.  
  8. while ($wynik && $rekord = mysql_fetch_assoc($wynik)) {
  9.  
  10. echo "<table border=\"1\" align=\"center\" font-size=\"1px\" width=\"300\"><tr><td><b>Skomentował:&nbsp;".stripslashes($rekord['osoba'])."</td></tr><tr><td>".
  11. stripslashes($rekord['wpis'])."</td></tr>
  12. <I><tr><td align=\"right\" >".$rekord['data']."</I></td></<tr>\n</table>";
  13.  
  14. $sawpisy = 1;
  15. }
  16. }
  17. ...
  18. ?>


albo tak

  1. <?php
  2. ...
  3. if(!empty($_POST['osoba']) && !empty($_POST['wpis'])) {
  4. $wynik = mysql_query ("SELECT * FROM ksiegagosci ORDER BY data
  5.  DESC;");
  6.  
  7. while ($wynik && $rekord = mysql_fetch_assoc($wynik)) {
  8.  
  9. echo "<table border=\"1\" align=\"center\" font-size=\"1px\" width=\"300\"><tr><td><b>Skomentował:&nbsp;".stripslashes($rekord['osoba'])."</td></tr><tr><td>".
  10. stripslashes($rekord['wpis'])."</td></tr>
  11. <I><tr><td align=\"right\" >".$rekord['data']."</I></td></<tr>\n</table>";
  12.  
  13. $sawpisy = 1;
  14. }
  15. } else { echo " Uzupenil"; }
  16. ...
  17. ?>



niestety tęz nie daje efektów tylko tyke że mnie nie przerzuca teraz gdy wciskam wyslij przy pustych polach.Teraz czas do pracy bede walczył jutro z tym.
Go to the top of the page
+Quote Post
hiszpanespaniol
post 27.05.2008, 20:43:28
Post #5





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


ja jestem zielony więc pewnie się mylę, ale w ttym drugim wypisie if sprawdza czy dane z POST NIE są puste. !empty chyba właśnie to znaczy. więc zamiast "uzupełnij" powinieneś tam mieć "uzupełnione", czy jakąś swoją funkcję

Ten post edytował hiszpanespaniol 27.05.2008, 20:44:36


--------------------
Go to the top of the page
+Quote Post
ryba303
post 27.05.2008, 20:50:52
Post #6





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.11.2007

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


nie myslisz sie tylko robiłem to teraz metoda kopiuj wklej i tak wyszlo ale jak by nie było sprawdzałem z empty i jak i z !empty nadal nic worriedsmiley.gif dry.gif
Go to the top of the page
+Quote Post
piotrooo89
post 27.05.2008, 20:56:15
Post #7


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




dziwną pętle robisz:

  1. <?php
  2. while ($wynik && $rekord = mysql_fetch_assoc($wynik))
  3. ?>


co ona ma na celu?


--------------------
Go to the top of the page
+Quote Post
ryba303
post 28.05.2008, 06:47:55
Post #8





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.11.2007

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


Wyswietlenie danych z bazy ale w sumie racja może sie tam obyć bez tego $wynik na poczatku. Tak czy siak nadal nie moge sobie z z tamtym poradzic sadsmiley02.gif
Go to the top of the page
+Quote Post
erix
post 28.05.2008, 08:20:40
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




W złej kolejności robisz. Najpierw zapisuj, potem przekierowywuj.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ryba303
post 28.05.2008, 13:01:31
Post #10





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.11.2007

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


ale to
  1. <?php
  2. if ($_POST['send']) {
  3. header("Location: wyslane.php");
  4. }
  5. ?>


jesli wstawie gdzies indziej przed echo, print itp to mi wali błąd

Ten post edytował ryba303 28.05.2008, 13:01:49
Go to the top of the page
+Quote Post
erix
post 28.05.2008, 18:41:40
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zrób SAM ZAPIS na początku wszystkiego. Bo trudno, żeby cokolwiek dalej się wykonało, jak przeglądarka jest przekierowana na inny URL...

Jak nie możesz sobie poradzić z komunikatem wysyłanym przed header" title="Zobacz w manualu PHP" target="_manual, to zapisuj go do jakiejś zmiennej i potem wypisuj.

Jest jeszcze jedno rozwiązanie, ale Ci go celowo nie podaję, bo to by było OBEJŚCIE, a nie rozwiązanie.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
ryba303
post 30.05.2008, 06:41:08
Post #12





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 24.11.2007

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


Pomijając narazie to nieszczęsne dla mnie hreader chciałem zrobic najpierw te same komunikaty i no niby sie udało ale nie moge sie pozbyc jednej rzeczy

  1. <?php
  2. //lacznie z bd
  3. $link = mysql_connect("localhost\"\"root\"\"krasnal\")
  4. or die ("Sprawdz poloaczenie z serwerem");
  5. //uaktywnianie bd
  6.  
  7. mysql_select_db("cwphp", $link)
  8. or die (mysql_error());
  9.  
  10. //kodowanie
  11. mysql_query('SET CHARSET latin2');
  12.  
  13. // ##zapis do bd i sprawdzenie czy zostaly wypelnione pola
  14. $osoba = addslashes(nl2br(htmlspecialchars($_POST['osoba'])));
  15. $wpis = addslashes(nl2br(htmlspecialchars($_POST['wpis'])));
  16.  
  17. if (empty($osoba)){ echo "Nie podales nicku&#092;"; }
  18. elseif (empty($wpis)) {echo " Nic nie wpisales";
  19. } else {
  20.  
  21. if ($osoba && $wpis) { 
  22.  
  23.  $query = "INSERT INTO ksiegagosci (data, osoba ,wpis) \" .
  24. "VALUES (now(), '$osoba', '$wpis' );";
  25.  $wynik = mysql_query ($query)
  26. or die ("Nieporawne zapytanie : &#092;". mysql_error());
  27.  }
  28. }
  29. // ##
  30.  
  31.  
  32. //### wys tego co jest w bd
  33. $wynik = mysql_query ("SELECT * FROM ksiegagosci ORDER BY data
  34.  DESC;");
  35.  
  36. while ($rekord = mysql_fetch_assoc($wynik)) {
  37.  echo "<hr>";
  38. echo "<table border="0&#092;" align=\"center\" font-size=\"1px\" width=\"300\"><tr><td><b>Skomentował:&nbsp;".stripslashes($rekord['osoba'])."</td></tr><tr><td>".
  39.  stripslashes($rekord['wpis'])."</td></tr>
  40. <I><tr><td align=\"right\" >".$rekord['data']."</I></td></<tr>\n</table>";
  41. }
  42.  
  43. //###
  44. ?>


Wyswietla mi komunikat z tego if'a
  1. <?php
  2. ...if (empty($osoba)){ echo "Nie podałes nicku\"; }...
  3. ?>


ale sprawdzac sprawdza, chcialem najpierw z tym sie uporać a pozniej to nieszczesne header [/b]


Dobra to wyżej juz z bani
  1. <?php
  2. if ($_POST){
  3. if (empty($osoba)){ echo "Nie podałes nicku"; }
  4. elseif (empty($wpis)) {echo " Nic nie wpisales";}
  5. else {
  6. if ($osoba && $wpis) { // sa informacje do wpisania do komentarzy
  7.  
  8.  $query = "INSERT INTO ksiegagosci (data, osoba ,wpis) " .
  9. "VALUES (now(), '$osoba', '$wpis' );";
  10.  $wynik = mysql_query ($query)
  11. or die ("Nieporawne zapytanie : ". mysql_error());
  12.  }
  13. //jezeli jest juz ksiega, trzeba ja wypisac , nizaleznie od tego czy jest wpis
  14.  
  15.  }
  16.  }
  17. ?>



teraz jeszcze kochane header dziś niestety juz nie mam czasu bo znów do pracy ale jutro jeszcze tu wpadne winksmiley.jpg smile.gif





EDIT

Zmieniłem na takie coś :

  1. <?php
  2. $link = mysql_connect("localhost", "root", "krasnal")
  3. or die ("Sprawdz poloaczenie z serwerem");
  4.  
  5. mysql_select_db("cwphp", $link)
  6.  or die (mysql_error());
  7. mysql_query('SET CHARSET latin2');
  8.  
  9.  
  10.  
  11. $osoba = addslashes(nl2br(htmlspecialchars($_POST['osoba'])));
  12. $wpis = addslashes(nl2br(htmlspecialchars($_POST['wpis'])));
  13.  
  14.  
  15. if ($osoba && $wpis) { // sa informacje do wpisania do komentarzy
  16.  
  17.  $query = "INSERT INTO ksiegagosci (data, osoba ,wpis) " .
  18. "VALUES (now(), '$osoba', '$wpis' );";
  19.  $wynik = mysql_query ($query)
  20. or die ("Nieporawne zapytanie : ". mysql_error());
  21. }
  22.  
  23.  
  24. if ($_POST['send']){
  25. if ($_POST){
  26. if (empty($osoba)){ echo "Nie podałes nicku"; }
  27. elseif (empty($wpis)) {echo " Nic nie wpisales";}
  28. }
  29. header("Location: wyslane.php");
  30.  
  31.  }
  32.  
  33. ...
  34. ?>



Gdy wypełnie pola przerzcuca na strone z komunikatem że dodano, gdy nie wypełnie jakiegoś pola wyskoczy komunikat, że nie wypełniono jakiegoś pola czyli w sumie działa tylko header jest przed "echo" i razem z komunikatem, że nie podano nikcu jest jeszcze piękny komunikat związany z header sadsmiley02.gif

Ten post edytował ryba303 30.05.2008, 06:42:03
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:44