• User

    Estrarre da db valori con WHERE e poi fare la paginazione

    Ciao a tutti, ecco un nuovo quesito che io ancora non sono riuscito a risolvere e a questo punto mi arrendo e chiedo aiuto a voi... Il mio problema è il seguente: Ho bisogno di estrarre da un db solo i dati che corrispondono a determinati valori passati con $_GET e poi tutti i dati corrispondenti devono essere impaginati per essere visualizzati 5 alla volta. Fin qui tutto chiaro... almeno credevo. Per rispondere al fatto che necessito di estrarre campi rispondenti solo a certi valori applico alla SELECT un semplice WHERE e questo mi consente di avere solo i campi che mi servono. Per poterli poi impaginare io mi aspettavo di dover semplicemente aggiungere LIMIT $inizia_da, $n_elementi... e sorporesa il tutto non funziona... come mai? Dove sbaglio? Sono incompatibili WHERE e LIMIT? Come posso ottenere ciò che voglio?:x

    vi posto anche la parte del codice che potrebbe aiutarmi nel farmi capire. Per ora grazie a tutti quelli che accetteranno la sfida per me insuperabile 😊
    [PHP]<?php
    $lett= $_GET['iniz'];
    $lett= $lett.'%';
    $n_elementi= 2;
    $pag= $_GET['pag'];
    $iniza_da= ($pag - 1) * $n_elementi;

    if(!isset($pag)){ $pag = 1; }

    if(isset($_GET['iniz'])){
    $quer="SELECT * FROM tabella WHERE nome LIKE '$lett' LIMIT $inizia_da , $n_elementi ORDER BY nome ";
    }elseif((isset($cat3) && strlen($cat3) >0) && (isset($cat) && strlen($cat) >0)){
    $quer="SELECT * FROM tabella WHERE id_b=$cat3 LIMIT $inizia_da , $n_elementi ORDER BY nome";
    }elseif(isset($cat) and strlen($cat) > 0){
    $quer="SELECT * FROM tabella WHERE prov=$cat LIMIT $inizia_da , $n_elementi ORDER BY nome";
    }else{
    $quer="SELECT * FROM tabella LIMIT $inizia_da , $n_elementi ORDER BY nome";
    }

    ?>

    <div class="riga">
    <span class="rubrica"><?php echo $_GET['iniz'] ?></span> <?php $num = mysql_num_rows(mysql_query($quer)); ?><?php if(isset($_GET['iniz'])){?>(<?php echo $num; ?> Elementi)<?php } ?>
    </div>

    <div class="riga">
    <?php
    $quer=mysql_query($quer);
    while($pl = mysql_fetch_array($quer)) {
    echo $pl['nome']; ?
    }
    ?>
    [/PHP]


  • User

    Ho visto che la convivenza tra LIMIT e WHERE è possibile. Quindi non mi spiego cosa c'è che non va... infatti basta che tolgo il LIMIT e tutto funziona a parte la paginazione ovviamente... 🙂

    Aggiungo l'errore che mi presenta quando carico la pagina

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\WWW\Unpli\elenco.php on line 76

    Ciao e grazie ancora


  • User Attivo

    Prova a mettere LIMIT alla fine della query, dopo ORDER BY.

    SELECT * FROM tabella WHERE nome LIKE '$lett' ORDER BY nome LIMIT $inizia_da , $n_elementi;

    Solitamente la struttura di una query è questa.

    Ciao!


  • User

    Grazie per la risposta... infatti su un esempio che mi sono fatto ho visto che mettendo LIMIT come ultimo funziona... ma rimettendolo nello script non va continua a mandarmi il fatto che is not a valid result resource... ora sto continuando a provare. Idee?


  • ModSenior

    Ciao gigi-bg,

    al posto di:
    [php]
    $quer=mysql_query($quer);
    [/php]
    Metti:
    [php]
    $quer=mysql_query($quer) or die(mysql_error());
    [/php]

    In modo da vedere l'errore.