Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Warunek Like
Forum PHP.pl > Forum > Przedszkole
PawelC
Hej smile.gif
Mam dziwny problem, mam taki kod:
  1. if($akcja=='edytuj'){
  2. echo '<form method="post" action="plik.php?akcja=szukaj">
  3. Wpisz nazwę programu do edycji:<br />
  4. <input type="text name="program"><br />
  5. <input type="submit" value="Szukaj"></form>';
  6. }
  7.  
  8. if($akcja=='szukaj'){
  9. $nazwa=$_POST['program'];
  10. echo $nazwa;
  11. $sqle=mysql_query("select `nazwa` from `gd_pliki` where `nazwa` like '%$nazwa%'");
  12. $row=mysql_fetch_array($sqle);
  13. echo $row['nazwa'].'<br />';
  14.  
  15. }

I niby jest wszystko ładnie pięknie, tylko dlaczego nie odczytuje mi zawartości $nazwa?
Na tym wampServ ostatnio coś dużo problemów mam z takimi prostymi rzeczami. Jeżeli nawet w like wpiszę np nazwę programu Cube to wyświetla mi coś zupełnie innego.
nospor
%$nazwa% oznacza ze znajdzie ci tez ciąg "alaCubemakota"
skoro dostajesz cos innego to pewnie masz też ciągi, ktora mają w sobie słowo cube i je wyciąga ci w pierwszej kolejnosci. a ze ty wyswieltasz tylko jeden rekord zamiast wszystkich znalezionych....
PawelC
nospor jak wpiszę na sztywno w like Cube, to mi wyświetla program o nazwie Monopoly Int, a jeżeli wpuszczę to w pętle while, to wywala mi wszystkie rekordy z bazy.
kleus
miałem podobny problem na wampie... odczytuje mi dane z bazy danych tylko jak polecenie wyglada tak:
  1. $sqle = mysql_query("SELECT nazwa FROM gd_pliki WHERE nazwa LIKE '%$nazwa%' ORDER BY id DESC");
PawelC
Muszę tego wampSERV wywalić, bo dziwnie działa, wpisałem w pole formularza test, i teraz czego bym nie wpisał to wywala mi cały czas test, tak jakby zapamiętywał to co wpisuje do formularza, mimo tego że zamknę przeglądarkę.
thek
Na początek. Register globals... Może on Ci gdzieś bruździ po drodze lub nadpisujesz w jakiś sposób zmienną POST?
Dwa to sprawdź co z kolei Ci baza zwróci gdy dasz to zapytanie w phpmyadmin ( czy czego tam używasz ) na sztywno. Jeśli już tam jest coś nie tak, to wiesz, że to nie php robiłby problem.
PawelC
W phpmyadmin dobrze pokazuje wynik zapytania, czy coś ze zmienną jest nie tak.
thek
Ja bym na twoim miejscu sprawdził co właściwie zmienna $_POST rzeczywiście zawiera. Może się bowiem zdarzyć, że jest ona pusta i wtedy do bazy idzie zapytanie mające:
  1. (...) LIKE '%%'
albo jeszcze inny syf o którym nie wiesz. Użyj var_dump( $_POST ) i sobie zobacz co Ty do bazy właściwie wysyłasz.

EDIT: Możesz też wyświetlić samo zapytanie idące do bazy by się przekonać co się między % znajduje. Bo jak dla mnie to tam jest przyczyna problemu.
PawelC
Faktycznie zapytanie po wyświetleniu wygląda tak:
  1. SELECT * FROM gd_pliki WHERE nazwa LIKE '%%'


Sprawdziłem tym var_dump i wywala mi NULL
netmare
Najgorzej jak się człowiek czymś głupim zasugeruje. Obstawiam że jak dasz cudzyszłów po input type="text to przeglądarka zrozumie że name to program winksmiley.jpg
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.