Pagina se incarca greu cu valori din query in array

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje:285

Pagina se incarca greu cu valori din query in array

Salutare,

Pentru afisarea datelor in browser mult mai rapid nu vreau sa mai stresez serverul de fiecare data modificand query-ul sql (valorile din urma query-ului sunt de ordinul miilor), vreau ca datele rezultate din query sa le salvez intr-un array ca ulterior array-ul sa il filtrez cu ajutorul valorilor primite dintr-un select.

Am repordus "dorinta" in cod insa am o problema, la deschiderea paginii in browser, pagina se incarca foarte greu, cand schimb valorile din select si apas submit valorile se reincarca facand incarcarea paginii foarte greu.
Cum as putea sa usurez incarcarea paginii?

Cod: Selectaţi tot

<?php
<form action="" method="post">
    <select name="an">
        <option value="2015">2015</option>
        <option value="2016">2016</option>
        <option value="2017">2017</option>
    </select>
    <input type="submit" value="trimite" name="submit">
</form>

coneziunea la baza de date, rezulta variabila $conn
$sql = "SELECT.........";

$stmt = $conn->query($sql);
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);

if(isset($_POST['submit'])){
    $an = $_POST['an'];
    echo "anul curent: ".$an."<br>";
    AllSolicitari($an, $row);
}

function AllSolicitari ($an, $row){
    foreach ($row as $value) {
        if ($value['ANUL'] == $an){
            echo $value['NUME_CLIENT'];
            echo $value['ANUL'];
            echo "<br>";
        }
    }
}
Multumesc!

MarPlo Mesaje:4343
Salut,
Nu se "streseaza" serverul cu modificare query dupa necesitate, ci doar Mintea care crede ca poate stresa.

La Submit nu are rost sa selectezi datele din toti anii, apoi sa aplici o functie in plus si foreach() ca sa afisezi doar pt. anul selectat, ci selectezi direct in SQL-query randuile din acel an; si doar coloanele care iti trebuiesc; cam asa:

Cod: Selectaţi tot

if(isset($_POST['submit'])){
  $an = $_POST['an'];
  $sql = "SELECT NUME_CLIENT FROM nume_tabel WHERE ANUL='$an'";
  $rows = $conn->query($sql);

  // Se parcurg datele, apoi le afiseaza
  $resp ='anul curent: '.$an;
  while($row = $rows->fetch(PDO::FETCH_ASSOC)) {
    $resp .='<br>'.$row['NUME_CLIENT'];
  }
  echo $resp;
}
- Astfel optimizezi partea de SQL si usurezi codul php.

sterica Mesaje:285
Multumesc mult de indrumare, am inceput sa lucrez dupa recomandarea ta.

Subiecte similare