Ćwiczę sobie testowo różne mechanizmy związane z PHP i zrobiłem sobie taki prosty skrypt zmiany linków w pewnym <ul>
. Wygląda to w ten sposób, że jest nagłówek 'NOWOŚCI', pod nim parę linków i po kliknięciu "więcej" są ładowane z bazy MySQL kolejne linki. Wszystko działa tylko, ale mam pewne pytanie związane z wydajnością. Korzystam dodatkowo z AJAX jakby co.
Na początku testowo robiłem to bez bazy, w taki sposób (mogłem to powsadzać do tablic, ładniej to upakować, ale nie o to chodzi, chodzi mi o sens):
<?PHP
$index = $_GET['i']; //pobranie parametru, który później będzie wskazywał na indeks strony z linkami
$body = "";
if($index == 1){
$body .= "<h3>NOWOŚCI</h3>\n";
$body .= "<ul>\n";
$body .= "<li><a href=\"#\">Pierwsze</a></li>\n";
$body .= "<li><a href=\"#\">Drugie</a></li>\n";
$body .= "<li><a href=\"#\">Trzecie</a></li>\n";
$body .= "</ul>\n";
}
echo $body;
?>
Trochę pousuwałem tu, żeby łatwiej było ogarnąć o co mi chodzi. Potem chciałem to samo zrobić ale wsadzając te wszystkie linki, nazwy do bazy MySQL i pobierając je z niej selectem.
<?PHP
$sql = new mysqli("localhost", "root", "root", "mosar_portfolio");
if ($sql->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$result = $sql->query("SELECT * FROM Newest");
$index = $_GET['i'];
$body = "";
if($index == 1){
$body .= "<h3>NOWOŚCI</h3>\n";
$body .= "<ul>\n";
$row = $result->fetch_array(MYSQLI_ASSOC);
$body .= "<li><a href=\"#\">". $row['tekst'] ."</a></li>\n";
$body .= "<li><a href=\"#\">Drugie</a></li>\n";
$body .= "<li><a href=\"#\">Trzecie</a></li>\n";
$body .= "</ul>\n";
}
echo $body;
?>
Widać, że pobrałem tylko jeden rząd i wstawiłem tylko jeden element, ale robiłem to tylko testowo, więc ogólnie cały skrypt nie jest mistrzostwem świata w semantycznym pisaniu i w ogóle nie ma większego sensu. Chodzi mi tylko o zrobienie tego samego, ale za pomocą bazy danych.
Chodzi mi tylko o jedno. Łączenie się do bazy z localhosta zajmuję prawdopodobnie koło sekundy, gdyż nowa zawartość pojawia się dopiero po około 1-1.5 sekundy. Gdy nie korzystam z bazy tylko z palca wpisuje dane, które mają się pojawić po kliknięciu przycisku, wszystko dzieje się bardzo szybko. I moje pytanie jest takie: Czy do tego typu rzeczy warto w ogóle zaprzegać bazę danych czy lepiej przechować to w jakiejś tablicy, zmiennej, itd. i pobrać, co będzie przy tak napisanym kodzie o wiele szybsze?
Czy może robię jakiś błąd, np. taki, że łącze się z bazą za każdym razem, kiedy klikam przycisk? Z server-sidem dopiero zaczynam, więc nie wiem jak "będzie lepiej" w takiej sytuacji. Może się da połączyć z bazą na starcie strony, a potem już tylko wywoływać zapytania? Albo na starcie połączyć się z bazą, wprowadzić dane do jakiejś tablicy i potem z niej korzystać w skrypcie?
Jestem ciekawy odpowiedzi, bo o ile różnego rodzaju rozwiązania zawsze znajduję na stack overflow albo w książkach, to tego typu rzeczy nie umiałem znaleźć.