Probleme lors d'une recherche

Résolu
Lord Spartan Messages postés 5 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 3 novembre 2010 - 14 oct. 2010 à 09:52
Lord Spartan Messages postés 5 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 3 novembre 2010 - 3 nov. 2010 à 10:38
Bien le bonjour à tous, j'ai un petit soucis sur une de mes pages php.
j'ai un formulaire html avec un input de type text et un bouton submit,lorsque je rentre un mot clef et que je lance ma recherche elle m'affiche bien les résultats avec le nombre de page de ce résultat (5 résultats par page), mais quand je clic sur la page 2, elle m'affiche tous ce qu'il y a dans ma base de données soit 1xxx pages.
je crois que le problème vient du fait que quand je change de page, $_GET['Rref'] est vide alors qu'il devrait garder le résultat de mon input. Voici le code complet de la page PHP,Merci d'avance pour ceux qui peuvent m'aider.


<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns= 'http://www.w3.org/1999/xhtml'>

<head>
<meta content='text/html; charset=latin1' http-equiv='Content-Type' />
<title>Recherche par Ref</title>
</head>


<?php
//Connexion à la base de données
mysql_connect('localhost', 'root', '');
mysql_select_db('mcad2010');

$messagesParPage=5; //Nous allons afficher 5 messages par page.

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM mcad2010 WHERE Ref like "'.$_GET['Rref'].'" or Caracteristiques like "%'.$_GET['Rref'].'%" or Designation_du_site like "%'.$_GET['Rref'].'%" or Famille like "%'.$_GET['Rref'].'%" or Marque like "%'.$_GET['Rref'].'%"'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire

// La requête sql pour récupèrer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT * FROM mcad2010 WHERE Ref like "'.$_GET['Rref'].'" or Caracteristiques like "%'.$_GET['Rref'].'%" or Designation_du_site like "%'.$_GET['Rref'].'%" or Famille like "%'.$_GET['Rref'].'%" or Marque like "%'.$_GET['Rref'].'%" order by Ref LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grace à une boucle
{
?>

 Photos  |
Réf |
Description |
Détails |

----

"/>,
<?php echo $donnees_messages['Ref']; ?>,
<?php echo $donnees_messages['Caracteristiques']; ?>,
<center></center>,
<hr/>
<?php
}

echo 'Page : '; //Pour l'affichage, on centre la liste des pages
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 ' [recherche_par_ref.php?page='.$i.' '.$i.'] ';

     }
}
echo '

';
?>


</html>


J'ai trouvé ce code sur internet, il fonctionne parfaitement lors d'une requete sans methode GET du type SELECT * FROM mcad2010 WHERE Ref like "123456" or etc...

3 réponses

Lord Spartan Messages postés 5 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 3 novembre 2010
3 nov. 2010 à 10:38
trop de blabla tue le blabla,entre temps j'avais trouvé la solution
c'était plus simple que ça :
à la fin lors du changement de page il fallait justa rapeler ma variable '.$_GET['Rref'].'

 echo ' [recherche_par_ref.php?Rref='.$_GET['Rref'].'page='.$i.' '.$i.'] ';
3
cs_BenPourquoi Messages postés 5 Date d'inscription mardi 2 novembre 2010 Statut Membre Dernière intervention 8 novembre 2010
2 nov. 2010 à 10:42
Bonjour,
Je rencontre la même difficulté. Avez-vous trouvée la solution ?

Ne cherche qu'à grandir
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
2 nov. 2010 à 15:58
Salut

je regerde et je vois déja un $_GET['page'] direct dans la requête

trés peu sur !!!!! les hackers aime se genre de subtilité

tu devrais faire $ma_recherche=$_GET['Rref'];

et mettre $ma_recherche dans la requête

dans le premier like pourquoi supperimer % ... % laisse le
sinon si ton $_GET['Rref'] est vide ta requete plante



'SELECT COUNT(*) AS total FROM mcad2010 WHERE Ref like "%'.$_GET['Rref'].'%"
or Caracteristiques like "%'.$_GET['Rref'].'%"

place ça entre
$messagesParPage=5; //Nous allons afficher 5 messages par page.


et


$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.



if(isset($_GET['Rref']) && !empty($_GET['Rref']) ) {
echo "merci pour votre demande
"; 

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM mcad2010 WHERE Ref like "%'.$_GET['Rref'].'%"  or Caracteristiques like "%'.$_GET['Rref'].'%" or Designation_du_site like "%'.$_GET['Rref'].'%" or Famille like "%'.$_GET['Rref'].'%" or Marque like "%'.$_GET['Rref'].'%"'); //Nous récupérons le contenu de la requête dans $retour_total
echo $retour_total.'
'; //controle la requete
}  else { 
echo('probleme de requete');
}





au lieu du reste et teste
0
Rejoignez-nous