Lord Spartan
Messages postés5Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention 3 novembre 2010
-
14 oct. 2010 à 09:52
Lord Spartan
Messages postés5Date d'inscriptionmercredi 25 octobre 2006StatutMembreDerniè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...
Lord Spartan
Messages postés5Date d'inscriptionmercredi 25 octobre 2006StatutMembreDerniè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'].'
cod57
Messages postés1653Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention11 septembre 201319 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');
}