- Home
- Categorie
- Coding e Sistemistica
- PHP
- Estrarre da db valori con WHERE e poi fare la paginazione
-
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]
-
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
-
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!
-
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?
-
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.