Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: złe wyniki zapytania
Forum PHP.pl > Forum > Przedszkole
dobryvinyl.com
Witam,

problem wyglada następujaco:

mam zapytanie w postaci
Kod
SELECT * FROM miejsca WHERE miasto_id='$miasto' AND (nazwa LIKE '%$fraza%') OR (opis LIKE '%$fraza%') OR (adres LIKE '%$fraza%')



niestety zwrocony mi wynik wogole nie uwzglednia tego parametru miasto_id='$miasto'. Zostaja mi wyswietlone wyniki z wszystkich miast.

Co robie nie tak?
vieri_pl
Czy miasto przekazujesz z formularza questionmark.gif jak tak to zrób:

  1. <?php
  2. $miasto = $_POST['wartosc-miasto'];
  3.  
  4. ?>


Jeśli metodą get to zamiast $_POST daj $_GET, jeśli dajesz to w parametrach linku daj

  1. <?php
  2.  
  3. $miasto = $_GET['wartosc-misato'];
  4. ?>
dobryvinyl.com
niestety nic to nie daje, dalej mam w wynikach wszystkie miasta.
mike
Pole miasto_id jest chyba liczbowe?

Usuń przy porównywaniu apostrofy, liczby porównuje sie bez nich.
dobryvinyl.com
eh dlaej nic, a miasto_id to pole typu char(3).

kod wyglada tak:

  1. <?php
  2. $miasto = $_GET['miasto'];
  3.  
  4. $wynik_miejsca = mysql_query ("SELECT * FROM miejsca WHERE miasto_id=$miasto AND (nazwa LIKE '%$fraza%') OR (opis LIKE '%$fraza%') OR (adres LIKE '%$fraza%')");
  5. while ($rekord_miejsca = mysql_fetch_array ($wynik_miejsca)) {
  6.  
  7. print "<p><b><a href="?dzial=miejsce&id=$rekord_miejsca[0]">$rekord_miejsca[2] <img src="gfx/strzalka.gif" width="12" height="10" border="0"></a></b><br>";
  8. Br("$rekord_miejsca[5]");
  9. print "</p>";
  10.  
  11. }
  12. ?>
mike
Zrób tak ...
  1. <?php
  2.  
  3. echo $sql = "SELECT * FROM miejsca WHERE miasto_id=$miasto AND (nazwa LIKE '%$fraza%') OR (opis LIKE '%$fraza%') OR (adres LIKE '%$fraza%')"
  4. $wynik_miejsca = mysql_query ( $sql );
  5.  
  6. // ...
  7.  
  8. ?>

.. i zodacz jakie zapytanie Ci wyświetli. I spróbuj je wykonać bezpośrednio, np. przez PHPMyAdmina.
dobryvinyl.com
yyyy

Kod
Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';'
mike
Zjadłem średnik, sorry.
  1. <?php
  2.  
  3. echo $sql = "SELECT * FROM miejsca WHERE miasto_id=$miasto AND (nazwa LIKE '%$fraza%') OR (opis LIKE '%$fraza%') OR (adres LIKE '%$fraza%')";
  4. $wynik_miejsca = mysql_query ( $sql );
  5.  
  6. // ...
  7.  
  8. ?>


P.S.
Mnie w szkole uczyli myślenia nawet w trakcie przepisywania z tablicy tongue.gif
dobryvinyl.com
teraz to juz calkowicie oszalalem.

jak jest dodany ten kod:

  1. <?php
  2.  
  3. echo $sql = "SELECT * FROM miejsca WHERE miasto_id=$miasto AND (nazwa LIKE '%$fraza%') OR (opis LIKE '%$fraza%') OR (adres LIKE '%$fraza%')";
  4. $wynik_miejsca = mysql_query ( $sql );
  5.  
  6. // ...
  7.  
  8. ?>


to wyniki wyswietlania sa dobre, czyli nie wyswietla miejsc z innych miast.
crash
  1. SELECT *
  2. FROM miejsca WHERE miasto_id= '$miasto' AND ( ( nazwa LIKE '%$fraza%' ) OR ( opis LIKE '%$fraza%' ) OR ( adres LIKE '%$fraza%' ) )";

Jak na mój gust to błąd był tu w grupowaniu warunków. Dane pasowały jeśli był spełniony pierwszy i drugi lub trzeci lub czwarty.
mike
A dopuszczasz możliwość tego że przeglądarka zcacheowała stronę?

Spróbuj teraz wrócić do poprzedniej wersji.
dobryvinyl.com
crash, bingo! Dzieki wielkie Panowie.
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.