Problem z wyświetlaniem wyników wyszukiwania w PHP

0

Po prawidłowym połączeniu z serwerem i sprawdzeniu połączenia napisałem kod jak poniżej:

if (!$link)
{
echo 'Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';
exit;

}

if(isset($_GET['tytul'])) {

$wynik = mysqli_query($link, "SELECT * FROM Zamowienia where tytul LIKE '%" . $_GET['tytul'] . "%');

while($row = mysqli_fetch_array($wynik))

{echo $row['tytul']; }

mysqli_close($link);

?>

</body> </html>

Niestety zamiast wyświetlać dane z tabeli po wpisaniu tytułu do wyszukiwarki komputer podaje błąd:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /wyszukiwarka.php on line 35

Zwracam się z uprzejmą prośbą o skorygowanie kodu, bo nie wiem gdzie jest błąd ? Zależy mi na tym, aby program wyświetlił wynik wyszukiwania tytułu książki. Dziękuję za pomoc i szczegółowe wskazówki.

0

Masz napisane, w której linijce i co jest problemem przecież.

0

Jak napisałem, że ma te dane wyświetlać w tabeli jak poniżej:




if(isset($_GET['tytul'])) {



$wynik = mysqli_query($link, "SELECT * FROM Zamowienia where tytul LIKE '%" . $_GET['tytul'] . "%');

while($row = mysqli_fetch_array($wynik))

{

echo " <tr><td>{$row['tytul']}</td></tr>"; 

}

mysqli_close($link);

?> 

</body>
</html>

To otrzymałem komunikat błędu:

Parse error: syntax error, unexpected '>' in /wyszukiwarka.php on line 37

Zupełnie tego nie rozumiem ? 
0

Gdzie tutaj jest błąd ?

while($row = mysqli_fetch_array($wynik))

{

echo " <tr><td>{$row['tytul']}</td></tr>"; 

}

mysqli_close($link);

?> 

</body>
</html>







2

Komunikat o błędzie mówi o problemie w linii 35. Masz tam jakiś błąd składni.
To co wrzuciłeś nie ma tylu linii.
Błąd jaki widzę w tym co wkleiłeś polega na złym użyciu cudzysłów do sklejania literałów (stringów).

$wynik = mysqli_query($link, "SELECT * FROM Zamowienia where tytul LIKE '%" . $_GET['tytul'] . "%'");

Przed ostatnim nawiasem nie ma podwójnego cudzysłowu.

"%');

Otwierasz string używając " i dalej cały kod jest traktowany jak string, parser czeka aż znów natrafi na " żeby wiedzieć gdzie się on kończy.

1

Dodatkowo brakuje w kodzie klamry zamykającej (}) do if.

0

Tak poprawiłem cały kod:
if(isset($_GET['tytul'])) {

$wynik = mysqli_query($link, "SELECT * FROM Zamowienia where tytul LIKE '%" . $_GET['tytul'] . "%");

while($row = mysqli_fetch_array($wynik))

{

echo " {$row['tytul']}</td></tr>";

}

mysqli_close($link);

}

?>
I teraz dostałem taki komunikat:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /wyszukiwarka.php on line 33

tytu�

wyświetliło pierwszy rekord z tabeli utworzonej już na serwerze. A wskazałem na tytul "pechowy" i rekord pechowy. Co zrobić, aby wyświetliło wiersz ostatni tam gdzie znajduje się książka "pechowy" ?

To jest ta tabela:

Id tytuł ilosc
0 0
1 Jak mieć pieniądze 4
2 Bruce Lee 8
3 controling 8
13 pechowy 133

0

O co chodzi w tym komunikacie: Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /wyszukiwarka.php on line 33

1
$wynik = false; // wynik zapytania masz typu bool np. false
while($row = mysqli_fetch_array($wynik))
{
    //...
}

Parametr 1 -$wynik jest typu bool. Funkcja mysqli_fetch_array() oczekuje pierwszego argumentu typu mysqli_result. Dzieję się zapewne tak gdyż zapytanie nie wykonuje się poprawnie.
Za dokumentacja znajdująca się tutaj:
https://www.php.net/manual/en/mysqli.query.php

Returns false on failure. For successful queries which produce a result set, such as SELECT, SHOW, DESCRIBE or EXPLAIN, mysqli_query() will return a mysqli_result object.

Musisz zacząć czytać dokumentację ze zrozumieniem.

0

Co tutaj zmienić w kodzie, aby po wpisaniu tytułu książki nie wyrzucał mi nagłówka kolumny tytuł, tylko Id, nazwę książki i liczbę książek w tabeli ?
Tabela jest następująca:
Id tytuł ilosc
0 Zły 15
1 Tytanik 21

Program:
if(isset($_GET['tytul'])) {

$wynik = mysqli_query($link, "SELECT * FROM Zamowienia where tytul LIKE '%" . $_GET['tytul'] . "%");

echo " {$row['tytul']}</td></tr>";

mysqli_close($link);

}

?>

</body> </html>

Po wykonaniu zapytania wyrzuca mi tylko nagłówek tabeli
tytul

a nie szukany rekord w tabeli, czyli numer Id, tytuł książki oraz liczbę sztuk ?
Jak to zmienić w kodzie ? Dziękuję za pomoc.

0

Zróbmy tak. Odpowiedz na pytanie jak wyświetlasz tytuł.
Wklej jedną linijkę kodu gdzie się to dzieje.

0

To miało mi wyświetlić rekord, czyli id. tytuł oraz liczbę sztuk. Niestety po podaniu tytułu książki wyświetla mi się nagłówek kolumny tabeli w postaci:
tytul

0

Tabela ma postać:
Id tytuł ilosc
0 Zły 15
1 Tytanik 21

0

To jest wynik działania programu:

tytu�

0

No dobrze, a jesteś w stanie wytypować linijkę kodu która to wyświetla i ją tu wkleić?

0

Wykonuje to linijka:
$wynik = mysqli_query($link, "SELECT * FROM Zamowienia where tytul LIKE '%" . $_GET['tytul'] . "%");

0

Nie. To jest zapytanie do bazy wyszukujące rekord o konkretnym tytule.

0

Tak, ale komputer tego nie robi. Pokazuje mi jedynie słowo:
tytu�

0

To jest formularz pobierający tytuł do programu powyżej:

<html> <body> <?php if(!$this) die();?>
<form action="wyszukiwarka.php" method="GET"> <input type="hidden" name="action" value="searchBook">
Tytuł:<input size='25' type='text' name='tytul' >
<input type='submit' value='Szukaj'>
</form>
?> </body> </html>
0

wyszukiwarka książek nie działa jak powinna

0
adamon napisał(a):

Tak, ale komputer tego nie robi. Pokazuje mi jedynie słowo:

tytu�

No dobrze, ale jak wyświetla to słowo to musisz wiedzieć dlaczego. Żeby wiedzieć dlaczego, musisz wiedzieć gdzie się to wyświetla.
To jeszcze raz, gdzie się to wyświetla?

0

na ekranie

3

xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

1 użytkowników online, w tym zalogowanych: 0, gości: 1