Page 1 sur 1

select limit 0,9

Posté : 26 août 2008, 17:28
par nad21
Bonjour
Voila sur un meme page a differents endroits je veux chercher dans ma base 9 enregistrements
mais le hic c'est que quand je cherche limit 0,9 ca marche mais quand plus loin je veux mettre la suite limit 10,18 ca me raffiche encore les 9 premiers polus les 9 autres
je mets le code en dessous
qqun peut il me dire ou ca bug
merci
nadege
<?php 
$link = mysql_connect ($host,$user,$password) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
if($id==""){
$id='1';
}
$limit = 9; 
if (empty($debut)) { 
    $debut = 0; 
}  
$nbr_tot = mysql_fetch_array(mysql_query("SELECT count(id) FROM ma table ORDER BY id ASC")); 

$req ="select * FROM matable ORDER BY id ASC limit 10,11 "; 
$resultat = mysql_query($req);
 
while($data = mysql_fetch_array($resultat)) 
{ 
$tablo[]=$data; //on met les donn&eacute;es dans un tableau 
} 

$nbcol=3; // mise en page sur X colonnes 

echo "<table width='190'  height='188' align='center' cellpadding='0' cellspacing='0' border='0'>";

for($i=0;$i<count($tablo);$i++){ 
$valeur1=$tablo[$i]['id']; 
$valeur2=$tablo[$i]['miniature'];
$valeur3=$tablo[$i]['photos']; 
$valeur4=$tablo[$i]['texte']; 


if($i%$nbcol==0)
	  
echo "<tr>";              
echo " <td height=\"45\" align=\"center\">";
if (($valeur2=="rien.jpg"))
{
echo  "<img src=\"img/$valeur2\" height=\"60\" width=\"60\" border=\"0\" > "; 
}

else {
echo "<a href=\"page.php?id=$valeur1\"><img src=\"img/$valeur2\" height=\"60\" width=\"60\" border=\"0\"></a> ";       }         
if($i%$nbcol==($nbcol-1)) 
echo "</td></tr>"; 
} 
echo "</table>";  
mysql_close(); 
?>
le ceode d'avant et identique sauf que j'ai limit 0,9

Posté : 26 août 2008, 17:31
par Vurtu
C'est le bon code ?

Pour moi ton code fait "Limit 10,11" et $limit n'est jamais utilisé ...

Posté : 26 août 2008, 17:39
par Invité
oui effectivement c'est inutile
le bon code est là
 <?php 
$link = mysql_connect ($host,$user,$password) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
if($id==""){
$id='1';
}

$req ="select * FROM bijoux ORDER BY id ASC LIMIT 0,9 "; 
$resultat = mysql_query($req);
 
while($data = mysql_fetch_array($resultat)) 
{ 
$tablo[]=$data; //on met les donn&eacute;es dans un tableau 
} 

$nbcol=3; // mise en page sur X colonnes 

echo "<table width='190'  height='188' align='center' cellpadding='0' cellspacing='0' border='0'>";

for($i=0;$i<count($tablo);$i++){ 
$valeur1=$tablo[$i]['id']; 
$valeur2=$tablo[$i]['miniature'];
$valeur3=$tablo[$i]['photos']; 
$valeur4=$tablo[$i]['texte']; 


if($i%$nbcol==0)
	  
echo "<tr>";              
echo " <td height=\"45\" align=\"center\">";
if (($valeur2=="rien.jpg"))
{
echo  "<img src=\"bijoux/$valeur2\" height=\"60\" width=\"60\" border=\"0\" alt=\"bijoux \"> "; 
}
elseif ($valeur1=="$id"){
echo "<img src=\"bijoux/$valeur2\" height=\"60\" width=\"60\" border=\"0\" alt=\"bijoux\"/> ";}

else {
echo "<a href=\"collection bijoux2.php?id=$valeur1\"><img src=\"bijoux/$valeur2\" height=\"60\" width=\"60\" border=\"0\" alt=\"bijoux\"></a> ";       }         
if($i%$nbcol==($nbcol-1)) 
echo "</td></tr>"; 
} 
echo "</table>";  
mysql_close(); 
?>

Posté : 26 août 2008, 17:43
par Vurtu
et le l'autre limit ?

Posté : 26 août 2008, 17:45
par Invité
ben l'autre c'est exactement pareil sauf sauf que je change la ligne
select * FROM bijoux ORDER BY id ASC LIMIT 10,11

et là tout ca m'affiche tous les enregistrements
ce qui est louche c'est que quand je copie cette ligne de code dans phpmyadmin
ca marche tres bien

Posté : 26 août 2008, 17:51
par Vurtu
a savoir

Limit 10,11
ca veut dire, sélectionne les 11 enregistrements après le 10 ème. Du 10 au 21 donc

Posté : 26 août 2008, 18:12
par Invité
alors pouruqoi ca me marque ceux du 1 au 11

je voudrais d'abord les id de 1 à 9 donc limit 0,9
et ensuite les id de 10 à 18 donc limit de 10,9
mais la ca marche pas

Posté : 26 août 2008, 18:14
par Vurtu
combien y'a t'il d'enregsitrements dans ta table ?
y'a t'il des trous dans les identifiants ?

Posté : 26 août 2008, 18:16
par Invité
ya 11 enregistrements pour l'instant y'en aura 18bientot
et pas de trous non

Posté : 27 août 2008, 10:26
par Ryle
Si tu as 11 enregistrements, un LIMIT 0, 9 affichera les neuf premiers, et un LIMIT 9, 9 les deux suivants.
Par contre ton code ne prend absolument pas en compte la notion de page, ni ne modifie la requête en conséquence.

Il te faudrait quelque chose du genre
$req ="select * FROM bijoux ORDER BY id ASC LIMIT " . ($numeroPage*9) . ", 9 ";  
Avec $numeroPage allant de 0 (par défaut) à N en fonction de liens précédents/suivants

Le forum FAQ contient des explications détaillées sur ce sujet :
:arrow: Afficher des éléments page par page