Probleme d'affichage pagination

Bonjour,
voila j’ai fais un script de recherche avec une pagination,
quand je fais la recherche il affiche bien les données correspondante. mais mon soucis est que quand je veux passé à la 2eme page avec la pagination, il m’affiche une page vide et non les résultat suivant demandé .

voici le code.



<?php
		if (isset($_POST['rechercher']))
		{
			mysql_connect("localhost", "root", "mysql");
			mysql_select_db("belgitopia");
			$q=$_POST['rechercher'];
			switch($_POST['choix'])
			{
				case "commune": $choix = "commune";
				break;	
				case "cp": $choix = "cp";
				break;	
				case "nom": $choix = "nom";
				break;	
				case "type_activite": $choix = "type_activite";
				break;	
				// On vérifie toutes les possibilités, pour ne pas pouvoir chercher dans des champs non autorisés.
			}	
			if ($q == '') 
			{
				echo 'Veuillez entrez votre recherche svp <br/>';
			}
			else		
			{
				$messageparpage=3;
				$retour_total= mysql_query ("SELECT COUNT(*) AS total from recherche WHERE $choix LIKE '%$q%'") or die (mysql_error()); //va chercher toutes les données qui se trouve la table annonce
				$donnees_total=mysql_fetch_assoc($retour_total);
				$total=$donnees_total['total'];
				$nombredepages=ceil($total/$messageparpage);
			
				if(isset($_GET['page']))
				{
					$pageactuelle=intval($_GET['page']);
				
					if($pageactuelle>$nombredepages)
					{
						$pageactuelle=$nombredepages;
					}
				}
				else
				{
					$pageactuelle=1;
				}
				$premiereentree=($pageactuelle-1)*$messageparpage;
				
				//$sql = "SELECT * FROM recherche WHERE $choix LIKE '%$q%'"; // On recherche dans la base séléctionnée
				$req=mysql_query("SELECT * FROM recherche WHERE $choix LIKE '%$q%' ORDER BY id DESC LIMIT ".$premiereentree.','.$messageparpage.'');
				//$req = mysql_query($d) or die(mysql_error());
				
				mysql_close();
				echo "<br/><br/>";
				while ($d = mysql_fetch_assoc($req))
				{
	?>
	
	
	<div class="image_nom">
		<div class="nom">
			<?php echo $d['nom']; ?>
		</div> <!--fermeture di nom-->
		<div class="image">
			<img class="image1_1" src="<?php echo $d['image1']; ?>" alt="image" />
		</div> <!--dermeture div image-->
	</div> <!--fermeture div image nom-->
		
	<div class="coordonee">
		<p>
		<b>Adresse:</b>
		</p>
		<p>
		<?php echo $d['adresse'] ?>
		<br/>
		<?php echo $d['cp'] ?>
		<?php echo $d['commune'] ?>
		</p>
		<p>
		<b>Tel:</b> <?php echo $d['tel'] ?>
		<b>Fax:</b> <?php echo $d['fax'] ?>
		</p>
		<p>
		<b>E-mail:</b> <?php echo $d['mail'] ?>
		</p>
	</div> <!--fermeture coordonee-->
	
	<div class="sous_descriptif">
				<a title="clic pour plus d'info" href="#" onclick="description1(<?php echo $d['id'];?>); return false;" style="color:#525253; margin-left: 25px;">Plus d'info</a> 
			</div> <!--fermeture sous_descriptif-->
			<div class="deco">
				<div id="cadre1<?php echo $d['id'];?>" style="display:none; border:3px solid #fff; padding: 5px;" >
					<div class="image2"> <a href="<?php echo $d['image2']; ?>" rel="lightbox"><img class="image2_2" src="<?php echo $d['image2']; ?>" title="clic pour agrandir"  alt="image" /></a>
					<p><?php echo $d['texte'];?></p>
					</div> <!--fermeture div image2-->
					<div class="texte_fin"><br/><br/>
					<strong>Horaire</strong><br/>
						<?php echo $d['horaires'];?><br/><br/>
					<div class="image_deco">
						<a href="<?php echo $d['image3']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image3']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<a href="<?php echo $d['image4']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image4']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<a href="<?php echo $d['image5']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image5']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<a href="<?php echo $d['image6']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image6']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<a href="<?php echo $d['image7']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image7']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<br/>
					</div> <!--fermeture div image deco-->
					</div> <!--fermeture div texte fin-->
				</div> <!--fermeture div cadre1-->
			</div> <!--fermeture div deco-->
	
					
		<?php 
				}
				echo '<p class="page" style="text-align: center;">Page : ';
				for($i=1; $i<=$nombredepages; $i++) //On fait notre boucle
				{
					//On va faire notre condition
					if($i==$pageactuelle) //Si il s'agit de la page actuelle...
					{
					echo ' [ '.$i.' ] '; 
					}	
					else //Sinon...
					{
					echo ' <a href="test.php?page='.$i.'" style="color:#7b7a7a;">'.$i.'</a> ';
					}
				}
				echo '</p>';
			}
		}

		
		?>

cela doit être une petite erreur (enfin j’espere lol :stuck_out_tongue: ) mais je la trouve pas.

Pouvez-vous m’aidez a la trouvé svp?
Merci à vous

Gabi

Tronconnes ton code en petits morceaux, suffisamment petits pour pouvoir les tester les uns apres les autres. Ca te permettra d’avoir confiance en certaines parties de ton code.

Malheureusement, je n’ai pas de compétence suffisante en php pour t’indiquer les bons outils, mais à défaut de mieux, voici une démarche simple :

  • tu prends un bloc d’instructions simple (sans if, sans for, etc)
  • tu déplaces tout ca dans un script php fils, que tu inclus dans le script principal
  • tu crées une autre page php de test qui inclut le fils, dans lequel tu initialises les parametres nécessaires au fils
  • tu lances le test, et tu vois si ca marche comme attendu

Et ainsi de suite pour tous les autres blocs. Ca peut paraitre long, mais perso je considere la démarche fondamentale. Pour réduire ce temps, ben des développeurs spécialisés pourront te conseiller des frameworks, d’autres facons de faire plus optimales, etc.

Je te remercie pour ta réponse, je vais suivre ton conseil et essayer comme cela.

Bonne journée a toi

Allez, j’t’aide un peu parce que sinon me réponse sonnerait un peu trop théorique / creuse / superficielle. On pourrait commencer par toute la partie ou tu génères du html :

  • On déplace tout dans un script “resultat_recherche.php”
  • On pose l’inclusion dans la page parente
  • On crée une page “test_resultat_recherche.php” et on initialise les variables $d[‘nom’], $d[‘image1’], $d[‘adresse’], $d[‘cp’], $d[‘commune’], $d[‘tel’] , $d[‘fax’] , $d[‘mail’] , $d[‘id’], $d[‘image2’], $d[‘texte’], $d[‘horaires’], $d[‘image3’], $nombredepages, $pageactuelle
  • Et on lance “test_resultat_recherche.php”
  • Et on voit si ca a la bonne allure.

(Jsuis désolé, jpeux pas etre plus précis que ca parce que j’ai pas fait de php depuis … pfoulala …)

pas de soucis, c’est déjà bien gentil de bien vouloir le donné un coup de pouce :slight_smile:

:slight_smile:

Si tu suis la démarche, n’hésite pas à poster tes résultats, tes pages de test, tes impressions etc etc.

bon ben rien a faire ça fonctionne pas :/, apparemment il ne garderait pas en mémoire la recherche demandé quand je passe a page 2 :frowning:

C’est simple : soit il y a un bug dans ce que tu utilises -MySql, PHP, Tomcat, etc.-, soit il y a un bug dans ton programme.

J’aurais vaguement tendance à opter pour ton programme.

Je te recommande de poursuivre la démarche de tests.

oui apparement je pense que le probleme vient de

  if (isset($_POST['rechercher']))

qui le premier test de mon code.

juste pour te tenir au courant vitamin,

j’ai donc du remplacer les $_post par $_REQUEST et modifier la ligne

echo ’ ‘.$i.’ ';
par
echo ’ ‘.$i.’ ';

maintenant cela fonctionne pour la pagination mais que apparemment mon script n’est pas sécurisé, donc je dois me penché la dessus maintenant, mais comment peut on savoir si un code est sécurisé ou pas, je me pose la question.

Merci encore de ton aide :slight_smile:
Edité le 27/05/2009 à 23:02

[quote="gabi1202"que apparemment mon script n’est pas sécurisé
[/quote]

J’adore ce genre de phrase anxiogène et vague. La personne qui t’a dit ca ne pourrait elle pas être plus explicite ?

Sinon voilà une bonne piste
maximilian.developpez.com…

En général, et en particulier pour les sites Internet, c’est pas topissime de construire des requêtes SQL avec des données saisies par l’utilisateur.

Sinon SELECT COUNT(*) -> SELECT COUNT(1)

Bonus : tous les commentaires que t’as écrit peuvent être effacés. Si tu as du mal à comprendre par la suite, il faudrait alors que tu fasses un effort sur la manière dont tu as écrit le code, plutot que sur le contenu des commentaires.