Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Isset nie reaguje tak jakby, shoutbox
Glukozamina
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


Witam. Stworzyłem sobie takiego małego mojego shoutboxa i się zastanawiam dlaczego po kliknieciu dodaj nadal sie wykonuje... tzn. dodaje nowe wpisy mimo iż ma polecenie aby tego nie robił gdy pole tresc jest puste. 2. Jak zrobić, żeby podczas odswieżania nie dodawał sie za każdym razem ten wpis ? 3. Jak zrobić ,że gdy klikne na np. pole nick to nazwa tego pola(napis nick) mi zniknie automatycznie z formularza ?

  1. <form method="GET" action="index.php">
  2. <input type="text" name="nick" value="nick" size="20">
  3. <input type="text" name="tresc" size="40">
  4. <input type="submit" value="Dodaj">
  5. </form>
  6.  
  7.  
  8. <?php
  9.  
  10. function dodawanie($id, $nick, $tresc, $time, $ip){
  11.  
  12. /*sprawdzenie poprawości przekazanych danych*/
  13.  
  14.  
  15. if($tresc == ''){
  16. echo("Brak danych. Proszę wypełnić pole: Treść.");
  17. return;
  18. }
  19.  
  20. }
  21. if($id == '') $id = 'NULL';
  22.  
  23. $time=(date("H:i:s"));
  24. $ip=($_SERVER['REMOTE_ADDR']);
  25. $nick=($_GET['nick']);
  26. $tresc=($_GET['tresc']);
  27.  
  28.  
  29.  
  30. /*Nawiązanie połączenia z bazą*/
  31.  
  32. if (!$db_lnk = @mysql_connect("x", "x", ":)")){
  33. echo('Wystąpił błąd podczas próby połączenia z serwerem MySQL...<BR>');
  34. return;
  35. }
  36.  
  37. if(!@mysql_select_db('x')){
  38. echo('Wystąpił błąd podczas wyboru bazy danych: biblioteka<BR>');
  39. return;
  40. }
  41.  
  42. /*Utworzenie i wykonanie zapytania*/
  43.  
  44. $query = "INSERT INTO shoutbox VALUES(";
  45. $query .= "'$id', '$nick', '$tresc', '$time', '$ip'";
  46. $query .= ")";
  47.  
  48.  
  49.  
  50. if(!mysql_query($query, $db_lnk)){
  51. echo 'Wystąpił błąd: zapytanie zostało odrzucone...<br />Zapytanie: <pre>' . $query . '</pre>Odpowiedź MySQL: <pre>' . mysql_error( $db_lnk ) . '</pre>';
  52. return;
  53. }
  54.  
  55.  
  56.  
  57. /*Pobranie informacji o liczbie wstawionych wierszy*/
  58.  
  59. $rowsNo = mysql_affected_rows($db_lnk);
  60.  
  61. echo("Dziękuje za pozostawioną wiadomość . <br>");
  62. echo("Liczba dodanych rekordów: $rowsNo<br>");
  63.  
  64.  
  65. /*Zamknięcie połączenia z bazą*/
  66.  
  67. if(!@mysql_close()){
  68. echo('Wystąpił błąd podczas zamykania połączenia z serwerem MySQL...<br>');
  69. }
  70.  
  71. if(isSet($_GET['tresc'])){ /*<--------------------------- tutaj. to jest dorbze ?*/
  72. dodawanie($_GET['$id'], $_GET['$nick'], $_GET['tresc'], $_GET['$time'], $_GET['$ip']);
  73. }
  74. else{
  75. echo("Niepoprawne dane! Wypełnij wszystkie pola.");
  76. }
  77.  
  78.  
  79. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
H4eX
post
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 1.07.2010

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


1. Zapoznaj się z IsSet.
2. Dodać warunek sprawdzania czy jest już taki wpis.
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




ad1) isset sprawdza istnienie zmiennej, nawet pustej! Tak więc w linii 73 nie isset($_GET['tresc']), ale !empty($_GET['tresc']) lub $_GET['tresc'] != ''
ad2) sprawdź, czy kilka ostatnich wpisów usera nie zawiera już tego zwrotu.
ad3) zdarzenie ustawienia aktywności dla określonego pola to focus, utrata aktywności to blur. Połącz te informacje, użyj JS i ciesz się.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Glukozamina
post
Post #4





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


  1. if (!empty($_GET['tresc'])){
  2. dodawanie($_GET['$id'], $_GET['$nick'], $_GET['tresc'], $_GET['$time'], $_GET['$ip']);
  3. }
  4. else{
  5. echo("Niepoprawne dane!");
  6. }


Aktualnie wygląda to własnie tak. Jednak efekt jest dalej ten sam... tzn. wpis sie dodaje mimo iż pole tresc jest puste
Go to the top of the page
+Quote Post
H4eX
post
Post #5





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 1.07.2010

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


Wyprintuj get -> tresc i zobacz czy, aby na pewno jest pusty, bo warunek jest jak najbardziej poprawny.
Go to the top of the page
+Quote Post
Glukozamina
post
Post #6





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


Z printowałem to i wyświetla sie to co wpisze jak zostawie bez niczego to nic się nie pokazuje.
Go to the top of the page
+Quote Post
kapuch
post
Post #7





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

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


Nie patrzylem w kod z racji poznej godz. ale moim zdaniem ani warunek !empty, ani isset nie pomoze, gdy odswiezamy strone, dlatego ze w adresie te zmienne nadal sa ustawione.
Mam trzy rozwiazania:
1. Ustawiasz ciasteczko podczas dodawania wpisu, ktore zablokuje na jakis czas danego uzytkownika
2. Sprawdzasz czy dany wpis juz nie istnieje, tzn czy nie jest dokladnie taki sam, jak wczesniejsze (zle rozwiazanie, bo bedzie blokowac krotkie wpisy typu "ok", "tak", ktore moze dodac kilka uzytkownikow).
3. Moim zdaniem najlepsze rozwiazanie, to po dodaniu wpisu albo przekierowujesz klienta do $_SERVER['http_referer'] (chociaz ta zmienna jest 'wadliwa', wiec mozna ja "podrobic" sesjami), albo na strone glowna - wtedy w linku nie bedzie ustawionych zmiennych winksmiley.jpg
BTW. Uzywaj do tego POSTa a nie GETa.

Ten post edytował kapuch 22.07.2010, 00:26:10


--------------------
Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
Go to the top of the page
+Quote Post
stefik4
post
Post #8





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


Możesz jeszcze linijke:

  1. <form method="GET" action="index.php">

zastąpić na:

  1. <form method="post" action="index.php">


linijke:
  1. <input type="submit" value="Dodaj">


na
  1. <input type="submit" value="Dodaj" name="dodaj">


a warunek zrobić taki:
  1. if(isset($_POST['dodaj']))
Go to the top of the page
+Quote Post
Glukozamina
post
Post #9





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


  1. <form method="post" action="index.php">
  2. <input type="text" name="nick" value="nick" size="20">
  3. <input type="text" name="tresc" size="40">
  4. <input type="submit" value="Dodaj" name="dodaj">
  5. </form>
  6.  
  7. <?php
  8.  
  9. function dodawanie($id, $nick, $tresc, $time, $ip){
  10.  
  11. /*sprawdzenie poprawości przekazanych danych*/
  12.  
  13. if($tresc == ''){
  14. echo("Brak danych. Proszę wypełnić pole: Treść.");
  15. return;
  16. }
  17.  
  18. }
  19.  
  20.  
  21.  
  22. if($id == '') $id = 'NULL';
  23. $time = (date("H:i:s"));
  24. $ip = ($_SERVER['REMOTE_ADDR']);
  25. $nick=($_POST['nick']);
  26. $tresc=($_POST['tresc']);
  27. /*Nawiązanie połączenia z bazą*/
  28.  
  29. /*xxx*/
  30.  
  31. /*Utworzenie i wykonanie zapytania*/
  32.  
  33. $query = "INSERT INTO shoutbox VALUES(";
  34. $query .= "'$id', '$nick', '$tresc', '$time', '$ip'";
  35. $query .= ")";
  36.  
  37.  
  38.  
  39. if(!mysql_query($query, $db_lnk)){
  40. echo 'Wystąpił błąd: zapytanie zostało odrzucone...<br />Zapytanie: <pre>' . $query . '</pre>Odpowiedź MySQL: <pre>' . mysql_error( $db_lnk ) . '</pre>';
  41. return;
  42. }
  43.  
  44.  
  45.  
  46. /*xxx*/
  47.  
  48. if(isSet($_POST['dodaj'])){ /*<--------------------------- tutaj. to jest dorbze ?*/
  49. dodawanie($_POST['$id'], $_POST['nick'], $_POST['tresc'], $_POST['$time'], $_POST['$ip']);
  50. }
  51.  
  52.  
  53. ?>


Aktualnie jest tak... Dalej jest to samo smile.gif bez tresci nick sie dodaje. Nie wiem zabardzo do czego to ma być if(isset($_POST['dodaj'])).

xxx - > mniej ważne rzeczy (polaczenie mysql i rozlaczenie z baza)
Go to the top of the page
+Quote Post
stefik4
post
Post #10





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


Yyyyy nawias } of funkcji kończy sie juz w 18 linijce a powinien sie konczyc w 44 tak mi się wydaje
Go to the top of the page
+Quote Post
Glukozamina
post
Post #11





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 27.04.2008

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


Tym nawiasem też się próbowalem bawić jednak nic dobrego z tego nie wychodziło. Raz nic się nie dodawało raz jakiś błąd teraz jak dałem tam gdzie poleciłes to wyskoczyło :
Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in /var/www/sites/yoyo.pl/b/s//shoutbox.php on line 59
Go to the top of the page
+Quote Post
stefik4
post
Post #12





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


W tym kodzie dwa posty wyżej nigdzie nie widze funkcji mysql_affected_rows(), więc ci nie powiem co jest źle.

Spróboj tak:

  1. <?php
  2.  
  3. function dodawanie($id, $nick, $tresc, $time, $ip){
  4.  
  5. /*sprawdzenie poprawości przekazanych danych*/
  6.  
  7. if($tresc == ''){
  8. return("Brak danych. Proszę wypełnić pole: Treść.");
  9. }
  10.  
  11.  
  12.  
  13. if($id == '') $id = 'NULL';
  14. $time = (date("H:i:s"));
  15. $ip = ($_SERVER['REMOTE_ADDR']);
  16. $nick=($_POST['nick']);
  17. $tresc=($_POST['tresc']);
  18. /*Nawiązanie połączenia z bazą*/
  19.  
  20. /*xxx*/
  21.  
  22. /*Utworzenie i wykonanie zapytania*/
  23.  
  24. $query = "INSERT INTO shoutbox VALUES('$id', '$nick', '$tresc', '$time', '$ip')";
  25.  
  26.  
  27.  
  28. if(!mysql_query($query, $db_lnk)){
  29. echo 'Wystąpił błąd: zapytanie zostało odrzucone...<br />Zapytanie: <pre>' . $query . '</pre>Odpowiedź MySQL: <pre>' . mysql_error( $db_lnk ) . '</pre>';
  30.  
  31. }
  32. }
  33.  
  34.  
  35. /*xxx*/
  36.  
  37. if(isSet($_POST['dodaj'])){ /*<--------------------------- tutaj. to jest dorbze ?*/
  38. dodawanie($_POST['$id'], $_POST['nick'], $_POST['tresc'], $_POST['$time'], $_POST['$ip']);
  39. }
  40.  
  41.  
  42. ?>
  43. <form method="post" action="index.php">
  44. <input type="text" name="nick" value="nick" size="20">
  45. <input type="text" name="tresc" size="40">
  46. <input type="submit" value="Dodaj" name="dodaj">
  47. </form>
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: 20.08.2025 - 06:29