Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Case i problem z pytaniem Mysql
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Oto kawałek kodu:
  1. default:
  2. echo "<h1><center>Znajdz badanie</center></h1>\n";
  3. <center><form method=\"POST\" form action=\"".$file."\">
  4. <p><strong>Nazwisko</strong><br/>
  5. <input type=\"text\" name=\"nazwisko\" size=\"30\" maxlength=\"30\"><br\>
  6. <p><strong>Imie</strong><br/>
  7. <input type=\"text\" name=\"imie\" size=\"30\" maxlength=\"30\"></p>";
  8. include ('badanie2.php');
  9. echo badanie();
  10. echo "<p><input type=\"submit\" name=\"submit\" value=\"Szukaj\"></p></center>";
  11. $sql = 'select id, id_usg, nazwisko, imie, rok_ur, opis, termin from usg_opis where
  12. nazwisko =\''.$_POST['nazwisko'].'\' and imie =\''.$_POST['imie'].'\'and bad=\''.$_POST['bad'].'\'
  13. order by nazwisko limit 30';
  14. //w tym miejscu należy wprowadzić stronnicowanie zwłaszcza w przypadku wyszukiawnia tylko przez rok urodzenia
  15. $rez= mysqli_query($mysqli, $sql);
  16. echo "<TABLE CELLPADDING=5 BORDER=1>";
  17. echo "<center><TR>
  18. <TD><B>NAZWISKO</B></TD>
  19. <TD><B>IMIE</B></TD>
  20. <TD><B>ROK_UR</B></TD>
  21. <TD><B>TERMIN</B></TD>
  22. <TD><B>OPIS</B></TD>
  23. <TD><B>DRUKUJ</B></TD>
  24. </TR>";
  25. while ($rekord = mysqli_fetch_array($rez, MYSQLI_ASSOC)) {
  26. $id = $rekord['id'];
  27. $nazwisko = $rekord['nazwisko'];
  28. $imie = $rekord['imie'];
  29. $bad = $rekord['id_bad'];
  30. $opis = $rekord['opis'];
  31. $termin = $rekord['termin'];
  32. echo "<TR>";
  33. echo "<TD>$nazwisko</TD><TD>$imie</TD><TD>$rok_ur</TD><TD>$termin</TD><TD>$opis</TD>";
  34. echo "<TD><A HREF=\"$file?action=druk&id=$id\">Drukuj</A></TD>";
  35. echo "</TR>";
  36. echo "</center></TR>";
  37. }
  38. echo "</TABLE>";
  39. break;
  40. }
  41. ?>

Powyżej część default kodu od case i z tym mam błąd polegający na tym, że czepia się 26 linii. Mam taki błąd:
mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given.
Poniżej kod do funkcji badanie():
  1. function badanie()
  2. {
  3. include('connect2.php');
  4. echo '<select name=\"bad\">';
  5. echo "<option value =\"bad\">----wybierz badanie------</option>";
  6. $sql2= "select id_usg, bad_usg from usg order by 2";
  7. $rez2= mysqli_query($mysqli, $sql2);
  8. while ($nowaTab=mysqli_fetch_array($rez2, MYSQLI_ASSOC))
  9. {
  10. $mid = intval($nowaTab['id_usg']);
  11. $badanie=$nowaTab['bad_usg'];
  12. echo"<option value=\"".$mid."\">".$badanie."</option>";
  13. }
  14.  
  15. echo "</select>";
  16. }

Bez tej funkcji wyszukiwarka działa. Niestety nie wiem dlaczego tak jest, ponieważ jak zmieniłem na get to przekazuje się zmienna id_usg i wydaje mi się, ze wszystko powinno być OK.
Z góry dzięki

Czu ktoś mógłby mi pomoc. Zauważyłem, ze problem leży w zapytaniu z 13 linijki - kiedy wywalam warunek ostatni dotyczący zmiennej $_POST['bad'] wówczas wyszukiwarka działa. Jednak dla mnie to za mało.
Robiłem też var_dump z tej zmiennej i pokazywało mi raz wartość 'bad' a innym razem cyfry będące odpowiednikami wskazanych badań w formularzu.
Nie bardzo już wiem gdzie mam błąd.
zend
Wywietl zapytanie, potem wykonaj w phpMyAdmin'ie, jeśli zadziała, to pewnie nie łączysz się z bazą danych
outsider
jesli $_POST['bad'] ma byc cyfra (jesli w bazie dla pola `bad` masz ustawiony INT) to zapytanie musi wygladac tak:

  1. $sql = 'select id, id_usg, nazwisko, imie, rok_ur, opis, termin from usg_opis where
  2. nazwisko =\''.$_POST['nazwisko'].'\' and imie =\''.$_POST['imie'].'\'and bad='.$_POST['bad'].'
  3. order by nazwisko limit 30';
jacusek
połączenie to mam, pytanie sprawdzone. Nie wiem dlaczego nie działa mi ta funkcja odpowiednio, tym bardziej, ze w innym miejscu, ale już bez case'u działa bez zarzutu. *OuTSideR* niestety to nie to. Pytanie dlaczego var_dump pokazuje mi takie dziwactwa. Poza tym $_POST[bad] odwołuje do nazwy pola select więc właściwie nie powinno mieć to znaczenia jak jest w bazie.

Niestety nad nie działa. Tzn. po przyciśnięciu szukaj komunikart o błędzie w wyszukiwarce o dziwo znika. I jest to zastanawiające. Tak jakby cały czas traktował zmienną $_POST['bad'] nie jako intiger tylko jako tekst przy wywoływaniu pliku wyszukiwarka.php. I zapewne tul leży problem jak zmusić wyszukiwarkę, żeby to ignorowała. Jednocześnie po wypełnieniu wszystkich pól wyszukiwarka działa. I to jest kolejne pytanie którego nie umiem rozwikłać.


Na razie jedynym sposobem pozbycia się tego uporczywego komunikatu jest wyłączenie raportowania błędów, ale przecież nie o to chodzi w tym chodzi.
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.