[PHP/MYSQL] LIMIT devient fou !?

Résolu/Fermé
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 - 6 oct. 2006 à 13:55
oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 - 16 oct. 2006 à 15:07
LIMIT devient fou ... et moi aussi !!

Bonjour !

Encore besoin d'aide ... ça faisait au moins 2 jours que je m'en sortais comme une grande ! ;-)

Bon, là je comprends plus rien !

Dans un form, j'essaye d'exécuter une requête pour consulter des instances contenues dans ma base de données MySQL. J'ai aussi créé un bouton de type SUBMIT qui permet de demander les 10 enregistrements suivants ... et ainsi de suite, on pourra consulter toute la table au final !!

Voilà mon code ... en plus je fais des affichages pour être sûre de ce que je demande !!
$from=0;
$to=$from+10;

echo"from = ".$from."<br>";
$nb=$to-$from;
echo"Nombre de lignes que je veux afficher : ".$nb;
$requeteRSSI="SELECT * FROM RSSI ORDER BY RSSI_ID DESC LIMIT ".$from.",".$nb;
echo"La requête que j'essaye d'exécuter : ".$requeteRSSI."<br>";
echo"Nombre lignes obtenues suite à la requête : ".mysql_num_rows($resultatRSSI)."<br>";

Ce qui s'affiche quand je lance mon php :

from = 0
Nombre de lignes que je veux afficher : 10
La requête que j'essaye d'exécuter : SELECT * FROM RSSI ORDER BY RSSI_ID DESC LIMIT 0,10
Nombre lignes obtenues suite à la requête = 10

Hey, c'est que ça marche ... je sais me servir de echo !! Jusque là, tout va bien !! En plus en dessous, les 10 dernières instances s'affichent ...

Quand je clique sur mon bouton, je réexécute le même script et obtiens :

from = 10
Nombre de lignes que je veux afficher : 10
La requête que j'essaye d'exécuter : SELECT * FROM RSSI ORDER BY RSSI_ID DESC LIMIT 10,10
Nombre lignes obtenues suite à la requête = 10

Là, ça va toujours ... hé ben non !! Mon tableau ne se remplit pas !! C'est fou quand même ... je ne savais pas vraiment me servir de LIMIT, je suis allée sur phpMyAdmin et là j'ai exécuté la même requête ... Elle marche pas dans mon php mais dans phpMyAdmin tout marche !!

C'est à n'y rien comprendre !! Enfin, moi je suis perdue ... Aidez moi s'il vous plaît !!

Merci d'avance :-)
A voir également:

6 réponses

oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 248
6 oct. 2006 à 15:55
Bonjour Elsa,
Cela faisait effectivement deux jours, ca me manquait. :)
Peut on voir le code de remplissage du tableau, stp ?
0
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
6 oct. 2006 à 16:27
Coucou oberion,

Mes débuts difficiles font rire ... j'espère pouvoir en rire un jour aussi ;-)

Bon, j'envoie le remplissage de mon tableau ... Le code n'est pas optimisé, sûrement mal écrit, mal pensé ... J'espère que cette lecture barbare ne sera pas trop dure !! Je souhaite donc bon courage à tous ceux et toutes celles qui me liront et m'aideront !!

<?php
require'../require/en_tete.php';

// connection bdd + variable 
require'../require/connexionBD.php';




// compteur des affichages : on affichera les enregistrements 10 par 10

if((isset($_POST['FROM_HIDDEN'])) && (isset($_POST['TO_HIDDEN']))){
	$from=$_POST['FROM_HIDDEN'];
	$to=$_POST['TO_HIDDEN'];
}
else{
	$from=0;
	$to=$from+10;
}

$newFrom=$from+10;
$newTo=$to+10;
	
echo"<form action='consulterRSSI.php' method='post'>";
	echo"<input type='hidden' value='".$newFrom."' name='FROM_HIDDEN'>";
	echo"<input type='hidden' value='".$newTo."' name='TO_HIDDEN'>";
	echo"<button type='submit' action='consulterRSSI.php' style='background:lavender'; cursor:hand; border:solid 1px lavender; name='enregistrementsSuivants'>";
	echo"<img src='../images/next.gif'>";
	echo"</button>";

echo"</form>";


?>

<TABLE align='center' cellspacing='1' border='1'>
<TR>
<td>&#160;</td>
<td>&#160;</td>
<td>&#160;</td>
<td>&#160;</td>
<td div align="center" class="form_field" colspan="3">Dates</td>
<td>&#160;</td>
<td div align="center" class="form_field" colspan="3">Charges</td>
<td>&#160;</td>
</TR>

<TR>
<td class="form_field">N°</td>
<td class="form_field">Activité</td>
<td class="form_field">Sous activité</td>
<td class="form_field">Création</td>
<td class="form_field">Début</td>
<td class="form_field">Fin</td>
<td class="form_field">Echéance</td>
<td class="form_field">Etat</td>
<td class="form_field">Prévisionnelles</td>
<td class="form_field">Consommées</td>
<td class="form_field">Restantes</td>
<td>&#160;</td>
</TR>

<?php
echo"from = ".$from."<br>";
$nb=$to-$from;
echo"Nombre de lignes que je veux afficher : ".$nb."<br>";
$requeteRSSI="SELECT * FROM RSSI ORDER BY RSSI_ID DESC LIMIT ".$from.",".$nb;
echo"La requête que j'essaye d'exécuter : ".$requeteRSSI."<br>";
$resultatRSSI=mysql_query($requeteRSSI) or die ("Exécution de la requête impossible".$requeteRSSI."<br />".mysql_error());
$enregistrements=mysql_fetch_row($resultatRSSI);	
echo"Nombre lignes obtenues suite à la requête = ".mysql_num_rows($resultatRSSI)."<br>";
	for ($i = $from; $i < mysql_num_rows($resultatRSSI)-1; $i++) {
		if ($i%2==0){
			$color='B0C4DE';
		}
		else{
			$color='F5F5F5';
		}
		echo("<TR BGCOLOR=".$color.">");
		echo"<form name='form".$i."' action='modifierRSSI.php' method='post'>";
	
		$row_array = mysql_fetch_row($resultatRSSI);
		for ($j = 0; $j < mysql_num_fields($resultatRSSI); $j++) {
			switch($j){
				case 0:
					echo"<input type='hidden' value='".$row_array[$j]."' name='ID_HIDDEN'>";
					echo"<td class='form_text'>".$row_array[$j]."</td>";
					break;
				case 1: // Activité
					$requeteActivite="SELECT a.NOM_ACTIVITE FROM ACTIVITE_RSSI a WHERE a.ACTIVITE_ID='$row_array[$j]'";
					$resultatActivite=mysql_query($requeteActivite) or die ("Exécution de la requête impossible".$requeteActivite."<br />".mysql_error());
					$nomActivite=mysql_fetch_array($resultatActivite);
					$reponse=$nomActivite[0];
					echo("<td class='form_text'>" . $reponse . "</td>");
					break;
				case 2: // Sous-activité
					$requeteSousActivite="SELECT s.NOM_SOUS_ACTIVITE FROM SOUS_ACTIVITE_RSSI s, ACTIVITE_RSSI a WHERE s.SOUS_ACTIVITE_ID='$row_array[$j]'";
					$resultatSousActivite=mysql_query($requeteSousActivite) or die ("Exécution de la requête impossible".$requeteSousActivite."<br />".mysql_error());
					$nomSousActivite=mysql_fetch_array($resultatSousActivite);
					$reponse=$nomSousActivite[0];
					echo("<td class='form_text'>" . $reponse . "</td>");
					break;
				case 3: // Date de création
					$dateCreation=$row_array[$j];
					$anneeCreation=substr($dateCreation, 0, 4);
					$moisCreation=substr($dateCreation, 5, 2);
					$jourCreation=substr($dateCreation, 8, 2);
					if ($jourCreation<>0 && $moisCreation<>0 && $anneeCreation<>0){
						echo("<td class='form_text'>Le ".$jourCreation."/".$moisCreation."/".$anneeCreation);
					}
					else{
						echo"<td>&#160;</td>";
					}
					break;
				case 4: // Heure de création
					if ($row_array[$j]<>0){
						echo(" à ".$row_array[$j]."</td>");
					}
					break;
				case 5: // Début
					$dateDebut=$row_array[$j];
					//$dateFin=$row_array[$j];echo$row_array[$i];echo"   ";echo$dateDebut;echo"   ";
					$anneeInstance=substr($dateDebut, 0, 4);
					$moisInstance=substr($dateDebut, 5, 2);
					$jourInstance=substr($dateDebut, 8, 2); 
					if ($jourInstance<>0 && $moisInstance<>0 && $anneeInstance<>0){
						$debutHIDDEN=1;
						echo("<td class='form_text'>Le ".$jourInstance."/".$moisInstance."/".$anneeInstance."</td>");
					}
					else{
						$debutHIDDEN=0;
						echo"<td>&#160;</td>";
					}
					echo "<input type='hidden' value='".$debutHIDDEN."' name='DATE_DEBUT_HIDDEN'>";
					break;
				case 6: // Fin
					$dateFin=$row_array[$j];
					$anneeInstance=substr($dateFin, 0, 4);
					$moisInstance=substr($dateFin, 5, 2);
					$jourInstance=substr($dateFin, 8, 2); 
					if ($jourInstance<>"0" && $moisInstance<>"0" && $anneeInstance<>"0"){
						$finHIDDEN=1;
						echo("<td class='form_text'>Le ".$jourInstance."/".$moisInstance."/".$anneeInstance."</td>");
					}
					else{
						$finHIDDEN=0;
						echo"<td>&#160;</td>";
					}
					echo "<input type='hidden' value='".$finHIDDEN."' name='DATE_FIN_HIDDEN'>";
					break;
				case 7: // Echéance
					$dateEcheance=$row_array[$j];
					$anneeInstance=substr($dateEcheance, 0, 4);
					$moisInstance=substr($dateEcheance, 5, 2);
					$jourInstance=substr($dateEcheance, 8, 2); 
					if ($jourInstance<>0 && $moisInstance<>0 && $anneeInstance<>0){
						$echeanceHIDDEN=1;
						echo("<td class='form_text'>Le ".$jourInstance."/".$moisInstance."/".$anneeInstance."</td>");
					}
					else{
						$echeanceHIDDEN=0;
						echo"<td>&#160;</td>";
					}
					echo "<input type='hidden' value='".$echeanceHIDDEN."' name='DATE_ECHEANCE_HIDDEN'>";
					break;
				case 8: // Etat
					//echo$row_array[$j];
					$requeteEtat="SELECT ETAT_LIBELLE FROM ETAT WHERE ETAT_ID='$row_array[$j]'";
					$resultatEtat=mysql_query($requeteEtat) or die ("Exécution de la requête impossible".$requeteEtat."<br />".mysql_error());
					$etat=mysql_fetch_array($resultatEtat);
					$reponse=$etat[0];
					if (isset ($reponse)){
						echo("<td class='form_text'>" . $reponse . "</td>");
					}
					else {
						echo"<td>&#160;</td>";
					}
					break;
				case 9: // Charges prévisionnelles
					$cph=intval(abs($row_array[$j]/60));
					$cpm=$row_array[$j]%60;
					echo"<td class='form_text'>";
					if ($cph<10){
						echo("0".$cph.":");
					}	
					else{
						echo("".$cph.":");
					}
					if ($cpm<10){
						echo("0".$cpm);
					}
					else{
						echo$cpm;
					}
					echo"</td>";
					if($cph==0 && $cpm==0){
						echo "<input type='hidden' value='0' name='CHARGES_PREVISIONNELLES_HIDDEN'>";
					}
					else{
						echo "<input type='hidden' value='1' name='CHARGES_PREVISIONNELLES_HIDDEN'>";
					}
					break;
				case 10: // Charges consommées
					$cch=intval(abs($row_array[$j]/60));
					$ccm=$row_array[$j]%60;
					echo"<td class='form_text'>";
					if ($cch<10){
						echo("0".$cch.":");
					}	
					else{
						echo("".$cch.":");
					}
					if ($ccm<10){
						echo("0".$ccm);
					}
					else{
						echo$ccm;
					}
					echo"</td>";
					if ($cch==0 && $ccm==0){
						echo "<input type='hidden' value='1' name='CHARGES_CONSOMMEES_HIDDEN'>";
					}
					else{
						// on instancie toujours CHARGES_CONSOMMEES_HIDDEN à 0 parce qu'on ne veut pas que ce champ soit modifiable
						echo "<input type='hidden' value='1' name='CHARGES_CONSOMMEES_HIDDEN'>";
					}
					break;
				case 11: // Charges restantes
					$crh=intval(abs($row_array[$j]/60));
					$crm=$row_array[$j]%60;
					echo"<td class='form_text'>";
					if ($crh<10){
						echo("0".$crh.":");
					}	
					else{
						echo("".$crh.":");
					}
					if ($crm<10){
						echo("0".$crm);
					}
					else{
						echo$crm;
					}
					echo"</td>";
					if ($crh==0 && $crm==0){
						echo "<input type='hidden' value='0' name='CHARGES_RESTANTES_HIDDEN'>";
					}
					else{
						echo "<input type='hidden' value='1' name='CHARGES_RESTANTES_HIDDEN'>";
					}
					break;
				default:
					echo("<td class='form_text'>" . $row_array[$j] . "</td>");
			}
		}
	// bouton de modification (1 par ligne)
	echo("<TD align='right'>");
	echo"<button type='submit' action='modifierRSSI.php' style='background:".$color."; cursor:hand; border:solid 1px ".$color."; name=bouton".$i." value=".$row_array[$i]."'>";
	echo"<img src='../images/modifier.png'>";
	echo"</button>";
	echo("</form>");
	echo("</TD>");
	echo("</tr>");
	}
?>
</table>
<TR>
</TABLE>

1000 mercis !

aaaahhh !! je viens de cliquer sur "Prévisualiser" avant de poster ... j'ai un peu honte de vous infliger cette lecture !!
0
oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 248
6 oct. 2006 à 16:57
Bon, ya des trucs bourrins.
Plutot que de faire un "select * " fais un select des champs qui t'interressent, plutot que de faire une boucle for et un switch. Tu gagneras en performance et en lisibilité. :)
Ton problème vient surement de la. Revois ton code proprement, ca va fonctionner. :)
0
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
16 oct. 2006 à 12:39
Bonjour oberion,

Merci de m'avoir répondu !!

Je n'ai toujours pas pu effectuer les changements nécessaires au bon fonctionnement de mon programme parce que jusqu'à aujourd'hui, j'étais en maladie ...

Je m'y mets dès que je peux ... le plus tôt serait le mieux !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
16 oct. 2006 à 13:07
Excellent !!

Ca marche enfin !

MERCI ... ;-)
0
oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 248
16 oct. 2006 à 15:07
C'est cool ! :)
0