Recherche et affichage plusieur page

PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005 - 7 août 2005 à 15:47
PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005 - 17 août 2005 à 19:46
Bonjour a tous

Voila je viens chercher un peu d'aide, car je suis debutant et apres avoir fouille le site et le forum j'arrive toujours pas a me depatouiller de mon probleme.

Donc ca vas etre un peu long mais je vais essayer de tout expliquer et d'etre le plus claire possible.

J'ai une base de donnee avec plusieur champs que j'affiche dans un tableau....jusque la aucun probleme....Pour un meilleur affichage je decide donc de decouper tout cela page par page avec 4 lignes par page et un petit "suivant" "precedent" pour changer de page....impecable tout fonctionne.
Du coup j'y ajoute une fonction recherche....la aucun probleme ca marche impecable aussi temps que j'affiche tout les resultats sur une seule page....
du coup a ce stade je decide de faire le meme affichage (page par page avec 4resultats par page) comme j'avais fait au dessu....
Mais la le probleme c'est que la recherche marche bien, il m'indique le bon nombre de resultat, affiche bien les 4premier, mais quand je clic sur "suivant" il me donne bien le nombre de resultat mais les affiches pas dans le tableau et si je fais un retour la aussi y a erreur je reviens pas sur ma page de resultat.....

Donc je pense pas que mon code soit totalement faux, mais simplement qu'il y a un truc que j'ai zappe ou qui me depasse.....
Donc si quelqu'un a la solution ou une idée de la chose....en sachant que je suis vraiment Debutant....
MERCI a Tous.....

Mon code a l'heure actuel:
<?php require_once('Connections/infos.php'); ?>
<?php
$currentPage = $_SERVER["PHP_SELF"];


$maxRows_INFOSresultat = 4;
$pageNum_INFOSresultat = 0;
if (isset($_GET['pageNum_INFOSresultat'])) {
$pageNum_INFOSresultat = $_GET['pageNum_INFOSresultat'];
}
$startRow_INFOSresultat = $pageNum_INFOSresultat * $maxRows_INFOSresultat;


$colname_INFOSresultat = "0";
if (isset($_POST['recherche'])) {
$colname_INFOSresultat = (get_magic_quotes_gpc()) ? $_POST['recherche'] : addslashes($_POST['recherche']);
}
mysql_select_db($database_infos, $infos);
$query_INFOSresultat = sprintf("SELECT DEPARTEMENT, LIEUX, style, description, acces, details FROM infos WHERE DEPARTEMENT LIKE '%%%s%%' OR LIEUX LIKE '%%%s%%' OR style LIKE '%%%s%%' OR description LIKE '%%%s%%' OR details LIKE '%%%s%%'", $colname_INFOSresultat,$colname_INFOSresultat,$colname_INFOSresultat,$colname_INFOSresultat,$colname_INFOSresultat);
$query_limit_INFOSresultat = sprintf("%s LIMIT %d, %d", $query_INFOSresultat, $startRow_INFOSresultat, $maxRows_INFOSresultat);
$INFOSresultat = mysql_query($query_limit_INFOSresultat, $infos) or die(mysql_error());
$row_INFOSresultat = mysql_fetch_assoc($INFOSresultat);


if (isset($_GET['totalRows_INFOSresultat'])) {
$totalRows_INFOSresultat = $_GET['totalRows_INFOSresultat'];
} else {
$all_INFOSresultat = mysql_query($query_INFOSresultat);
$totalRows_INFOSresultat = mysql_num_rows($all_INFOSresultat);
}
$totalPages_INFOSresultat = ceil($totalRows_INFOSresultat/$maxRows_INFOSresultat)-1;


$queryString_INFOSresultat = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_INFOSresultat") == false &&
stristr($param, "totalRows_INFOSresultat") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_INFOSresultat = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_INFOSresultat = sprintf("&totalRows_INFOSresultat=%d%s", $totalRows_INFOSresultat, $queryString_INFOSresultat);
?>
<link href="style.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Style2 {
color: #00FFFF;
font-weight: bold;
}
.Style3 {color: #FF00FF}
.Style4 {color: #000000}
-->
</style>

<form action="INFOSresultat.php" method="post" name="recherche" id="recherche">

RECHERCHE :,



</form>
Il y a <?php echo $totalRows_INFOSresultat ?> réponses.



DEP,
LIEUX,
STYLE,
DESCRIPTION,
ACCES,
DETAILS,

<?php do { ?>
----

<?php echo $row_INFOSresultat['DEPARTEMENT']; ?>,
<?php echo $row_INFOSresultat['LIEUX']; ?>,
<?php echo $row_INFOSresultat['style']; ?>,
<?php echo $row_INFOSresultat['description']; ?>,
<?php echo $row_INFOSresultat['acces']; ?>,
" target="_blank">,

<?php } while ($row_INFOSresultat = mysql_fetch_assoc($INFOSresultat)); ?>



">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="30" height="30">

http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="30" height="30">
</object>
PRECEDENT,
">SUIVANT
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="30" height="30">

http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="30" height="30">
</object>


<?php
mysql_free_result($INFOSresultat);
?>

53 réponses

PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
12 août 2005 à 17:39
Pour ce qui est de la requete c normal que tu ne vois rien....car dans la case "recherche" qd j'entre la recherche et que je valide a la page d'apres cette case est de nouveau vierge
0
PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
16 août 2005 à 14:44
de retour......

et au meme point.....
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
16 août 2005 à 14:49
pkoi as-tu une page 'i-recherche.php' et une autre 'i-recherche2.php' ? Une seule devrait suffir...
0
PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
16 août 2005 à 14:53
oui

c deux page differente qui n'ont rien a voir....c juste des tests....

mais comment tu sais?
0

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

Posez votre question
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
16 août 2005 à 15:00
ha ha !!!
Je vois tout, j'entends tout et je sais tout ! je suis omniscient !
0
PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
16 août 2005 à 15:06
oui lol

Je viens de voir l'erreur...c corrige....

d'ailleur je viens de faire un autre test....
sur la premiere page d'arrive au lieu de demander une requete inexistante je demande une qui existe dans la base...

Et la forcement a l'affichage il me la sort bien

si je f suivant y a rien.....par contre a retour il m'affiche bien le resultat
0
PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
16 août 2005 à 15:11
ha voila je viens de faire une avancée je pense

Si je demande a la premiere affichage de la page de faire une requete valide dans la base tout marche bien
avec cette requete....aussi bien suivant que precedent....
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
16 août 2005 à 15:29
ça veut dire que tout marche bien ?
0
PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
16 août 2005 à 15:35
Non pas du tout lol

c bien domage.........

Mais que simplement avec une requete valide a l'ouverture de page, il affiche bien le resultat....le bouton suivant et precedent fonctionne bien....

mais par contre si on fait une autre recherche il affiche bien le resultat, mais par contre la fonction "precedent/suivant" ne fonctionne toujour pas....lors du clic ca nous renvois sur la premiere page de resultat de la requete d'origine....et non de la nouvelle
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
16 août 2005 à 15:44
Dommage, j'avais mal compris "l'avancée" !

Sinon, tu avais dit :
« adresse de la premiere page:
http://localhost/dav/i-recherche2.php

adresse de la page avec une recherche:
http://localhost/dav/i-recherche.php

adresse de la page une fois clic sur suivant:
http://localhost/dav/i-recherche.php?pageNum_resrecherche=1&totalRows_resrecherche=5

adresse de la page une fois clic sur precedent:
http://localhost/dav/i-recherche.php?pageNum_resrecherche=0&totalRows_resrecherche=5 »

Vérifie que tu ne te sois pas embrouillé les pinceaux entre i-recherche.php et i-recherche2.php (dans les liens, dans le formulaire...)

Sinon, je te propose encore et tjs la même chose pour débugger : afficher chaque requête avant de l'exécuter....

Arn;o)
0
PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
16 août 2005 à 17:25
si si il y avait une erreur sur les page i-recherche et i-recherche2 mais g rectifie....


afficher chaque requete avant....heu oui c bien bo ca...lol


mais ca vas pas trop m'avancer vu mon niveau....

Sinon peut etre plus simple mais qui m'aidera pas trop a avance dans la comprehension serait un site ou un tuto de quelqu'un qui a deja fait ce genre de chose.....
Si tu as une adresse ou lien....
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
16 août 2005 à 17:46
- perso je n'ai pas d'adresse à te donner, mais ça doit surement exister...

- Tu as rectifier les erreurs sur les pages i-recherche et i-recherche2... ça veut dire que tu n'en utilises plus qu'une seule ?

- « afficher chaque requête avant de l'exécuter » : C'est ce que je t'ai fais faire déjà plusiquers fois... j'explicite :
Voici un bout de ton code :

$query_resrecherche = sprintf("SELECT DEPARTEMENT, LIEUX, style, description, acces, details FROM infos WHERE DEPARTEMENT LIKE '%%%s%%' or LIEUX LIKE '%%%s%%' or style LIKE '%%%s%%' or description LIKE '%%%s%%'", $colname_resrecherche,$collieux_resrecherche,$colstyle_resrecherche,$coldescription_resrecherche);
$query_limit_resrecherche = sprintf("%s LIMIT %d, %d", $query_resrecherche, $startRow_resrecherche, $maxRows_resrecherche);
$resrecherche = mysql_query($query_limit_resrecherche, $infos) or die(mysql_error());

Tu commences donc par défifnir une variable chaine ($query_limit_resrecherche) qui contient une requête SQL. Ensuite tu exécute cette requête avec mysql_query($query_limit_resrecherche,$infos);
Je te suggère donc d'afficher la requête avant de l'exécuter :

$query_resrecherche = sprintf("SELECT DEPARTEMENT, LIEUX, style, description, acces, details FROM infos WHERE DEPARTEMENT LIKE '%%%s%%' or LIEUX LIKE '%%%s%%' or style LIKE '%%%s%%' or description LIKE '%%%s%%'", $colname_resrecherche,$collieux_resrecherche,$colstyle_resrecherche,$coldescription_resrecherche);
$query_limit_resrecherche = sprintf("%s LIMIT %d, %d", $query_resrecherche, $startRow_resrecherche, $maxRows_resrecherche);
echo $query_limit_resrecherche;
$resrecherche = mysql_query($query_limit_resrecherche, $infos) or die(mysql_error());

Sinon, tu peux aussi essayer de modifier manuellement l'adresse quand tu as cliqué sur "suivant", pour voir dans quel cas ça marche :
adresse de la page une fois clic sur suivant:
http://localhost/dav/i-recherche.php?pageNum_resrecherche=1&totalRows_resrecherche=5
Tu peux essayer différentes valeurs, paer exemple :
http://localhost/dav/i-recherche.php?pageNum_resrecherche=2&totalRows_resrecherche=10
http://localhost/dav/i-recherche.php?pageNum_resrecherche=3&totalRows_resrecherche=40
...

Arn;o)
0
PETITDAVID Messages postés 36 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 septembre 2005
17 août 2005 à 19:46
merci de l'explication...

v essayer de faire des tests et voir ca.....
je donnerai des news par la suite....
0
Rejoignez-nous