ďťż

[SQLite] Wyszukiwarka Problem z kodem

       

Podstrony


telcocafe

Mam problem z wyszukiwarka w bazie danych SQLite. Chodzi mi o czesc Like w pobieraniu danych. Z forumlarza jest pobierane slowo lub czesc szukana lesz niestety to zawodzi nonstop. Nie wiem w czym jest blad. Moze jak ktos ma taka wiedze to moglby cos doradzic albo napisac co mam zle. Z gory dzieki.
<table border="1" id="view"> <tr> <td WIDTH="175">Imie</td> <td WIDTH="175">Nick</td> <td WIDTH="175">Wpis</td> </tr> <?php $find = trim($_POST['find']); $baza = './bazy/skorowidz.db'; $db = @sqlite_open($baza) or die('Nie mogę otworzyć bazy!'); $wynik = @sqlite_query($db,"SELECT * FROM skorowidz WHERE * LIKE '%.$find.%"); if($wynik == true and sqlite_num_rows($wynik) != 0) { while($r = sqlite_fetch_array($wynik,SQLITE_ASSOC)) { echo "<tr>"; echo "<td>".$r['imie']."</td>"; echo "<td>".$r['nick']."</td>"; echo "<td>".$r['wpis']."</td>"; echo "</tr>"; } echo "</table>"; } elseif($wynik == true and sqlite_num_rows($wynik) == 0) echo "Brak wpisów"; else echo "Musisz utworzyć tabelę -> kliknij na \"Instalacja\""; /* zamykamy bazę */ sqlite_close($db); ?>



$db = @sqlite_open($baza)... nie stosuj @ bo nie zobaczysz komunikatów błędów, które np. pojawiają się przy wykonywaniu zapytania z LIKE.

Poza tym widzę:
"SELECT * FROM skorowidz WHERE * LIKE '%.$find.%"

brakuje ' po $find
"SELECT * FROM skorowidz WHERE * LIKE '%.$find.%'"

Parse error: parse error in c:\www\skorowidz sqlite\inc\szukajview.php on line 17

Taki blad mi wyskakuje, czyli chodzi o wyswietlanie danych zauwazylem. Linie poprawilem lecz dalej ten sam blad jest :/

masz błąd składniowy, choć w tym kodzie co dałeś ja go nie widzę



no wlasnie ja go tez nie widze :>

Zawsze jak mi coś nie pasuje to robię print_r($tablica); i sprawdzam czy coś cię pojawiło, jeśli nie to szukam błędu wyżej, aż dojdę do niego...
Chciałem sprawdzić błąd, ale zapomniałem, że mój serwer nie obsługuje SQLite <_<
Jeżeli dobrze liczę to jest to ta linijka:

echo "<td>".$r['imie']."</td>";
ale jeśli to by była tablica to nie mógłby być to błąd parsera...

ja mowie ze to jest blad w linii z LIKE

$wynik = @sqlite_query($db,"SELECT * FROM skorowidz WHERE * LIKE '%.$find.%");
bo jak wpisze osobno fraze szukana to ja wyswietla i tu jest ten problem

coś tu kręcisz i to twój problem. Błąd składniowy nie ma nic wspólnego z samym SQLite lecz z kodem PHP. Jeżeli coś zmienia i wyrzuca błąd składniowy oznacza to iż coś jest jest nie tak z tą zmianą. Na ślepo bez kodu i komunikatu nikt ci nie pomoże.

Po co ci ta kropka przed i po $find? Dodatkowo, jak Riklaunim wspominał, niezamknięty cudzysłów.

$wynik = @sqlite_query($db,"SELECT * FROM skorowidz WHERE * LIKE '%$find%'");


Po co ci ta kropka przed i po $find?

Kropka w tym nic nie przeszkadza. Poprostu jeśli szuka np. Cosik to pokazuje .Cosik. Chyba, że się mylę...
Ja bym to zrobił po swojemu... $wynik = @sqlite_query($db, 'SELECT * FROM skorowidz WHERE * LIKE "%'.$find.'%"'); Wg mnie taki zapis mniej obciąża serwer i ja się właśnie tego trzymam. Więc kropki mogą pozostać :P

różnica między ' a " dla takich małych łańcuchów jest niewidoczna, ale ' lepiej wygląda ;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.