Tom's Guide > Forum > Programmation > Affichage page par page en Php
Mot :    Pseudo :           
 

Rebonjour à tous :) ,

J'ai un petit problème pour afficher les pages suivantes ou précedentes contenant les résultats de mes requêttes.

Voici une partie du code: "rechercher.php"
....... code long (connexion à la base de données, parcours dans ma table pour afficher les résultats, etc).
$limit=5; // pour afficher 5 résultats par page
if (!isset($debut)) $debut =0;
$nrows = myql_num_rows($result);

if(($debut+$limit)<$nrows)
{
echo "<a href=search.php?recherche=$recherche&choix=$choix&debut=".($debut+$limit).">Suivant</a>";
}

L'autre code : "formulaire.php"
<form action="rechercher.php" method = "post">
<input type= "text" size="15" name="recherche">
<input type= "submit" value="Valider">
<input type="radio" checked name="choix" value="OR">OU
<input type="radio" name="choix" value="AND">ET</p>

L'affichage se fait sans aucun problème, mais dés que je clique
sur le lien "Suivant" il m'affiche la page d'acceuil (le formulaire) avec aucun résultat de la requêtte.Normalement,
je dois avoir sur la page suivante la suite de la recherche.

Quelqu'un à une idée pourquoi?

Merci d'avance


Message édité par stephane81 le 17-12-2006 à 00:30:33
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

C'est parce que tu dois mélanger POST et GET.

Ton formulaire est en POST, et lorsque tu fais des "Suivant", tu passes les arguments en GET.
Donc, tout dépend comment tu récupères tes données de ton formulaire, mais si tu ne récupères que les POST, c'est normal.
Le plus simple serait de faire ton formulaire en GET, et de récupérer que les valeurs GET dans ta page recherche.php

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

Je suis obligé de passer en Get pour que ca fonctionne?
Mais comme tu dit, je dois mélanger Get et Post pour que ca fonctionne .
J'ai mis "Get" à la place de "post". Là, je n'obtiens plus la page d'accueil comme avant, mais en cliquant sur suivant, ça reste sur la même page :heink: . Le lien "suivant" ne réagit plus !!!
Pour répondre à ta question, je récupère le champ "recherche" par un "Post", maintenant je l'ai changer en "Get".

Message cité 1 fois
Message édité par stephane81 le 17-12-2006 à 05:43:17
Répondre à stephane81

est-ce que ton site est en ligne ?
Si oui, peux tu donner un lien vers ton site ?

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

Mon site n'est pas en ligne pour le moment, je suis entrain de le tester en local.
Mais si tu veux je peux te donner une image de l'écran de la page, je ne sais pas si ca peut t'aider pour m'aider :-)?

Répondre à stephane81

stephane81 a écrit :

:heink: . Le lien "suivant" ne réagit plus !!!



il ne réagit pas, tu veux dire que la page ne se recharge meme pas?
entoure ton lien par des "

sinon faudrait donner le code source correpondant à la requete pour voir comment tu gere l'affichage des informations suivantes.

tu peux faire des echo sur ta page pour tester les valeurs passé ainsi que la requete executés pour essayer de délimiter la cause du probleme

Répondre à coca25

C'est ça , la page se recharge elle même, :heink:
bon là je vais aller tester ce que tu m'a écris.

A+


Message édité par stephane81 le 17-12-2006 à 18:50:14
Répondre à stephane81

Mon lien il est bien encadré avec des "":
if(($debut+$limit)<$nrows)
{
echo "<a href=rechercher.php?recherche=$recherche&choix=$choix&debut
=".($debut+$limit).">Suivant</a>";
}

J'ai posté mon formulaire ainsi qu'une partie de mon Script php
dans mon premier message, si ta besoin de plus de détails, je te lenverrais.
Je ne voulais pas mettre tout le code de mon script php, car c'est long.


Message édité par stephane81 le 17-12-2006 à 21:27:01
Répondre à stephane81

par entourer je parlais du href (meme si je doute que ce soit de la que vient le probleme):

Code :
  1. // le echo c'est pour voir si tu passes bien les bonnes valeurs
  2. echo "<br/>$debut -- $limit<br/>\n";
  3. if(($debut+$limit)<$nrows)
  4. {
  5. echo "<a href='rechercher.php?recherche=$recherche&choix=$choix&debut
  6. =".($debut+$limit)."'>Suivant</a>";
  7. }


par plus de détails, je voulais la facon dont tu lancais la requête pour voir comment tu récupères les enregistrements souhaités

Répondre à coca25

Voici le résultat sur ma page local.

1 | Apprendrephp1 | http://www.phpdebutant.org/
2 | Apprendrephp2 | http://www.phpdebutant.org/
3 | Apprendrephp3 | http://www.phpdebutant.org/
4 | Apprendrephp4 | http://www.phpdebutant.org/
5 | Apprendrephp5 | http://www.phpdebutant.org/

0 -- 5
Precedent Suivant

Donc ca fonctionne ! mais les liens ne fontionne toujours pas, j'ai même ajouté les '' dans le href comme tu m'avais suggérer.

Voici plus de détail sur mon script Php, avec la façon comment je
lance la requête et la façon comment je récupère mes enregistrements

rechercher.php:
<?
$choix = $_GET['choix'];
$recherche = $_GET['recherhe'];
include("connection.php" ); //fichier de connexion
include("formulaire.php" ); //formulaire de
//recherche
$limit=5; // pour afficher 5 résultats par page
if (!isset($debut)) $debut = 0;
if (!empty($recherche))
{

$mots_recherche=rawurlencode($recherche); //j'encode la recherche

$tab=explode(" " , $mots_recherche);
$nb=count($tab);

$sql="select * from where 1 and key_word like \"$tab[0]\" ";

for($i=1 ; $i<$nb; $i++)
{
$sql.="$operateur key_word like \"$tab[$i]\" ";
}

$sql2=$sql; //connaître le nombre de résultats
$sql=" Limit $debut,$limit "; // requête limitante.

mysql_connect($host,$user, $pass);
$result2 = mysql_db_query($db,$sql);
$result = mysql_db_query($db,$sql);

if($result)
{
$nrows = mysql_num_rows($result2);
if(mysql_num_rows($result)==0) echo "<center><b>Désolé, il n'ya pas de R&eacute;sultat</b></center><br>";
else
{
while($row = mysql_fetch_array($result))
{
echo $row["id"]." | ".$row["titre"];
$url = $row["url"];
echo " | <a href="$url">$url</a><br>";

}
mysql_free_result($result);

/******************************************/
$nombre=ceil($nrows/($limit));

if($debut>0) // affiche la page précedente
{
echo "<a href='rechercher.php?recherche=php$recherche&choix=$choix&debut
=".($debut-$limit)."'>Precedent</a>";
}

echo "<br/>$debut -- $limit<br/>\n";
if (($debut+$limit)<$nrows)
{
echo "<a href='search.php?recherche=php$recherche&operateur=
$operateur&debut=".($debut+$limit)."'>Suivant</a> ";
}
}

}

}
else
{
echo("<center><br><b>Entrer un mot</b></center>" );
}
?>

Et voilà, j'espere que c'est ce que tu veux :)


Message édité par stephane81 le 18-12-2006 à 19:21:03
Répondre à stephane81

Code :
  1. if (!isset($debut)) $debut = 0;


c'est la premiere occurence de ta vaiable debut, tu l'initialises à chaque fois à 0, c'est normal que ta page reste inchangé:

Code :
  1. if (empty ($_GET['debut']))
  2.   $debut = 0;
  3. else
  4.   $debut = $_GET['debut'];


Répondre à coca25

Merci beaucoup cher ami Coca25 :hello: , ça marche nikel !
Mais juste une dernière petite affaire de design. :)
Comment je peux faire en sorte que lorsqu'on clique sur un lien, le lien en question change de couleur, comme dans le autres moteurs de recherche. Comme ca, on saura sur quel numéro de page
on est .
J'espère que tu comprens ce que je veux dire ;)


Message édité par stephane81 le 18-12-2006 à 03:45:55
Répondre à stephane81

euh... je vois pas trop, si tu veux dire la couleur bleue des liens qui passent à rouge ou autre une fois qu'on a cliqué dessus, ca c'est le navigateur qui s'en charge, on peut lui indiquer une couleur en mettant le style

Code :
  1. a: visited
  2. {
  3.   color: ta_couleur;
  4. }

Répondre à coca25

ou alors en bas de page tu as la boucle for() ,(ou while) qui affiche
page : 1,2,3
je pense que en faisant une condition
$i=0;
for(i = 0; $i < $nombreDePage)
{
if($pageActuelle == $i)
{
$couleur = '<font color="#FFFFFF">' . $i . '</font>';
}
else
{
$couleur = $i;
}
echo '<a href="taPage.php?page='.$i.'">' . $color . '</a> ';
}

Moi je vient d'essayer sa marche toi tu n'a qua modifier avec tes variables et ta couleur voulu


Message édité par guillaume40@IDN le 18-12-2006 à 11:33:59
Répondre à guillaume40@IDN

Je ne parle pas de la couleur du lien qui par défaut devient blue une
fois qu'on clique dessus, mais je parle plutôt de la page sur laquelle on est présentement ex :"1" qui doit être par exemple
de couleur noire et qui ne doit plus être un hyperlien.
Ex sur: "http://fr.search.yahoo.com/"
Si tu fait une recherche, il va t'afficher la première
page avec numéro "1" . et comme tu peux constater, le numéro 1
n'est plus un hyperlien, et ca couleur (noire) est différente des autres numéros. Comme ça, on sait sur quel page on est présentement.

Je vais allez tester ce que vous venez de m'écrire, et je vous reviens :)


Message édité par stephane81 le 18-12-2006 à 15:07:52
Répondre à stephane81

Dans ce cas tu adapte mon script
$i=0;
for(i = 0; $i < $nombreDePage)
{
if($pageActuelle == $i)
{
$lien = '<font color="#FFFFFF">' . $i . '</font>';
}
else
{
$lien = '<a href="taPage.php?page='.$i.'">' . $i . '</a> ';
}
echo $lien;
}

c'est tout simple


Message édité par guillaume40@IDN le 18-12-2006 à 15:37:28
Répondre à guillaume40@IDN

guillaume40: $color est different de $couleur ;)

------------------------------ Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Répondre à coca25

ha oui xD , prend le 2éme script sa enléve le lien de la page ou tu es...

Répondre à guillaume40@IDN

Ca marche, mais il reste un petit hic.
Avant, j'avais mes numéros de page bien distancés entre elles,
maintenant, elles sont toutes collées.
Je m'en vais de ce pas voir si je peux corriger le problème :) .

Répondre à stephane81

echo ' '.$lien ;)

Il fallait juste ajouter un petit espace avant le "$lien"
Merci à vous deux :hello:


Message édité par stephane81 le 18-12-2006 à 19:06:58
Répondre à stephane81

n'oublie pas le [résolu]

Répondre à coca25

derien le PHP c'est de la logique un peu

Répondre à guillaume40@IDN

la programmation ce n'est que de la logique, le langage hors sa spécificité n'est qu'un outil.

Répondre à coca25

Est-ce qu'ils ont désactivé l'option [Résolu] ?
Je vois ca nul part !!

Répondre à stephane81

lol, modifie ton post le nom du post et met devant [RESOLU]
voila

Répondre à guillaume40@IDN
Tom's Guide > Forum > Programmation > Affichage page par page en Php
Aller à :

Il y a 817 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens