Pagina 1 din 1

Pagina se incarca greu cu valori din query in array

Scris: Mie Sep 13, 2017
de sterica
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!

Pagina se incarca greu cu valori din query in array

Scris: Mie Sep 13, 2017
de MarPlo
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.

Pagina se incarca greu cu valori din query in array

Scris: Vin Sep 15, 2017
de sterica
Multumesc mult de indrumare, am inceput sa lucrez dupa recomandarea ta.