Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MSSQL][PHP] Problem z wyszukiwarką
malymakar
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.07.2009

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


  1.  
  2. <h3>Wyszukiwarka produktów spożywczych</h3>
  3.  
  4. Szukaj na podstawie:<br/>
  5. <form action="wyniki.php" method="post">
  6. <select name="podstawaszukania">
  7. <option name="nazwaproduktu">Nazwa produktu</option>
  8. <option name="numerproduktu">Numer produktu</option>
  9. <option name="cenaproduktu">Cena produktu</option>
  10. </select>
  11. <br/><br/>
  12. Szukane hasło:<br/>
  13. <input type="text" name="haslo"/><br/>
  14. <input type="submit" value="Szukaj"/>
  15. </form>
  16.  
  17. </body>
  18. </html>


  1. <?php
  2.  
  3. if (!$podstawaszukania || !$haslo) {
  4. echo("Nie zostało wpisane żadne hasło do wyszukiwarki!");
  5. }
  6.  
  7. $_POST['podstawaszukania'] = addslashes($_POST['podstawaszukania']);
  8. $_POST['haslo'] = addslashes($_POST['haslo']);
  9.  
  10. $q = mysql_connect("localhost", "root", "") or die("Błąd w połączeniu z serwerem!");
  11. $q = mysql_select_db("nauka") or die("Błąd w połączeniu z bazą danych!");
  12.  
  13. $query = "select * from sklep where '$_POST[$podstawaszukania]' like '$_POST[$haslo]'";
  14. $result = mysql_query($query);
  15. $num_results = mysql_num_rows($result);
  16.  
  17. echo("Ilosc znalezionych produktow: ".$num_results. "<br/>");
  18. for ($i=0; $i<$num_results; $i++) {
  19. $row = mysql_fetch_array($result);
  20. echo($i+1);
  21. echo(stripslashes($row['nazwaproduktu']));
  22. echo(", Cena: ");
  23. echo(stripslashes($row['cenaproduktu']));
  24. echo("zł, nr: ");
  25. echo(stripslashes($row['nrproduktu']));
  26. echo(". <br/>");
  27. }
  28. ?>


Cokolwiek wpisałbym w wyszukiwarkę [nawet coś w style as32dasd32] to i tak wyświetla mi wszystkie rekordy z tabeli.


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
piaseq
post
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 25
Dołączył: 6.09.2008
Skąd: Warszawa

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


Próbowałeś sprawdzić jak dokładnie wygląda zapytanie przed wykonaniem w bazie i czy wykonanie go w np. phpmyadminie daje taki sam rezultat?

Tak przy okazji poczytaj o PDO, funkcje mysql_* są trochę przestarzałe. Przy odpowiednim użyciu PDO załatwi za Ciebie escape'owanie zmiennych.
Go to the top of the page
+Quote Post
Wicepsik
post
Post #3





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. $_POST[$podstawaszukania]
  2. $_POST[$haslo]


Czemu tak to zapisałeś ?

Ten post edytował Wicepsik 13.07.2010, 19:36:22
Go to the top of the page
+Quote Post
malymakar
post
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.07.2009

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


Heh jakoś tak wyszło z rozpędu (IMG:style_emoticons/default/sciana.gif) Ale teraz po usunięciu $ cały czas wyświetla mi 0 ;/
Go to the top of the page
+Quote Post
adrianozo
post
Post #5





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


A spróbuj takiego zapytania:

  1. SELECT * FROM sklep WHERE $_POST['podstawaszukania'] LIKE '%{$_POST['haslo']}%'
Go to the top of the page
+Quote Post
gigzorr
post
Post #6





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


sprawdź zapytanie
  1. print_r($query);


i chyba mysql_real_escape_string ta jest lepsza;p

Ten post edytował gigzorr 14.07.2010, 08:07:33
Go to the top of the page
+Quote Post
malymakar
post
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.07.2009

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


Adrianozo ta zmiana generuje mi błąd:
Cytat
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\WebServ\httpd-users\TEST\wyniki.php on line 14



gigzorr wyświetla:
Cytat
select * from sklep where 'Numer produktu' like '%2%'

Czyli coś z moim warunkiem jest nie tak, bo powinno być przykładowo 'nrproduktu', a nie 'Numer produktu'.
Teoretycznie wydaje mi się, ze powinno wszystko grać, bo mam
  1. <option name="numerproduktu">Numer produktu</option>


Jakieś pomysły?


O to chodziło?
  1. mysql_real_escape_string($podstawaszukania);


Ten post edytował malymakar 14.07.2010, 10:06:35
Go to the top of the page
+Quote Post
Wicepsik
post
Post #8





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. $query = 'SELECT * FROM sklep WHERE '.$_POST['podstawaszukania'].' LIKE "%'.$_POST['haslo'].'%"';


A teraz zapraszam do lektury LIKE i sprawdź co powinno brać w cudzysłowy.
Go to the top of the page
+Quote Post
malymakar
post
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.07.2009

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


Dzieki...
ale teraz dostaję błąd
Cytat
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\WebServ\httpd-users\TEST\wyniki.php on line 18


A zapytanie nadal brzmi
Cytat
SELECT * FROM sklep WHERE Numer produktu LIKE "%2%"
;/ hmmmm...




Odświeżam temat...
Go to the top of the page
+Quote Post
Wicepsik
post
Post #10





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. <option value="nazwaproduktu">Nazwa produktu</option>
  2. <option value="numerproduktu">Numer produktu</option>
  3. <option value="cenaproduktu">Cena produktu</option>


Zmień name na value i powiedz czy działa.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 07:46