Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Filtrowanie danych
Forum PHP.pl > Forum > Przedszkole
blaskognia
Co zrobić, by w podanym nizej kodzie dane rzeczywiście były filtrowane?
I jakich tagów użyć, by ENTERY (znaki powstałe po wciśnieciu ENTER), które w bazie sa widoczne normalnie na stronie przekształcane były w
Kod
<br />


Problem polega na tym, że dane do bazy danych są pobierane nie wiem dlaczego nie ze zdefiniowanych zmiennych tylko bezpośrednio z formularza. Próbowałem zmieniać nazwy tych zdefiniowanych zmiennych (jednocześnie odpowiednio zmieniając je w zapytaniu) ale wtedy okazywało się, że w ogóle ich nie widzi.

  1. <?php
  2. if($send=='Wyslij') {
  3. $zapytanie = "INSERT INTO komentarze SET idnotki='$idnotki', imie='$imie', email='$email', gadu='$gadu', tresc='$tresc', data='$data', ip='$adres', host='$host', przegladarka='$przegladarka'";
  4. $wykonaj = mysql_query ($zapytanie);
  5. $idnotki = $_post['idnotki'];
  6. $imie = strip_tags($_POST['imie']);
  7. $email = strip_tags($_POST['email']);
  8. $gadu = strip_tags($_POST['gadu']);
  9. $tresc = strip_tags(nl2br($_POST['tresc']));
  10. $adres = $_POST['adres'];
  11. $host = $_POST['host'];
  12. $przegladarka = $_POST['przegladarka'];
  13. Header ('Location: http://www.ogien.webd.pl/komentarze.php?nr='.$no.'');}
  14. else {
  15. echo "
  16. <form method=\"post\" action=\"komentarze.php?nr=$no\">
  17.  
  18. <center>
  19. <table border=\"0\" width=\"300\" bordercolorlight=\"#000000\" cellspacing=\"1\" cellpadding=\"1\">
  20. <tr><td valign=\"top\">
  21. Zwą mnie:
  22. </td><td>
  23. <input type=\"text\" name=\"imie\" size=\"20\">
  24. </td></tr><tr><td valign=\"top\">
  25. E-mail:
  26. </td><td>
  27. <input type=\"text\" name=\"email\" size=\"20\">
  28. </td></tr><tr><td valign=\"top\">
  29. Gadu:</td><td><in      put type=\"text\" name=\"gadu\" size=\"20\">
  30. </td></tr><tr><td valign=\"top\">
  31. Rzeknę:</td><td><textarea type=\"text\" name=\"tresc\" rows=\"10\" cols=\"20\"></textarea></td></tr>
  32.  
  33. <tr><td><input type=\"hidden\" value=\"$no\" name=\"idnotki\">
  34. <input type=\"hidden\" value=\"".$_SERVER['REMOTE_ADDR']."\" name=\"adres\">
  35. <input type=\"hidden\" value=\"".gethostbyaddr($_SERVER['REMOTE_ADDR'])."\" name=\"host\">
  36. <input type=\"hidden\" value=\"".$_SERVER['HTTP_USER_AGENT']."\" name=\"przegladarka\">
  37. </td></tr></table>
  38.  
  39. <table border=\"0\" width=\"300\" bordercolorlight=\"#000000\" cellspacing=\"1\" cellpadding=\"1\">
  40. <tr><td><center><input type=\"submit\" value=\"Wyslij\" name=\"send\"></cenetr></td></tr></table>
  41. </center>
  42.  
  43. </form>";}
  44. ?>


poprawiam
---
nospor
nospor
Cytat
I jakich tagów użyć, by ENTERY (znaki powstałe po wciśnieciu ENTER), które w bazie sa widoczne normalnie na stronie przekształcane były w br
nl2br

  1. <?php
  2. $tresc = strip_tags(nl2br($_POST['tresc']));
  3. ?>
najpierw zamieniasz entery na <br /> a potem usuwasz te znaczniki. gdzie sens i logika?


Cytat
Problem polega na tym, że dane do bazy danych są pobierane nie wiem dlaczego nie ze zdefiniowanych zmiennych tylko bezpośrednio z formularza. Próbowałem zmieniać nazwy tych zdefiniowanych zmiennych (jednocześnie odpowiednio zmieniając je w zapytaniu) ale wtedy okazywało się, że w ogóle ich nie widzi.
a tego to nie kumam o co ci biega

ps: uzywaj wlasciwego bbcode
blaskognia
Jak się nie czyta to się nie rozumie. Jako ktoś kto chciał pomóc powinieeś zauważyć, że ten kod to podawanie danych DO bazy danych. Wtedy nastęouje filtrowanie, a wciskane entery nie są pomijane. Podczas odczytu z bazy danych można użyc skryptu zamieniającego je na <br>

A jeśli chodzi o resztę to na samej górze są zdefiniowane zmienne, które czerpią a raczej powinny czerpac dane z formularza. W zapytaniu obecne są nazwy zmiennych, które to powinny odnosić się do tych zdefiniowanych wyżej zmiennych, ale tak nie jest. Zapytanie czerpie dane nie ze zdefiniowanych zmiennych tylko z formularza bezpośrednio. A mi chodzi o to, by czerpały je włąsnie ze zmiennych, przy których jest filtrowanie.

By to sprawdzić zrobiłem tak. Do każdej zmiennej zdefiniowanej dodałem literę a i to samo zrobiłem w zapytaniu. o tym zapytanie nie widziało żadnych zmiennych, a więc zadam pytanie inaczej.

Gdzie umieścić zmienne zdefiniowane, by czerpały dane z formularza a zapytanie z tych zdefiniowanych zmiennych.
nospor
Cytat
Jako ktoś kto chciał pomóc powinieeś zauważyć, że ten kod to podawanie danych DO bazy danych. Wtedy nastęouje filtrowanie, a wciskane entery nie są pomijane. Podczas odczytu z bazy danych można użyc skryptu zamieniającego je na <br>
a czy ja ci sie czepialem do bazy?Jak się nie czyta to się nie rozumie winksmiley.jpg Ja sie czepialem tej linijki:
  1. <?php
  2. $tresc = strip_tags(nl2br($_POST['tresc']));
  3. ?>
zamienisz nowe linie na br a potem te br usuwasz przy pomocy strip_tags. ponawiam wiec pytanie: gdzie sens i logika?

Cytat
W zapytaniu obecne są nazwy zmiennych, które to powinny odnosić się do tych zdefiniowanych wyżej zmiennych, ale tak nie jest. Zapytanie czerpie dane nie ze zdefiniowanych zmiennych tylko z formularza bezpośrednio. A mi chodzi o to, by czerpały je włąsnie ze zmiennych, przy których jest filtrowanie.
No chlopie, a czemu sie dziwisz?Przeciez najpierw generujesz zapytanie a dopiero potem zmienne, ktore w tym zapytaniu wykorzystujesz smile.gif Nie ta kolejność

pozatym nie:
  1. <?php
  2. $idnotki = $_post['idnotki'];
  3. ?>

a:
  1. <?php
  2. $idnotki = $_POST['idnotki'];
  3. ?>
blaskognia
A jaka powinna być właściwa w nich kolejność?

  1. <?php
  2. if($send=='Wyslij') {
  3. $zapytanie = "INSERT INTO komentarze SET idnotki='$aidnotki', imie='$aimie', email='$aemail', gadu='$agadu', tresc='$atresc', data='$adata', ip='$aadres', host='$ahost', przegladarka='$aprzegladarka'";
  4. $wykonaj = mysql_query ($zapytanie);
  5. $aidnotki = $_POST['idnotki'];
  6. $aimie = strip_tags($_POST['imie']);
  7. $aemail = strip_tags($_POST['email']);
  8. $agadu = strip_tags($_POST['gadu']);
  9. $atresc = nl2br(strip_tags($_POST['tresc']));
  10. $aadres = $_POST['adres'];
  11. $ahost = $_POST['host'];
  12. $aprzegladarka = $_POST['przegladarka'];
  13. Header ('Location: http://www.ogien.webd.pl/komentarze.php?nr='.$no.'');}
  14. else {
  15. echo "
  16. <form method=\"post\" action=\"komentarze.php?nr=$no\">
  17.  
  18. <center>
  19. <table border=\"0\" width=\"300\" bordercolorlight=\"#000000\" cellspacing=\"1\" cellpadding=\"1\">
  20. <tr><td valign=\"top\">
  21. Zwą mnie:
  22. </td><td>
  23. <input type=\"text\" name=\"imie\" size=\"20\">
  24. </td></tr><tr><td valign=\"top\">
  25. E-mail:
  26. </td><td>
  27. <input type=\"text\" name=\"email\" size=\"20\">
  28. </td></tr><tr><td valign=\"top\">
  29. Gadu:</td><td><input type=\"text\" name=\"gadu\" size=\"20\">
  30. </td></tr><tr><td valign=\"top\">
  31. Rzeknę:</td><td><textarea type=\"text\" name=\"tresc\" rows=\"10\" cols=\"20\"></textarea></td></tr>
  32.  
  33. <tr><td><input type=\"hidden\" value=\"$no\" name=\"idnotki\">
  34. <input type=\"hidden\" value=\"".$_SERVER['REMOTE_ADDR']."\" name=\"adres\">
  35. <input type=\"hidden\" value=\"".gethostbyaddr($_SERVER['REMOTE_ADDR'])."\" name=\"host\">
  36. <input type=\"hidden\" value=\"".$_SERVER['HTTP_USER_AGENT']."\" name=\"przegladarka\">
  37. </td></tr></table>
  38.  
  39. <table border=\"0\" width=\"300\" bordercolorlight=\"#000000\" cellspacing=\"1\" cellpadding=\"1\">
  40. <tr><td><center><input type=\"submit\" value=\"Wyslij\" name=\"send\"></cenetr></td></tr></table>
  41. </center>
  42.  
  43. </form>";
  44. }
  45. ?>



Spójrz prosze też na ten kod od zamiany ENTERÓW na BRy... zmieniłem kolejnośc, tzn, że najpierw filtruje potem je zamienia, czy tak można?
nospor
no a zastanow sie. skoro do wygenerowania zapytania uzywasz pewnuch zmiennych, musi wiec je najpierw utworzyc a dopiero potem zapytanie

  1. <?php
  2.  
  3. $aidnotki = $_POST['idnotki'];
  4. $aimie = strip_tags($_POST['imie']);
  5. $aemail = strip_tags($_POST['email']);
  6. $agadu = strip_tags($_POST['gadu']);
  7. $atresc = nl2br(strip_tags($_POST['tresc']));
  8. $aadres = $_POST['adres'];
  9. $ahost = $_POST['host'];
  10. $aprzegladarka = $_POST['przegladarka'];
  11.  
  12. $zapytanie = "INSERT INTO komentarze SET idnotki='$aidnotki', imie='$aimie', email='$aemail', gadu='$agadu', tresc='$atresc', data='$adata', ip='$aadres', host='$ahost', przegladarka='$aprzegladarka'";
  13. $wykonaj = mysql_query ($zapytanie);
  14.  
  15. ?>


ps: widze ze poprawiles "sens i logikę" smile.gif Aczkolwiek do bazy powienies wkladac tekst nie zaminiony na br. dopiero przy wyswietlaniu danych z bazy powienienes zamieniac entery na br.

edit:
o jaka mila odmiana z:
Cytat
Jak się nie czyta to się nie rozumie.

na:
Cytat
Spójrz prosze
smile.gif
na przyszlosc nie krzycz ze ktos ci czegos nie czyta, dopoki sam nie przeczytasz winksmiley.jpg
blaskognia
Eh... przeprszam za tamto :- )

Jeszcze jedno... czy ma jakieś znaczenie to, że w bazie są <br>? Strona jest teraz wyświetlana poprawnie.

Na razie raczkuję i trochę zbyt wiele rzeczy wydaje mi się pozornie oczywistych... dzięki za pomoc :- )
nospor
Cytat
Jeszcze jedno... czy ma jakieś znaczenie to, że w bazie są <br>?
Zawsze to pare znakow wiecej w bazie niz by mialy byc entery smile.gif

pozatym uwazam ze w tabeli lepiej trzymac oryginal, a przy wyswietlaniu dopiero formatowac. ale jesli to nie przeszkadza to trzymaj se jak chcesz
blaskognia
Ok... jeszcze raz wielkie dzięki :- )
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.