Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Komentarze i problem z empty
Forum PHP.pl > Forum > Przedszkole
ryba303
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.
hiszpanespaniol
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
piotrooo89
może tu daj:

  1. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
ryba303
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.
hiszpanespaniol
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ę
ryba303
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
piotrooo89
dziwną pętle robisz:

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


co ona ma na celu?
ryba303
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
erix
W złej kolejności robisz. Najpierw zapisuj, potem przekierowywuj.
ryba303
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
erix
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.
ryba303
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
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.