Numérotation de page

Résolu
cocob84270 Messages postés 17 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 5 juin 2014 - Modifié par cocob84270 le 23/05/2014 à 09:38
cocob84270 Messages postés 17 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 5 juin 2014 - 23 mai 2014 à 18:29
Bonjour,

J'ai fais une numérotation pour dés qu'il y a 5 ligne de données sa change de page mais il m'en affiche 6 alors que normalement je devrais en voir que 5 sur la première page et quand je click sur page 2 les autres données ne sorte pas et quand je retourne page 1 y a plus rien
Merci D'avance voici mon code:


<div id="blocindex">
<div id="presentation">

<?php

//Connection Mysql


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

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM Batimentsrepertories');
//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



function search()
{
$champ=$_POST['rechercherpar'];
$mot=$_POST['mot_cle'];

$sql = "SELECT *
FROM Batimentsrepertories
WHERE $champ like \"%$mot%\" Order By Num Desc ";

// Affichage de la requête si besoin:
//echo "<br><b>Requête</b>:<br>".$sql;

// Lancement de la requête :
$resultat=mysql_query($sql);

//$ligne=mysql_fetch_array($resultat);

$nb=mysql_num_rows($resultat);



echo "<Center>";
echo "<TABLE BORDER='5'>

<tr>
<th> N°INSEE </th>
<th> Type </th>
<th> SousType </th>
<th> Adresse </th>
<th> Commune </th>
<th> Groupement </th>
<th> Compagnie </th>
<th> Centre </th>
<th> CodePostal </th>
<th> Risque </th>
<th> Modification </th>
<th> Suppression </th>
</tr> ";

echo "<br><b>Nombre de résultats : </b>".$nb."<br>";
?>

<br>

<?php

while ($ligne= mysql_fetch_array($resultat))
{
$num=$ligne['Num'];
$type=$ligne['Type'];
$soustype=$ligne['SousType'];
$adresse=$ligne['Adresse'];
$commune=$ligne['Commune'];
$groupement=$ligne['Groupement'];
$compagnie=$ligne['Compagnie'];
$centre=$ligne['Centre'];
$cp=$ligne['CodePostal'];
$risque=$ligne['Risque'];

echo "<tr><th>".$num."<td>".$type."<td>".$soustype."<td>".$adresse."<td>".$commune."<td>".$groupement."<td>".$compagnie."<td>".$centre."<td>".$cp."<td>".$risque."<td>
<a href=\"Modification2.php?idBatimentsrepertories=".$num."\">Modifier</a>\n <td>
<a href=\"#\" onClick=\"confirme('".$donnees['Num' ]."')\" >Supprimer</a><br>\n</th></tr>";
}

}
search();
?>

</table>
<?php
echo '<p align="center">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 ' <strong> '.$i.' </strong>';
}
else //Sinon...
{
echo ' <a href="search.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
?>


</center>
<p>
<a href="Contenus.php" class="bouton">Retour</a>
</p>
<br>
</div>
</div>

<script language="javascript">
function confirme( identifiant )
{
var confirmation = confirm( "Voulez vous vraiment supprimer cet enregistrement ?" ) ;
if( confirmation )
{
document.location.href = "Suppression2.php?idBatimentsrepertories="+identifiant ;
}
}
</script>

<?php include("Mise_en_page_Footer.php"); ?>


Aurevoir

6 réponses

jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 345
23 mai 2014 à 13:09
Plus d'explication pour ceux qui avais pas compris
Hummm... je pense que tout le monde avait bien compris...
C'est surtout toi qui a du mal à adapter le code à tes besoins..

Mais bon... passons....


Si tu reprend ta capture écran :
http://www.hostingpics.net/viewer.php?id=890629NumrotationPage2.png

... n'as tu pas vu que tu avais un message d'erreur ????!!
Tu as une erreur dans ta page search.php...(ligne 93).

A mon avis....comme je te l'explique depuis le début.. tu fais des opérations sur des variables QUI N'EXISTENT PAS OU PLUS !
D'où l'interet de les stocker (via les SESSION ou en les passant en GET ) pour pouvoir les utiliser...

Prenons un exemple :
J'ai sur ma page toto.php un formulaire html qui envoie les données en POST.
Lorsque je valide mon formulaire, je récupère dans différentes variables ce qui provient de $_POST.
Ensuite, je clique sur un lien ... qui me réaffiche cette même page....
Que se passe t'il alors ??... et bien mes variables n'existent plus... le $_POST ne contenant plus rien...

C'est exactement ce que tu essaies de faire....

Donc :
1 - Reprend mes explications précédentes
2 - Adapte le code à tes besoins (ne fais pas que "copier/coller" bêtement les bouts de code que l'on te donne.. mais essaie de les comprendre...)
3 - Reviens nous voir UNIQUEMENT si, une fois TOUT le code a été réécrit correctement et en suivant nos indications !

Quelques points essentiels à retenir :
- On ne pose qu' UNE question par discussion
- Le titre de la question doit refléter le souci rencontré ( Help.. SOS.. Urgent.. n'apporte aucune information utile !)
- Lorsque votre question est résolue.. merci de clore le sujet (lien Marquer comme résolu se trouvant sous le titre de votre question).
- Une question obtiendra de meilleurs réponses si elle est correctement rédigée, que les explications sont clairs et qu'éventuellement vous postez le code qui pose problème.
- Si vous avez un message d'erreur..... MARQUEZ LE (dans son intégralité).

Merci.



1
cocob84270 Messages postés 17 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 5 juin 2014 1
Modifié par cocob84270 le 23/05/2014 à 18:29
Je vais tout recommencer déjà corriger les erreurs que j'ai
mais normale que je les ais juste en affichant la page sans appuis sur le bouton recherche ?
Et je peut les corriger simplement ou pas ?

-Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given

-Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
1
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 345
23 mai 2014 à 09:55
Bonjour,


quand je clique sur page 2
Tu cliques où ? Quelle est la ligne de code qui génère ton lien (ou ton bouton) pour changer de page ?
c'est la ligne :
  echo ' <a href="search.php?page='.$i.'">'.$i.'</a> ';


Si c'est bien par ce biais là que tu passes....
vu que tes requêtes utilises des variables de type POST
        $champ=$_POST['rechercherpar'];
        $mot=$_POST['mot_cle'];


Forcément...; lorsque tu changes de page... les variables POST n'existent plus !!!


NB : Lorsque tu utilises les variables GET / POST / SESSION ... penses à vérifier qu'elles sont bien initialisées ( via ISSET ) avant de les affecter à une variable...
Eventuellement tu peux utiliser cette petite fonction :

function getParams($name,$type="POST",$default=''){  
     switch ($type){
     case "POST":
         $var = isset($_POST[$name])?$_POST[$name]:$default;
         break;
     case "GET":
          $var = isset($_GET[$name])?$_GET[$name]:$default;
         break;
     case "SESSION":
          $var = isset($_SESSION[$name])?$_SESSION[$name]:$default;
         break;
     }
     return $var;
 }


Et pour l'utiliser :

    $champ=getParams("rechercherpar","POST");
    $mot=getParams("mot_cle","POST");



Si tu veux conserver tes données (tes variables) d'une page à l'autre, il va te falloir utiliser les variables de SESSION.

// A mettre en haut de tes pages
session_start(); 

// Pour stocker une valeur dans une variable de session 
$_SESSION['nom_de_ma_variable_de_session'] = " Une valeur ";

//Pour la lire :
echo $_SESSION['nom_de_ma_variable_de_session'] ;

// ou (avec vérification par ISSET...)
echo getParams("nom_de_ma_variable_de_session","SESSION");


0
cocob84270 Messages postés 17 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 5 juin 2014 1
23 mai 2014 à 10:22
Oui c'est bien cette ligne qui génère le lien


echo ' <a href="search.php?page='.$i.'">'.$i.'</a> ';

J'ai remplace mais je sais pas quoi mettre dans valeur de session ^^


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<?php

// A mettre en haut de tes pages
session_start();

// Pour stocker une valeur dans une variable de session
$_SESSION['nom_de_ma_variable_de_session'] = " Une valeur ";

//Pour la lire :
echo $_SESSION['nom_de_ma_variable_de_session'] ;

// ou (avec vérification par ISSET...)
echo getParams("nom_de_ma_variable_de_session","SESSION")
?>
<?php $Page = 'Recherche';?>

<?php include("Mise_en_page_Header.php"); ?>

<?php include("Mise_en_page_Menu.php"); ?>

<div id="blocindex">
<div id="presentation">

<?php

//connection Mysql


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

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM Batimentsrepertories'); //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


function getParams($name,$type="POST",$default=''){
switch ($type){
case "POST":
$var = isset($_POST[$name])?$_POST[$name]:$default;
break;
case "GET":
$var = isset($_GET[$name])?$_GET[$name]:$default;
break;
case "SESSION":
$var = isset($_SESSION[$name])?$_SESSION[$name]:$default;
break;
}
return $var;
}

function search()
{
$champ=getParams("rechercherpar","POST");
$mot=getParams("mot_cle","POST");

$sql = "SELECT *
FROM Batimentsrepertories
WHERE $champ like \"%$mot%\" Order By Num Desc ";


// Affichage de la requête si besoin:
//echo "<br><b>Requête</b>:<br>".$sql;

// Lancement de la requête :
$resultat=mysql_query($sql);

//$ligne=mysql_fetch_array($resultat);

$nb=mysql_num_rows($resultat);



echo "<Center>";
echo "<TABLE BORDER='5'>

<tr>
<th> N°INSEE </th>
<th> Type </th>
<th> SousType </th>
<th> Adresse </th>
<th> Commune </th>
<th> Groupement </th>
<th> Compagnie </th>
<th> Centre </th>
<th> CodePostal </th>
<th> Risque </th>
<th> Modification </th>
<th> Suppression </th>
</tr> ";

echo "<br><b>Nombre de résultats : </b>".$nb."<br>";
?>

<br>

<?php

while ($ligne= mysql_fetch_array($resultat))
{
$num=$ligne['Num'];
$type=$ligne['Type'];
$soustype=$ligne['SousType'];
$adresse=$ligne['Adresse'];
$commune=$ligne['Commune'];
$groupement=$ligne['Groupement'];
$compagnie=$ligne['Compagnie'];
$centre=$ligne['Centre'];
$cp=$ligne['CodePostal'];
$risque=$ligne['Risque'];

echo "<tr><th>".$num."<td>".$type."<td>".$soustype."<td>".$adresse."<td>".$commune."<td>".$groupement."<td>".$compagnie."<td>".$centre."<td>".$cp."<td>".$risque."<td>
<a href=\"Modification2.php?idBatimentsrepertories=".$num."\">Modifier</a>\n <td>
<a href=\"#\" onClick=\"confirme('".$donnees['Num' ]."')\" >Supprimer</a><br>\n</th></tr>";
}


}
search();
?>

</table>
<?php
echo '<p align="center">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 ' <strong> '.$i.' </strong>';
}
else //Sinon...
{
echo ' <a href="search.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
?>




</center>
<p>
<a href="Contenus.php" class="bouton">Retour</a>
</p>
<br>
</div>
</div>

<script language="javascript">
function confirme( identifiant )
{
var confirmation = confirm( "Voulez vous vraiment supprimer cet enregistrement ?" ) ;
if( confirmation )
{
document.location.href = "Suppression2.php?idBatimentsrepertories="+identifiant ;
}
}
</script>

<?php include("Mise_en_page_Footer.php"); ?>
0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 345
23 mai 2014 à 10:59
J'ai remplace mais je sais pas quoi mettre dans valeur de session

Ben.... heu.... les variables que tu souhaites concerver d'une page à l'autre... c'est à dire.. celles qui servent à ta requête... (donc celles que tu récupère par POST sur ta première page....).

Bon.. je vais t'aider encore un peu plus...

// Par exemple :
// Si la variable champ passé en POST existe je prend celle là (et je la stocke dans la variable de session).. sinon.. je prend celle qui se trouve en SESSION. 
if(isset($_POST["rechercherpar"])){
   $champ =  getParams("rechercherpar","POST") ;
   $_SESSION['rechercherpar'] = $champ;
  }else{ 
    $champ = getParams("rechercherpar","SESSION");
 }

0
YepoMax Messages postés 74 Date d'inscription samedi 8 décembre 2012 Statut Membre Dernière intervention 14 juin 2014 20
23 mai 2014 à 11:39
Bonjour,

Le code de jordane est très bon, c'est ce genre de manoeuvre qu'il faut faire lorsque l'on a des variables passée par une requête de type POST que l'on veut garder en mémoire (les cookies sont utilisés par beaucoup de sites pour ce genre d'application).

Ce que je ne comprend pas, c'est pourquoi tu as besoin que les variables soient passées via une requête de type POST. En général on utilise POST pour "cacher" les variables (mot de passe ou info sensible) ou quand les variables sont trop grandes (long texte ou fichier ou ...). Ici, si j'ai bien compris il s'agit d'une recherche. Dans ce cas, 90% des sites que j'ai pu utiliser utilisent la méthode GET (Google et compagnie (Youtube compris), les wikis, plein d'autres ...) pour leurs recherches.

Ton code deviendrait :


$champ=$_GET['rechercherpar'];
$mot=$_GET['mot_cle'];

$link = 'search.php?page=' . $i . '&recherchepar=' . $champ . '&mot_cle=' . $mot;

echo ' <a href="' . urlencode($link) . '">'.$i.'</a> ';


A noter l'utilisation de urlencode pour éviter tout soucis du à un caractères illégal.

En espérant avoir aidé,
YepoMax.
0

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

Posez votre question
cocob84270 Messages postés 17 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 5 juin 2014 1
23 mai 2014 à 11:08
j'ai corrigé est sa fait toujours rien
-Me sort toujours 6 valeur a la première page alors que je lui dit qu'il faut qu'il en garde 5
-Et a la page 2 m'en sort 0


<?php
session_start();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<?php

if(isset($_POST["rechercherpar"])){
$champ = getParams("rechercherpar","POST") ;
$_SESSION['rechercherpar'] = $champ;
}else{
$champ = getParams("rechercherpar","SESSION");
}
?>

<?php $Page = 'Recherche';?>

<?php include("Mise_en_page_Header.php"); ?>

<?php include("Mise_en_page_Menu.php"); ?>

<div id="blocindex">
<div id="presentation">

<?php

//connexion Mysql


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

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM Batimentsrepertories'); //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


function getParams($name,$type="POST",$default=''){
switch ($type){
case "POST":
$var = isset($_POST[$name])?$_POST[$name]:$default;
break;
case "GET":
$var = isset($_GET[$name])?$_GET[$name]:$default;
break;
case "SESSION":
$var = isset($_SESSION[$name])?$_SESSION[$name]:$default;
break;
}
return $var;
}

function search()
{
$champ=getParams("rechercherpar","POST");
$mot=getParams("mot_cle","POST");

$sql = "SELECT *
FROM Batimentsrepertories
WHERE $champ like \"%$mot%\" Order By Num Desc ";


// Affichage de la requête si besoin:
//echo "<br><b>Requête</b>:<br>".$sql;

// Lancement de la requête :
$resultat=mysql_query($sql);

//$ligne=mysql_fetch_array($resultat);

$nb=mysql_num_rows($resultat);



echo "<Center>";
echo "<TABLE BORDER='5'>

<tr>
<th> N°INSEE </th>
<th> Type </th>
<th> SousType </th>
<th> Adresse </th>
<th> Commune </th>
<th> Groupement </th>
<th> Compagnie </th>
<th> Centre </th>
<th> CodePostal </th>
<th> Risque </th>
<th> Modification </th>
<th> Suppression </th>
</tr> ";

echo "<br><b>Nombre de résultats : </b>".$nb."<br>";
?>

<br>

<?php

while ($ligne= mysql_fetch_array($resultat))
{
$num=$ligne['Num'];
$type=$ligne['Type'];
$soustype=$ligne['SousType'];
$adresse=$ligne['Adresse'];
$commune=$ligne['Commune'];
$groupement=$ligne['Groupement'];
$compagnie=$ligne['Compagnie'];
$centre=$ligne['Centre'];
$cp=$ligne['CodePostal'];
$risque=$ligne['Risque'];

echo "<tr><th>".$num."<td>".$type."<td>".$soustype."<td>".$adresse."<td>".$commune."<td>".$groupement."<td>".$compagnie."<td>".$centre."<td>".$cp."<td>".$risque."<td>
<a href=\"Modification2.php?idBatimentsrepertories=".$num."\">Modifier</a>\n <td>
<a href=\"#\" onClick=\"confirme('".$donnees['Num' ]."')\" >Supprimer</a><br>\n</th></tr>";
}


}
search();
?>

</table>
<?php
echo '<p align="center">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 ' <strong> '.$i.' </strong>';
}
else //Sinon...
{
echo ' <a href="search.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
?>



</center>
<p>
<a href="Contenus.php" class="bouton">Retour</a>
</p>
<br>
</div>
</div>

<script language="javascript">
function confirme( identifiant )
{
var confirmation = confirm( "Voulez vous vraiment supprimer cet enregistrement ?" ) ;
if( confirmation )
{
document.location.href = "Suppression2.php?idBatimentsrepertories="+identifiant ;
}
}
</script>

<?php include("Mise_en_page_Footer.php"); ?>

Désolée si je suis nul je suis débutant..^^
0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 345
23 mai 2014 à 11:45
Il ne te suffit pas de copier/coller les bouts de code que je te donne... mais il te faut les adapter à tes besoins...

Je n'ai pas le temps (ni vraiment l'envie ..désolé) de faire tout le code à ta place....

Il faut que tu identifies les variables dont tu as besoin pour faire tes requêtes, afficher les données....
Ces ces données là qu'il te faut passer d'une page à l'autre...
0
cocob84270 Messages postés 17 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 5 juin 2014 1
Modifié par cocob84270 le 23/05/2014 à 12:07
Plus d'explication pour ceux qui avais pas compris

Ici la pagination fonctionne et tout :http://www.hostingpics.net/viewer.php?id=387984Numrotationok.png

et quand je fais une recherche je voudrais pareil mais sa m'affiche tout sur la même page :
http://www.hostingpics.net/viewer.php?id=518677Paginationnonfonctionnel.png
Donc l'algo disant que dés 5 lignes sa envoi a la page 2, ne fonctionne pas

et quand je click sur page 2 sa me sort sa :
http://www.hostingpics.net/viewer.php?id=890629NumrotationPage2.png

A la fin je comprend plus rien ^^

Merci
0
YepoMax Messages postés 74 Date d'inscription samedi 8 décembre 2012 Statut Membre Dernière intervention 14 juin 2014 20
23 mai 2014 à 12:51
Avez vous essayé de tout simplement utiliser $_GET comme je expliqué dans mon commentaire ?

Sinon dans votre code, vous semblez ne pas avoir compris comment utiliser la fonction getParams

Pour ce qui est du fait que tout s'affiche sur la même page, regardez votre boucle et regardez bien dans quel condition les lignes vont être affichées. Gardez aussi en tête que vous définissez une variable : $premiereEntree que vous n'utilisez nulle part alors qu'elle est justement censée empecher d'afficher tous les résultats il me semble
0
Rejoignez-nous