Affichage de resultat apres requete

petinico -  
 petinico -
bonjour,

j'ai un moteur de recherche qui utilise une requete à base de mot-clés, pour afficher des images. Mon script fonctionne mais mes resultats sont toujours les memes, c'est à dire les 15 premieres images de la bdd. Sachant que :
- ma requete fonctionne dans un autre script
- je l'ai testée en enlevant le "limit..."
- j'ai tenté de renommer differement mes "select" et "result"

j'ai toujours le meme resultat !! pourquoi la requete ne respecte pas les mot-cle selectionnés, et affiche-t-elle toujours les 15 premieres images quelles qu'elles soient ?

<?
// Connection à la base.
$db = mysql_connect ("sql.maisonx.com", "qualitypics", "dusty") or die ('impossible de se connecter');
mysql_select_db("qualitypics", $db) or die ('impossible de selectionner la base');

$nombre = 15; // on va afficher 15 résultats par page.
if (!$limite) $limite = 0; // si on arrive sur la page pour la première fois
// on met limite à 0.

$path_parts = pathinfo($PHP_SELF);
$page = $path_parts["basename"];

// compte le nombre total d'enregistrements
$select = 'SELECT count(id) FROM photo';
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );
$ligne = mysql_fetch_row($result);
$total = $ligne[0];

//Selectionne la portion d'enregistrements à afficher.
$select = "select numero from photo where motcle1='$cle1' or motcle2='$cle1' or motcle3='$cle1' or motcle1='$cle2' or motcle2='$cle2' or motcle3='$cle2' or motcle1='$cle3' or motcle2='$cle3' or motcle3='$cle3' limit $limite,$nombre";
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );

// requete de selection de la premiere page
$select = "SELECT numero FROM photo limit 0,15";
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );

// affichage des resultats de la premiere page
while ($ligne = mysql_fetch_array ($result))
{
print "$ligne[0]<a href=\"albumembre.php?image=images/maj01_08_03/$ligne[0]$numero.jpg
\" target=\"_new\"><img src=\"images/maj01_08_03/".$ligne[0].$numero."a.jpg\" border=\"0\" height=\"123\"></a>";
}
mysql_free_result ($result);

// reinitialisation de $limite pour afficher la page suivante
$limite=$nombre*($numero_page-1);

// calcul des limites suivantes et precedentes
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;

// Affichage du lien précedent si besoin
if($limite != 0) {
echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>';
}

// Affichage du lien suivant si besoin
if($limitesuivante < $total) {
echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>';
}

?>

merci par avance
petinico
A voir également:

7 réponses

Utilisateur anonyme
 
Ca merdouille a partir de la.

//Selectionne la portion d'enregistrements à afficher.
$select = "select numero from photo where motcle1='$cle1' or motcle2='$cle1' or motcle3='$cle1' or motcle1='$cle2' or motcle2='$cle2' or motcle3='$cle2' or motcle1='$cle3' or motcle2='$cle3' or motcle3='$cle3' limit $limite,$nombre";
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );

Tu fais une requete, tu n'exploites pas les résultats, et tu ecrases $result avec une autre requete. Ca peut pas fonctionner.

Ensuite, tu as un probleme avec les limites.

// requete de selection de la premiere page
$select = "SELECT numero FROM photo limit 0,15";

Ca ne pourra que t'afficher la premiere page, pas les suivantes.
Ensuite ton $limite est réinitialisé au début du script à 15. C'est une deuxieme raison au non affichage des valeurs suivantes.

Kalamit,
Parle à ma culasse, mon carter est malade. :)
0
petinico
 
salut Kalamit,

peut-tu me donner plus de details ?

- comment exploiter les resultats de la requete sans ecraser $result
- et comment et où utiliser le $limite pour afficher les autres pages ?

merci
petinico
0
Utilisateur anonyme
 
Pour tes limites au début du script, tu verifies si $limite contient quelque chose. Si c'est pas le cas, il s'agit de la premiere page donc les quinze premiers résultat. Si c'est le cas, tu affiches les résultats de $limite à $limite+$nombre...

if(!isset($limite)){
     $limite = 15;
}


Pour la suite, faudrait que je regarde plus en détail mais je peux deja te dire que ca va pas la:

//Selectionne la portion d'enregistrements à afficher. 
$select = "select numero from photo where motcle1='$cle1' or motcle2='$cle1' or motcle3='$cle1' or motcle1='$cle2' or motcle2='$cle2' or motcle3='$cle2' or motcle1='$cle3' or motcle2='$cle3' or motcle3='$cle3' limit $limite,$nombre"; 
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() ); 

// requete de selection de la premiere page 
$select = "SELECT numero FROM photo limit 0,15"; 
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() ); 


$result est utilisé deux fois, sans aller chercher les résultats !

Kalamit,
Parle à ma culasse, mon carter est malade. :)
0
petinico
 
j'ai l'impression que tu es dans le vrai !

voilà mes modifs :

j'ai peut-etre une piste :

//Selectionne la portion d'enregistrements à afficher.
$select = "select numero from photo where motcle1='$cle1' or motcle2='$cle1' or motcle3='$cle1' or motcle1='$cle2' or motcle2='$cle2' or motcle3='$cle2' or motcle1='$cle3' or motcle2='$cle3' or motcle3='$cle3' limit 0,15"; // limit $limite,$nombre";
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );

// requete de selection de la premiere page
// $select = "SELECT numero FROM photo limit 0,15";
// $result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );

// affichage des resultats de la premiere page
while ($ligne = mysql_fetch_array ($result))
{

print "$ligne[0]<a href=\"albumembre.php?image=images/maj01_08_03/$ligne[0]$numero.jpg
\" target=\"_new\"><img src=\"images/maj01_08_03/".$ligne[0].$numero."a.jpg\" border=\"0\" height=\"123\"></a>";
}
mysql_free_result ($result);

cette fois ça affiche 15 photos correspondant à la requete avec les liens. par contre alors que c'est la premiere page, j'ai un lien precedent (donc pas logique) et le suivant affiche n'importe quoi !

@+
petinico
0
Utilisateur anonyme
 
Fais voir un echo de $page, stp.

Kalamit,
Parle à ma culasse, mon carter est malade. :)
0
petinico
 
echo $page; renvoie le nom de la pge de destination
ou doivent s'afficher les photos...
0

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

Posez votre question
Utilisateur anonyme
 
OK.
Je te demandais ca, parce que je sais que ca:
$path_parts = pathinfo($PHP_SELF);
$page = $path_parts["basename"];

ne fonctionne pas chez certains hebergeurs...

Un truc que je ne comprends pas...
C'est quoi ca :
// reinitialisation de $limite pour afficher la page suivante
$limite=$nombre*($numero_page-1);


Kalamit,
Parle à ma culasse, mon carter est malade. :)
0
petinico
 
je le comprends pas moi-meme !
en fait dans un autre forum, on m'a donné ce code en m'expliquant qu'il fallait reinitialisé $limite apres chaque affichage...
0
petinico
 
bon, en insistant on va y arriver !

j'ai modifié mon $ligne (j'ai remarqué qu'il y en avait 2 !) :

// compte le nombre total d'enregistrements
$select = 'SELECT count(id) FROM photo';
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );
$rows = mysql_fetch_row($result);
$total = $rows[0];

Sinon, j'ai toujours un probleme de lien, ma premiere page s'affiche avec le lien 'suivant' et j'ai cree une boucle pour incrementer la limite :

// calcul des limites suivantes et precedentes
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;

// Affichage du lien suivant si besoin
while($limitesuivante < $total)
{
echo '<a href="'.$page.'?limit '.$limite.','.$nombre.'">Page Suivante</a>';
$limite = $limite + $nombre;
exit;
}
j'ai crée une boucle pour aller au bout de $total, mais elle s'arrete à 'exit', mais si je l'enleve, elle tourne à l'infini...par contre le lien est bien" limit 15,15 pour la 2eme page et limit 30,15 pour la troisieme...

à l'aide..merci

@+
petinico
0