Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyszukiwarka [metoda POST]
pyruu
post 30.12.2008, 10:42:12
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.12.2008

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


Witam, czy zauważacie jakieś błędy??.



  1. [code]
  2. <?php
  3. $_POST['phrase']=trim($_POST['phrase']);
  4. IF(empty($_POST['phrase']))
  5. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  6. else
  7. {
  8. include("funkcje.php");
  9. include("glob_zm.php");
  10. $eror = polacz_z_baza();
  11. mysql_select_db("baza");
  12. IF($stan=='szukaj') {
  13. $zapytanie = "SELECT * FROM `Dane_Zlec` where im like '%{$_POST['phrase']}%' \"%$znajdz%\" or nr_spr_c like '%{$_POST['phrase']}%' \"%$znajdz%\" and Dane_Zlec.Kod='prov' LIMIT 100 ";
  14. $wykonaj = mysql_query($zapytanie);
  15. echo('<table height="430" border="1" align="center" class="styl2" >');
  16. while ($row = mysql_fetch_array($wykonaj))
  17. {
  18. echo('<tr align="center">');
  19. echo('<td width="120" height="30"> <strong>Imie i nazwisko </strong></td>');
  20. echo('<td width="120" ><strong>Ulica:</strong></td>');
  21. echo('<td width="120" ><strong>Nr.domu:</strong></td>');
  22. echo('<td width="120" ><strong>Nr mieszkania:</strong></td>');
  23. echo('<td width="120" ><strong>Miasto:</strong></td>');
  24. echo('<td width="120" ><strong>Kod pocztowy:</strong></td>');
  25. echo('<td width="120" ><strong>Pesel:</strong></td>');
  26. echo('<tr align="center">');
  27. echo('<td width="115" height="30">'.$row[8].'</td>');
  28. echo('<td width="120" >'.$row[15].'</td>');
  29. echo('<td width="120" >'.$row[16].'</td>');
  30. echo('<td width="120" >'.$row[17].'</td>');
  31. echo('<td width="120" >'.$row[14].'</td>');
  32. echo('<td width="120" >'.$row[13].'</td>');
  33. echo('<td width="120" >'.$row[10].'</td>');
  34. }
  35. }
  36. else {
  37. echo "</table><center>
  38. <form method=\"post\" action=\"dotestu3.php\">
  39. <input type=\"text\" name=\"znajdz\" size=\"20\">
  40.  
  41. <input type=\"submit\" value=\"szukaj\" name=\"stan\"></form></center>";
  42. }
  43. echo('</table>');
  44. echo mysql_error()
  45. ?>
Go to the top of the page
+Quote Post
Riklaunim
post 30.12.2008, 10:51:01
Post #2





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


tak, wkleiłeś dodatkowy BBtag "code" tongue.gif

A tak na poważnie to nie $znajdz, a $_POST['znajdz'] poza tym:
- dorzuć walidację/filtrowanie zmiennych wstawianych do zapytania (patrz SQL Injection)
- echo może używać ' a nie tylko ", przez co nie musisz slaszować \ każdego cudzysłowu w kodzie HTML drukowanym przez echo winksmiley.jpg


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
ziqzaq
post 30.12.2008, 11:02:42
Post #3





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


1. Odwołujesz się do $_POST['phrase'] zanim sprawdzisz czy istnieje. A do tego zauważyłem, że nie masz w formularzu takiego pola ('phrase') więc warunek if zawsze zwróci TRUE.
  1. <?php
  2. $_POST['phrase']=trim($_POST['phrase']);
  3. if(empty($_POST['phrase']))
  4. ?>

2. Skąd się bierze zmienna $stan? - nie twierdzę, że błąd ale nie widać tego - no chyba że masz register_globals=on a to się liczy jako błąd tongue.gif.
  1. <?php
  2. // ...
  3. if($stan=='szukaj') {
  4. // ...
  5. ?>

3. Wyświetl sobie to zapytanie bo chyba jest walnięte (masz tu też zmienną $znajdz - skąd się bierze?):
  1. <?php
  2. $zapytanie = "SELECT * FROM `Dane_Zlec` where im like '%{$_POST['phrase']}%' \"%$znajdz%\" or nr_spr_c like '%{$_POST['phrase']}%' \"%$znajdz%\" and Dane_Zlec.Kod='prov' LIMIT 100 ";
  3. echo $zapytanie; // <======== SPRAWDZ TO
  4. ?>

4. Zapytanie i błędy mysql spróbuj tak:
  1. <?php
  2. $wykonaj = mysql_query($zapytanie);
  3. if ($wykonaj) {
  4. // Tutaj wyświetlaj dane znalezione
  5. }
  6. else echo mysql_error(); // Jesli coś poszlo nie tak to wtedy error
  7. ?>

5. Dalej zmienne. Masz zmienną $_POST['znajdz']:
  1. <?php
  2. <input type=&#092;"text\" name=\"znajdz\" size=\"20\">
  3. ?>

A z tego co widzę to szukasz $_POST['phrase'] a zmienna $znajdz (a prawidłowo $_POST['znajdz']) prawdopodobnie psuje ci zapytanie bo jest tam wrzucona chyba w losowe miejsce.
  1. <?php
  2. $zapytanie = "SELECT * FROM `Dane_Zlec` where im like '%{$_POST['phrase']}%' \"%$znajdz%\" or nr_spr_c like '%{$_POST['phrase']}%' \"%$znajdz%\" and Dane_Zlec.Kod='prov' LIMIT 100 ";
  3. ?>


Ten post edytował ziqzaq 30.12.2008, 11:03:51
Go to the top of the page
+Quote Post
pyruu
post 30.12.2008, 12:04:41
Post #4





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.12.2008

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


dzięki za odpowiedz, ale kurcze w dalszym ciągu mi to nie działa, nie ukrywam, (bo widać smile.gif), że zielony jestem. Po modyfikacjach wyskakuje mi błąd: parse error, unexpected T_STRING in ostatnia linia. a ja chce tylko kolesia znaleźć po imieniu i nazwisku, kurde jakie to trudne tongue.gif


  1. <?php
  2. $_POST['phrase']=trim($_POST['phrase']);
  3. IF(empty($_POST['phrase']))
  4. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  5. else
  6. {
  7. include("funkcje.php");
  8. include("glob_zm.php");
  9. $eror = polacz_z_baza();
  10. mysql_select_db("cobradore");
  11.  
  12. $zapytanie = "SELECT * FROM `Dane_Zlec` where imie like '%{$_POST['znajdz']}%' or nr_spr_c like '%{$_POST['znajdz']}%' and Dane_Zlec.KodWierz='prov' LIMIT 100 ";
  13. $wykonaj = mysql_query($zapytanie);
  14. IF ($wykonaj) {
  15. echo('<table height="430" border="1" align="center" class="styl2" >');
  16. while ($row = mysql_fetch_array($wykonaj))
  17. {
  18. echo('<tr align="center">');
  19. echo('<td width="120" height="30"> <strong>Imie i nazwisko :</strong></td>');
  20. echo('<td width="120" ><strong>Ulica:</strong></td>');
  21. echo('<td width="120" ><strong>Nr.domu:</strong></td>');
  22. echo('<td width="120" ><strong>Nr mieszkania:</strong></td>');
  23. echo('<td width="120" ><strong>Miasto:</strong></td>');
  24. echo('<td width="120" ><strong>Kod pocztowy:</strong></td>');
  25. echo('<td width="120" ><strong>Pesel:</strong></td>');
  26. echo('<tr align="center">');
  27. echo('<td width="115" height="30">'.$row[8].'</td>');
  28. echo('<td width="120" >'.$row[15].'</td>');
  29. echo('<td width="120" >'.$row[16].'</td>');
  30. echo('<td width="120" >'.$row[17].'</td>');
  31. echo('<td width="120" >'.$row[14].'</td>');
  32. echo('<td width="120" >'.$row[13].'</td>');
  33. echo('<td width="120" >'.$row[10].'</td>');
  34. echo('</tr>');
  35.  
  36. }
  37. }
  38. else {
  39. echo ('<h1>Szukaj w bazie</h1>');
  40. echo ('<form method="post" action="dotestu3.php">');
  41. echo ('<table width=90% align=center>');
  42. echo ('<tr><td>Szukaj:</td><td><input type=text name='phrase' size=60 maxlength=255></td></tr>');
  43. echo ('<td></td><td><input type=submit value=znajdz></td></tr>');
  44. echo ('</table>');
  45. echo ('</form> ');
  46. }
  47. echo('</table>');
  48. echo mysql_error()
  49. ?>
Go to the top of the page
+Quote Post
ziqzaq
post 30.12.2008, 12:35:14
Post #5





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


Jest lepiej, ale... dry.gif
Nie sprawdzałem dokładnie kodu ale rzuciło mi się w oczy (aż zabolało) że:
teraz wysyłasz z formularza zmienną 'phrase'
  1. <?php
  2. echo ('<h1>Szukaj w bazie</h1>');
  3. echo ('<form method="post" action="dotestu3.php">');
  4. echo ('<table width=90% align=center>');
  5. echo ('<tr><td>Szukaj:</td><td><input type=text name='phrase' size=60 maxlength=255></td></tr>');
  6. echo ('<td></td><td><input type=submit value=znajdz></td></tr>');
  7. echo ('</table>');
  8. echo ('</form> ');
  9. ?>

a w zapytaniu używasz zmiennej 'znajdz' sciana.gif
  1. <?php
  2. $zapytanie = "SELECT * FROM `Dane_Zlec` where imie like '%{$_POST['znajdz']}%' or nr_spr_c like '%{$_POST['znajdz']}%' and Dane_Zlec.KodWierz='prov' LIMIT 100 ";
  3. ?>

A z tym parse error to nie odpowiem ci bo jak takiego błędu nie znajdziesz sam to z każdą pierdółką na forum będziesz leciał. Wszystko masz napisane w błędzie - zlokalizuj go i popraw.

Polecam ci przysiąść nad swoim kodem i na spokojnie go analizować dotąd aż go zrozumiesz.
Możesz zrobić podejście "krok po kroku". Nie rób wszystkiego na raz (szukanie) tylko najpierw sprawdź (print_r($_POST)) czy dostajesz z formularza dobre dane i nie szukaj tylko wyświetl to co dostałeś z formularza. Jeśli jest ok. To wtedy bierz się za pisanie SQL, pobieranie danych z bazy i ich wyświetlanie.

PS Dobra rada.
Używaj bbcode dla PHP a nie SQL, przynajmniej lepiej ten kod będzie wyglądał.

Ten post edytował ziqzaq 30.12.2008, 12:37:33
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: 28.04.2024 - 05:54