Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQLite][PHP]wyszukiwanie rekordów
Forum PHP.pl > Forum > Przedszkole
redelek
Dzień dobry,

Nie umiem sobie poradzić z takim problemem. Użytkownik wprowadza dwa numery w dwa pola dz_number i license_number. Jeśli znajdzie skrypt taką DZ to sprawdza czy license_number numer jest prawidłowy i odwrotnie.
Do różnych dz_number mogą być przypisane te same numery license_number. I mam problem, bo nie mogę tematu ugryźć. Programista ze mnie okazjonalny, więc wybaczcie proszę.

  1. $db = new MyDB();
  2.  
  3. $res = $db->query('SELECT * FROM `lic_view` WHERE license_number = '.$f_licens.' AND dz_number LIKE'.$f_dz.'');
  4.  
  5. if ($res) {
  6. echo '<table class="tab_add"><tr><td>DZ number</td><td>File name</td><td>File path</td><td>Date add</td></tr>';
  7. while ($row = $res->fetchArray()) {
  8. echo "
  9. <tr>
  10. <td>".$row['dz_number']."</td>
  11. <td>".$row['fname']."</td>
  12. <td>".$row['fpath']."</td>
  13. <td>".$row['dtadd']."</td>
  14.  
  15. </tr>
  16. ";
  17.  
  18.  
  19. }
  20. } else {
  21. echo "WARRNING: No record found in the database";
  22. }

Problem jest w tym, że jeśli ktoś wpisze prawidłowy DZ , a numer license_number nie ma dostaję pustą tabelę a nie komunikat, że rekordu nie znaleziono. Tak samo w drugą stronę jeśli DZ nie ma w bazie a jest license_number dostaję pustą tabelę.
Jak wpiszę dwa numery poprawnie dostaję odpowiednie rekordy, tylko nie mogę poradzić sobie z tym, że jednego numeru nie ma (nie jest pusty tylko ma inny numer, niż ten co przypisałem w DZ.
Zapytanie $res zawsze zwraca mi 1 i nie wiem czy to zapytanie jest źle zrobione czy ten if do sprawdzania.

dzięki za pomoc lub wskazówkę, przepraszam jeśli temat wydaje się błahy, chcę sobie ułatwić pracę i nie wysyłać tony email z numerami.
nospor
qeuery zawsze zwraca resourse, nawet jak nei ma rekordow. Masz tam FALSE tylko wtedy gdy zapytanie sie nie powiedzie

Musisz wiec sprawdzic ile rekordow zwroca twoje resource. Niestety nie wiem jak wyglada twoja klasa MyDB wiec to juz sam sobie zrob
redelek
Cytat(nospor @ 17.06.2020, 15:54:56 ) *
qeuery zawsze zwraca resourse, nawet jak nei ma rekordow. Masz tam FALSE tylko wtedy gdy zapytanie sie nie powiedzie

Musisz wiec sprawdzic ile rekordow zwroca twoje resource. Niestety nie wiem jak wyglada twoja klasa MyDB wiec to juz sam sobie zrob


Zawsze zwraca mi jeden jak DZ podaje prawidłową a numer licencji się nie zgadza to dostaję jeden. Jak numer licencji jest dobry a DZ zły to też dostaję jeden i dlatego myślę że coś w zapytaniu SQL jest nie tak.
Klasa to dużo powiedziane smile.gif wygląda tak
  1. class MyDB extends SQLite3 {
  2.  
  3. function __construct() {
  4. $this->open('C:\application.db3');
  5.  
  6. }
  7. }
nospor
Podajesz sprzeczne dane. Teraz piszesz ze zawsze zwraca ci jeden a w poprzednim poscie pisales ze zwraca 0

Cytat
Problem jest w tym, że jeśli ktoś wpisze prawidłowy DZ , a numer license_number nie ma dostaję pustą tabelę

Mozesz ustalic sam ze soba jedna wersje i podac ostatecznie co jest zwracane a co nie?
redelek
Cytat(nospor @ 18.06.2020, 09:58:16 ) *
Podajesz sprzeczne dane. Teraz piszesz ze zawsze zwraca ci jeden a w poprzednim poscie pisales ze zwraca 0


Mozesz ustalic sam ze soba jedna wersje i podac ostatecznie co jest zwracane a co nie?


Oki już sobie poradziłem dodałem sobie takie zapytanie
  1. $sqlcount = $db->query('SELECT COUNT(*) FROM `lic_view` WHERE license_number = '.$f_licens.' AND dz_number = '.$f_dz.'');
  2. list($name) = $sqlcount->fetchArray(SQLITE3_NUM);
  3. if ($name != 0){
  4. ///dsadsadasd
  5. }else {
  6. // dsadasd
  7. }


i działa smile.gif))
nospor
To zapytanie jest totalnie zbedne. Jak juz mowilem, poprostu pobierz liczbe rekordow zwroconych przez zapytanie. Wystarczyl zajrzec do manuala sqlite ktorego widze uzywasz. No ale lepiej kombinowac tongue.gif

https://www.php.net/manual/en/function.sqlite-num-rows.php
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.