Chciałbym, aby na stronie głównej pokazywało się 5 ostatnich wpisów z tabeli, więc wykorzystałem taki kod:
require('conn.php'); $zapytanie="SELECT * FROM filmy"; $temp=mysql_query($zapytanie) OR die("Wystąpił błąd"); $ile=mysql_num_rows($temp); $sql=mysql_query("SELECT * FROM filmy ORDER BY id_filmu DESC LIMIT 5"); $nr = 1; while ($nr <= $ile) { while($dane = mysql_fetch_assoc($sql)) { echo ' <tr> <td valign="top" class="trescc"> '.$nr.' </td> <td valign="top" class="trescc"> '.$dane[tytul].' </td> <td valign="top" class="trescc"> '.$dane[ilosc].' </td> <td valign="top" class="trescc"> '.$dane[pochodzenie].' </td> <td valign="top" class="trescc"> '.$dane[typ].' </td> <td valign="top" class="trescc"> '.$dane[rodzaj].' </td> </tr>'; $nr += 1; };}
Wszystko działa normalnie, poza tym, że strona ładuje się kosmicznie długo, po czym wpisy ładnie się pokazują, a nad nimi taki komunikat:
Cytat
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Documents and Settings\Moje dokumenty\HTML\FILMY\odczyt_idx.php on line 35
Tabela ma raptem 7 wpisów, więc co za problem wyświetlić od końca 5 ostatnich?
Co dopiero będzie kiedy w tabeli pojawią się wszystkie wpisy? (397)
W php.ini zmieniłem nawet na 1000 sec ale anulowałem po 10min oczekiwania.
Co mogę zrobić, aby to zapytanie było wykonywane jak trzeba? błyskawicznie.
Drugi problem to "szukajka", mam taki kod:
<?php IF(isset($_GET['search'])) { $szukaj=mysql_real_escape_string(trim($_GET['szukaj'])); $zapytanie="SELECT * FROM filmy WHERE tytul LIKE '%$szukaj%'"; $temp=mysql_query($zapytanie) OR die("Wystąpił błąd"); $ile=mysql_num_rows($temp); IF ($ile > 1) { $mysql=mysql_query("SELECT * FROM `filmy` WHERE `tytul` LIKE '%$szukaj%' ORDER by `tytul` ASC") OR die (mysql_error()); $nr = 1; while ($nr <= $ile) { while($szukane = mysql_fetch_assoc($mysql)) { echo ' <td valign="top" class="trescc"> '.$nr.' </td> <td valign="top" class="trescc"> '.$szukane[tytul].' </td> <td valign="top" class="trescc"> '.$szukane[ilosc].' </td> <td valign="top" class="trescc"> '.$szukane[pochodzenie].' </td> <td valign="top" class="trescc"> '.$szukane[typ].' </td> <td valign="top" class="trescc"> '.$szukane[rodzaj].' </td> </tr>'; $nr += 1; } } ?>
No i wszystko ładnie działa, gdy wpisze się co kolwiek związanego z harrym potterem, wtedy ów film magicznie pojawia się jak trzeba,
lecz gdy wpisze się czerwony październik, bądź przedwiośnie, to nie pokazuje się tak jak zapisałem w kodzie (tutaj chyba tego nie dałem), że nie znaleziono, tylko jest tak jakbym dopiero co otworzył stronę inaczej mówiąc, to, że w adresie jest dopisek
Kod
?szukaj=czerwony&search=szukaj
nic nie powoduje.Dlaczego z harrym działa elegancko a z resztą nie?
I trzecie pytanie podobne do drugiego, mam również katalog, oto kod:
<?php $katalog = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); } $mysql=mysql_query("SELECT * FROM `filmy` WHERE `tytul` LIKE '$show%' ORDER by `tytul`") or die (mysql_error()); $nr = 1; while ($nr <= $ile) { echo ' <td valign="top" class="trescc"> '.$nr.' </td> <td valign="top" class="trescc"> '.$katalog[tytul].' </td> <td valign="top" class="trescc"> '.$katalog[ilosc].' </td> <td valign="top" class="trescc"> '.$katalog[pochodzenie].' </td> <td valign="top" class="trescc"> '.$katalog[typ].' </td> <td valign="top" class="trescc"> '.$katalog[rodzaj].' </td> </tr>'; $nr += 1; }} ?>
I tutaj również, po kliknięciu w "H", harry potter się objawia, ale po kliknięciu w "P", przedwiośnie już się nie pokazuje, zamiast tego widoczny jest tekst "Nie ma filmów na tą literę"
Dlaczego tak się dzieje?
Co mogę zrobić aby wszystko działało poprawnie?
Proszę o pomoc.
Z góry dziękuję.
Pozdrawiam.