Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odświeżanie po kliknięciu
Forum PHP.pl > Forum > PHP
wariat12
Witam,

mam taki filtr towarów, który po wybraniu checkboxa wysyła POSTem zmienną i wrzuca do zapytania SQL, problem pojawia się tutaj, że program pokazuje cały czas pierwszą wersję zapytania, czyli tak jakby bez filtrów, a gdy robie sobię podgląd zapytania, to widzę, że zmienia się po przyciśnięciu submit.

  1. $sql = "SELECT cecha_id_towaru FROM cecha WHERE 1 = 1 ";
  2. if ($nazwa_dzial) {
  3. $sql .= " AND cecha_dzial = '$nazwa_dzial' OR cecha_dzial_ii = '$nazwa_dzial' OR cecha_dzial_iii = '$nazwa_dzial'";
  4. }
  5. if (isset($_POST["typ"])) {
  6. $typ_sql = $_POST["typ"];
  7. $sql .= " AND cecha_typ='$typ_sql'";
  8. }


nospor
No skoro wyswietlone zapytanie jest zmienione to raczej jest. Problem wiec ze albo ty tego zapytania nie przekazujesz do wykonania albo plamy na Sloncu.
Pokaza caly kod, wlacznie z formularzem
wariat12
Przepraszam, myślałem, że może popełniam jakiś oczywisty i bardzo częsty błąd, stąd to pytanie. Może uda Ci się coś wyczytać z tego:

  1. echo "<form action='?' method='post'>";
  2.  
  3. echo "Typ: <br />";
  4. $wynika = mysql_query("SELECT DISTINCT cecha_typ FROM cecha WHERE cecha_dzial = '$nazwa_dzial' OR cecha_dzial_ii = '$nazwa_dzial' OR cecha_dzial_iii = '$nazwa_dzial'")
  5. or die('Błąd zapytania');
  6. if(mysql_num_rows($wynika) > 0) {
  7. while($a = mysql_fetch_assoc($wynika)) {
  8. $typ = $a['cecha_typ'];
  9. echo " <input type='checkbox' name='typ' value='$typ' />";
  10. echo $a['cecha_typ']."<br />";
  11. }
  12. }
  13.  
  14.  
  15. echo "<input type='submit' name='send' value='Filtruj' />";
  16. echo "</form>";
  17.  
  18.  
  19.  
  20.  
  21. $sql = "SELECT cecha_id_towaru FROM cecha WHERE 1 = 1 ";
  22. if ($nazwa_dzial) {
  23. $sql .= " AND cecha_dzial = '$nazwa_dzial' OR cecha_dzial_ii = '$nazwa_dzial' OR cecha_dzial_iii = '$nazwa_dzial'";
  24. }
  25. if (isset($_POST["typ"])) {
  26. $typ_sql = $_POST["typ"];
  27. $sql .= " AND cecha_typ='$typ_sql'";
  28. }
  29.  
  30. $wynik = mysql_query($sql)
  31. or die('Błąd zapytania');
  32.  
  33. echo "SQL=" . $sql; // for debugging
  34.  
  35. if(mysql_num_rows($wynik) > 0) {
  36.  
  37. while($r = mysql_fetch_assoc($wynik)) {
  38.  
  39. $id = $r['cecha_id_towaru'];
  40.  
  41. $wynik2 = mysql_query("SELECT towar_kod, towar_kod_producenta, towar_nazwa, towar_nazwa_dodatkowa, towar_jednostka_miary FROM towar WHERE towar_id='$id'")
  42. or die('Błąd zapytania');
  43. if(mysql_num_rows($wynik2) > 0) {
  44.  
  45. while($k = mysql_fetch_assoc($wynik2)) {
  46. if($kontrola != $wynik2)
  47. {
  48. echo "<center><p>Kod towaru: ".$k["towar_kod"]."<br /> Nazwa: ".$k["towar_nazwa"]."<br /> Nazwa dodatkowa: ".$k["towar_nazwa_dodatkowa"]."<br /> Jednosta miary: ".$k["towar_jednostka_miary"]."<br /><br /></p></center>";
  49. $kontrola = $wynik2;
  50. }
  51. }
  52. }
  53. }
  54. }
nospor
Czyli mowisz, ze
echo "SQL=" . $sql;
wyswietla poprawny sql ze zmienionymi warunkami?
wariat12
Tak, w momencie, gdy zaznaczam coś w formularzu i klikam "Filtruj" echo się zmienia, lecz wyświetla mi cały czas tę samą listę rekordów, tak jakby nie pojawiał się nowy warunek w WHERE.
nospor
To spowodu tych OR ktore nawaliles.

Pamietaj, ze OR i AND mają inną siłę, tak samo jak + i *

2 + 3 * 4
da inny wynik niż
(2 +3) * 4

To samo musisz miec na uwage w mysql
wariat12
Jeju, jesteś genialny, drugi dzień się wkurzałem na to, a sprawę załatwił jeden nawias! Dzięki wielkie od razu za wyjaśnienie.
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.