Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP] Problem z wyszukiwarką
Forum PHP.pl > Forum > Przedszkole
malymakar
  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.


piaseq
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.
Wicepsik
  1. $_POST[$podstawaszukania]
  2. $_POST[$haslo]


Czemu tak to zapisałeś ?
malymakar
Heh jakoś tak wyszło z rozpędu sciana.gif Ale teraz po usunięciu $ cały czas wyświetla mi 0 ;/
adrianozo
A spróbuj takiego zapytania:

  1. SELECT * FROM sklep WHERE $_POST['podstawaszukania'] LIKE '%{$_POST['haslo']}%'
gigzorr
sprawdź zapytanie
  1. print_r($query);


i chyba mysql_real_escape_string ta jest lepsza;p
malymakar
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);
Wicepsik
  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.
malymakar
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...
Wicepsik
  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.
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.