Affichage page par page PHP MySQL

Fermé
remoh Messages postés 6 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 14 décembre 2007 - 23 oct. 2007 à 15:45
 andre - 22 nov. 2008 à 18:47
Bonjour,

ça fait un bon moment que je me prend la tête sur cette page de résultats... j'en peux plus!
Je vous explique :
Je créé un moteur de recherche qui récupère des infos (sorties culturelles) dans ma base de données MySQL.

1/ L'utilisateur choisi ses critères de recherche (on va se limiter à 1 seul pour l'instant... le type de sorties : Concert, expo...) et valide le formulaire qui envoie ce critère par POST à ma page de résultats.

2/Dans la page de resultats en PHP, on fait une requete sur la bd en fonction du critère sélectionné et on affiche les resultats

3/On limite à 5 résultats par page avec des liens qui permettent de naviguer entre les pages.

Evidement, c'est le point 3/ qui déconne. La première page de résultats s'affiche correctement mais si on clique sur les liens pour aller sur les pages suivantes, la base ne me renvoie plus aucun résultat ???

Après plusieurs recherches, je pense que c'est du au fait que quand on clique sur le lien pour aller sur une page suivante, le critère de recherche sélectionné en 1/ n'a plus de valeur et la requete mysql ne renvoie donc plus de resultats...
J'ai donc essayer d'inclure cette valeur dans les liens (<a href=\"$_PHP[SELF]?limit=".$limit."&type=".$type."\">, mais ça n'a rien changé...

A l'aide svp !
Je vous livre le code en question... Merci d'avance

<?php
$type = $_POST['Type'];
//==============================================================================
// Configuration à modifier avec vos propres paramètres
//==============================================================================
// Connexion à la base de données
$host = "host";
$user = "user";
$pass = "xxx";
$data = "base"; // Nommer ici la base de données
$connect = mysql_connect($host, $user, $pass)
or die("Connexion au serveur impossible !");
$db = mysql_select_db($data, $connect)
or die("Sélection de la base impossible !");
// Paramétrage de la requête (ne pas modifier le nom des variable)
$table = "Sorties"; // Table à sélectionner dans la base
$champ = "Date"; // Champ de la table à afficher pour tester ce script
$champ2 = "Type";
$champ3 = "Designation";
$champ4 = "Lieu";
$sql = "SELECT * FROM $table WHERE Type='".$type."' ORDER by Date ASC"; // Requête initiale (à compléter si nécessaire)
$parpage = 5; // Nombre d'enregistrements par page à afficher
//==============================================================================
// Déclaration et initialisation des variables (ici ne rien modifier)
//==============================================================================
// On définit le suffixe du lien url qui affichera les pages
// $_SERVEUR['PHP_SELF'] donne l'arborescence de la page courante
$url = $_SERVER['PHP_SELF']."?limit=";
$total = mysql_query($sql); // Résultat total de la requête $sql
$nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
// On calcule le nombre de pages à afficher en arrondissant
// le résultat au nombre supérieur grâce à la fonction ceil()
$nbpages = ceil($nblignes/$parpage);
//==============================================================================
// Exemple d'affichage HTML
//==============================================================================
// On teste en affichant la valeur des variables (facultatif)
echo "<p>La table <b>".$table."</b> compte ".$nblignes." <b>".$champ."</b>.";
echo "<br />\n"."On affiche <b>".$parpage." enregistrements</b> par page, ";
echo "soit un total de <b>".$nbpages." pages</b>.</p>\n";
// Si une valeur 'limit' est passée par url, on vérifie la validité de
// cette valeur par mesure de sécurité avec la fonction validlimit()
// cette fonction retourne automatiquement le résultat de la requête
$result = validlimit($nblignes,$parpage,$sql);
// On affiche le résultat de la requête
// On crée donc ici son propre tableau pour lequel on souhaite une pagination
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres dans 4 colonnes
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Date</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Type</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Désignation</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Lieu</u></b></td>';
echo '</tr>'."\n";
while ($ligne = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$ligne[$champ].'</td>';
echo '<td bgcolor="#CCCCCC">'.$ligne[$champ2].'</td>';
echo '<td bgcolor="#CCCCCC">'.$ligne[$champ3].'</td>';
echo '<td bgcolor="#CCCCCC">'.$ligne[$champ4].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// Menu de pagination que l'on place après la requête
echo "<div class='pagination'>";
echo pagination($url,$parpage,$nblignes,$nbpages);
echo "</div>";
mysql_free_result($result); // Libère le résultat de la mémoire

function pagination($url,$parpage,$nblignes,$nbpages)
{
// On crée le code html pour la pagination
$html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
// On vérifie que l'on a plus d'une page à afficher
if ($nbpages > 1) {
// On boucle sur les numéros de pages à afficher
for ($i = 0 ; $i < $nbpages ; ++$i) {
$limit = $i * $parpage; // On calcule le début de la valeur 'limit'
$limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
// On affiche les liens des numéros de pages
$html .= "<a href=\"".$url.$limit."&type=".$type."\">".($i + 1)."</a> | " ;
}
}
// Si l'on a qu'une page on affiche rien
else {
$html .= "";
}
$html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
// On retourne le code html
return $html;
}
function validlimit($nblignes,$parpage,$sql)
{
// On vérifie l'existence de la variable $_GET['limit']
// $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
if (isset($_GET['limit'])) {
$pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
$debut = $pointer[0];
$fin = $pointer[1];
// On vérifie la conformité de la variable $_GET['limit']
if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
// Si $_GET['limit'] est valide on lance la requête pour afficher la page
$limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
$sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
$result = mysql_query($sql); // Nouveau résultat de la requête
}
// Sinon on affiche la première page
else {
$sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
$result = mysql_query($sql); // Nouveau résultat de la requête
}
}
// Si la valeur 'limit' n'est pas connue, on affiche la première page
else {
$sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
$result = mysql_query($sql); // Nouveau résultat de la requête
}
// On retourne le résultat de la requête
return $result;
}
function precedent($url,$parpage,$nblignes)
{
// On vérifie qu'il y a au moins 2 pages à afficher
if ($nblignes > $parpage) {
// On vérifie l'existence de la variable $_GET['limit']
if (isset($_GET['limit'])) {
// On scinde la variable 'limit' en utilisant la virgule comme séparateur
$pointer = split('[,]', $_GET['limit']);
// On récupère le nombre avant la virgule et on soustrait la valeur $parpage
$pointer = $pointer[0]-$parpage;
// Si on atteint la première page, pas besoin de lien 'Précédent'
if ($pointer < 0) {
$precedent = "";
}
// Sinon on affiche le lien avec l'url de la page précédente
else {
$limit = "$pointer,$parpage";
$precedent = "<a href=\"".$url.$limit."&type=".$type."\"></a> | ";
}
}
else {
$precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
}
}
else {
$precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
}
return $precedent;
}
function suivant($url,$parpage,$nblignes)
{
// On vérifie qu'il y a au moins 2 pages à afficher
if ($nblignes > $parpage) {
// On vérifie l'existence de la variable $_GET['limit']
if (isset($_GET['limit'])) {
// On scinde la variable 'limit' en utilisant la virgule comme séparateur
$pointer = split('[,]', $_GET['limit']);
// On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
$pointer = $pointer[0] + $parpage;
// Si on atteint la dernière page, pas besoin de lien 'Suivant'
if ($pointer >= $nblignes) {
$suivant = "";
}
// Sinon on affiche le lien avec l'url de la page suivante
else {
$limit = "$pointer,$parpage";
$suivant = "<a class='pagination' href=\"".$url.$limit."&type=".$type."\"></a>";
}
}
// Si pas de valeur 'limit' on affiche le lien de la deuxième page
if (@$_GET['limit']== false) {
$suivant = "<a href=\"".$url.$parpage."&type=".$type."\",".$parpage."></a>";
}
}
else {
$suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
}
return $suivant;
}
// Fin du script
?>
A voir également:

12 réponses

Salut, alors en effet c'est ca. Si tu ne fais qu'un $_POST en entree c'est que tes variables arrive poster hors lorsque tu clique sur ton lien c'est des variables en $_GET donc va faloir que tu mette :
if (!empty($_POST["type"]))
 $type=$_POST["type"];
elseif (!empty($_GET["type"]))
$type=$_GET["type"];


Maintenant j'ai vu que tu ne passe pas tes variable dans la query (url) lorsque tu veux passer a la page suivante donc rajoute tes variables.
Si tu as des textes a passer je preconniserait de faire un urlencode avant et bien sur dans la recuperation un urldecode. Mais si tu veux moins te faire ch... Tu creer des variable de $_SESSION[""] et tu mets les valeurs dedant et auquel cas tu aurais : dans la recuperation de tes variables :
if (!empty($_POST["type"]))
 $type=$_POST["type"];
elseif (!empty($_GET["type"]))
$type=$_GET["type"];
else
$type = $_SESSION["type"];


Voila j'espere que j'ai pu t'aider.
2
Non , en fait lorsque tu as une variable qui provient d'un formulaire <form> tu les recupere en faisant : $variable = $_POST["variable"];
Lorsque tu passe des variables d'une page a une autre dans l'url tu dois faire $variable = $_GET["variable"];
Il existe une autre methode qui serait aussi pour passer d'une page a une autre , les sessions.
Dans la page qui recoit ton form tu decide de mettre les variable que tu recoit dans une session :
$_SESSION["variable"] = $_POST["variable"];
comme ca quand tu passe dans une autre page et que tu n'as rien mis dans l'url tu peut tres bien faire :
$variable = $_SESSION["variable"];
Dans ta variables il y a ta valeur.
Regarde des tutoriaux sur les sessions. tu va comprendre et c'est facile pour passer des variables.
1
Merco pour votre tuto, voilà j'ai un autre sscpit à vous soumetre :

<? session_start();
include('connexion.php');

if(!empty($_POST)){
$rech = $_POST['unite'];
}
else{
$rech = $_SESSION["type"]; //pour restaurer la variable de recherche

}
?>


<?php
//code améliorer par bobmcneal ! copyright 2007/08/15 Mahazoarivo lot vr 54 j bis 23h25

// connexion à la base
$db = mysql_connect("localhost", "root","") or die ('Erreur de connexion '.mysql_error());


// sélection de la base
mysql_select_db("etsena_base",$db) or die ('Erreur de selection '.mysql_error());

/********************************** DEBUT PAGINATION *************************************/
// on va afficher 6 résultats par page, vous pouvez modifier ce chiffre selon votre souhait
$userperpage =12;
//Nombre indiquant le départ de la requete
$start = isset($_GET['start'])?$_GET['start']:0;
// Nom de la page
$page = basename(__FILE__);
// Compte les enregistrements

$select = "SELECT count(*) as total FROM prix where unite='$rech' ";
// DEBUT > Protection des caractères spéciaux d'une commande SQL

// FIN > Protection des caractères spéciaux d'une commande SQL
$result = mysql_query($select,$db) or die ('Erreur : '. mysql_error());
$row = mysql_fetch_array($result);
$total2 = $row['total'];
/********************************** FIN PAGINATION *************************************/

if($total2 > 0) {
// requête SQL qui récupère tous les enregistrements
$select = "SELECT * FROM prix where unite='$rech' LIMIT ".$start.",".$userperpage."";
$result = mysql_query($select,$db) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
// Nombres de colonnes max
$NB_COLS = 4;
$i = 0;
echo "<table border='1'>\n";
while($row = mysql_fetch_array($result))
{
if ($i == 0)
echo "<tr>\n";
echo "<td><a href=saryaffiche.php?id=" .$row['id'].">".$row['nom'].":".$row['prix']." </a></td>\n";
if (++$i == $NB_COLS) {
echo "</tr>\n";

$i = 0;
}
}
echo "</table>";
}
else
echo "Désolé nous somme en stade de transfert !";

/********************************** DEBUT PAGINATION N° *************************************/
// Génération des liens pour l'affichage des pages
echo '<br /><div class="page">Page : ';
$nb_pages = ceil( $total2 / $userperpage );
for($i = 0 ; $i < $nb_pages ; $i++)
{
if ($start != $i * $userperpage) {
echo '<a href="?start='. ($i * $userperpage).'">'. ($i + 1) .'</a> ';
} else {
echo ($i + 1) .' ';
}
}
echo'</div>';
/********************************** FIN PAGINATION N° *************************************/

// on libère le résultat
mysql_free_result($result);



//Modifier le " $userperpage " pour afficher le nb de résultats que vous souhaitez !

//Voilou :)
?>
1
Utilisateur anonyme
20 nov. 2008 à 18:43
Salut,
Si tu mets ca
<? session_start();

if(!empty($_POST)){
$name = $_POST['nom'];
}
else{
$name = $_SESSION["nom_s"]; //pour restaurer la variable de recherche

}
?>
c'est bien mais va plus loin en faisant un truc plus simple pour conserver ton postage de formulaire :
if(!empty($_POST)){
$name = $_POST['nom'];
$_SESSION["nom_s"] = $_POST["nom"];
}
else{
$name = $_SESSION["nom_s"]; //pour restaurer la variable de recherche

}

Avec la ligne :
$_SESSION["nom_s"] = $_POST["nom"];
tu va conserver les informations poster par le formulaire de recherche dans les sessions et ainsi pouvoir les reutiliser dans la deuxieme page.

Voila
1

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

Posez votre question
voila j'ai un autre probleme que je ne peux resoudre.

ji'ai un menu dans la fram de gauche qui me permet d'ouvrir ma fiche client sur la fram de droite.
quand j'affiche les client et je fait une recherche, y a une session pour passer la variable d'une pag a une autre aprés le lancement de la recherche.

mais que je passe a une autre fiche par le menu il faut que la session sur client soit detruite et ca me permettera de revoire tout les clients quand j'active le lien client à partire du menu.

si a la fin du fichier client je detruie la session je ne pourrais pas passer à une autre page du résultat de la recherche et dans le menu, avec il faut que je fait un Refresh et je ferme la session sur clien en meme temps (l'action OnClick ou autre).

voici mes deux fichier si quelqu'un peut voir ca car moi je n'ai plus d'idées.

Merci.

CLIENT

<? session_start();


if(!empty($_POST ['nom'])){
$name = $_POST['nom'];
$_SESSION["nom_s"] = $_POST["nom"];
}
else{
$name = $_SESSION["nom_s"]; //pour restaurer la variable de recherche
}
/*
if(!empty($_POST['prenom'])){
$lastname = $_POST['prenom'];

$_SESSION["prenom_s"] = $_POST["prenom"];
}
else{
prenom_s="";
$lastname = $_SESSION["prenom_s"]; //pour restaurer la variable de recherche
}

*/
?>


<!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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Clients Liste</title>
<LINK href="../lib/style/Style.css" type="text/css" rel="stylesheet">

</head>

<body>
<table width="100%" border="1" bordercolor="#8899bb">
<tr>
<td height="240" align="left" valign="top">
<FIELDSET class="C_FrameCollapse_Header">
<LEGEND>Critéres</LEGEND>
<LEGEND> </LEGEND>

<form method="post" action="" >
<table width="100%" border="0" class="C_MenuGrid">
<tr>
<td width="14%" align="center"><button value="rr" type="reset" class="C_ButtonToolbar" id="sender"><img src="/gestion_commercial/image/supprimer_16_f.gif" /> Nouvelle Recherche</button></td>
<td width="86%" align="left"><button value="rr" type="submit" class="C_ButtonToolbar" id="sender"> <img src="/gestion_commercial/image/filtrer_16_f.gif" /> Sélectionner</button></td>
</tr>
</table>
<table width="100%" border="0">
<tr>
<td width="11%"> </td>
<td width="21%">Nom :</td>
<td width="7%"> </td>
<td width="19%"><input type="text" name="nom"></td>
<td width="14%"> </td>
<td width="28%"> </td>
</tr>
<tr>
<td width="11%"> </td>
<td width="21%"></td>
<td width="7%"> </td>
<td width="19%"></td>
<td width="14%"> </td>
<td width="28%"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>

</form>

</FIELDSET>
</td>
</tr>
</table>

<table width="100%" border="0">
<tr>
<td height="15"></td>
</tr>
</table>


<table width="100%" border="1" bordercolor="#8899bb" >
<tr>
<td height="400" align="left" valign="top">
<FIELDSET class="C_FrameCollapse_Header">
<LEGEND>Elements</LEGEND>
<LEGEND> </LEGEND>
<?php
$per_page = 5;

// Connexion
$link=mysql_connect('localhost','coraver','coraver');
mysql_select_db('coraver');

$nom = isset($_POST['nom']) ? $_POST['nom'] : '';
//$prenom = isset($_POST['prenom']) ? $_POST['prenom'] : '';



// nombre d'enregistrement
$t = mysql_query("SELECT id, nom, prenom, cp FROM client WHERE nom LIKE '%$name%' order by id ") or die (mysql_error());

$a= mysql_fetch_object($t);
$total_items= mysql_num_rows($t);

$limit= $_GET['limit'];
$page= $_GET['page'];

//set default if: $limit is empty, non numerical, less than 10, greater than 50
if((!$limit) || (is_numeric($limit) == false) || ($limit < $per_page) ) {
$limit = $per_page; //default
}
//set default if: $page is empty, non numerical, less than zero, greater than total available
if((!$page) || (is_numeric($page) == false) || ($page > $total_items)) {
$page = 1; //default
}

//calcuate total pages
$total_pages = ceil($total_items / $limit);
$set_limit = ($page * $limit) - $limit;

//echo ". $set_limit . ";

//query: **EDIT TO YOUR TABLE NAME, ECT.
$q = mysql_query("SELECT id, nom, prenom, cp FROM client WHERE nom LIKE '%$name%' order by id LIMIT $set_limit, $limit ") or die (mysql_error());

if(mysql_num_rows($q) == 0) die("Pas d'Enregistrements");

?>
<table width="100%" border="0">
<tr>
<td> <input name="Créer" type="button" onclick="self.location.href='modification_client_gene1.php'" value="Créer" > </td>
<td width="73%" align="right">
<?php
echo $total_items.' Eléments.';
?>
</td>
<td width="11%" align="right">

<?php
//Results per page: **EDIT LINK PATH**
echo(" <a href=client_default.php?limit=5&page=1></a>
<a href=client_default.php?limit=10&page=1></a>
<a href=client_default.php?limit=20&page=1></a>

");
?>
</td>
<td width="16%" align="left"> <?php
echo $per_page.' Lignes par page.';
?></td>
</tr>
</table>
<?php





if($total_items) {

echo( "<table border=\"2\" cellpadding=\"2\" cellspacing=\"2\" align=\"center\" width=\"100%\" >\n" );
echo( "<tr class=\"C_MenuGrid\">
<td><div align=\"center\">Matricule</div></td>
<td><div align=\"center\">Nom d'Usage</div></td>
<td><div align=\"center\">Prénom</div></td>
<td><div align=\"center\">Modif.</div></td>
</tr>" );


//affichage des données:

while($code = mysql_fetch_object($q)) {

echo( "<tr>\n" );
echo( "<td><div align=\"center\">".$code->id."</div></td>\n" );
echo( "<td><div align=\"center\">".$code->nom."</div></td>\n" );
echo( "<td><div align=\"center\">".$code->prenom."</div></td>\n" );
echo("<td><div align=\"center\"><a href=\"modification_client1.php?idPersonne=".$code->id. "\"target=\"_self\">Modif.</div></td>\n" );
}
}


?>
<table width="100%" border="0">
<tr>

<td width="12%" align="left">
<?php

//prev. page: **EDIT LINK PATH**
$prev_page = $page - 1;

if($prev_page >= 1) {
echo("<b><<</b> <a href=client_default.php?limit=$limit&page=$prev_page>
<b>Préc.</b></a>");
}

?>
</td>

<td width="71%" align="center">
<?php

//Display middle pages: **EDIT LINK PATH**
for($a = 1; $a <= $total_pages; $a++){
if($a == $page) {
echo("<b> $a</b> | "); //no link
}
else {
echo("
<a href=client_default.php?limit=$limit&page=$a> $a
</a> | ");
}
}
?>
</td>

<td width="17%" align="right">
<?php

//next page: **EDIT THIS LINK PATH**
$next_page = $page + 1;
if($next_page <= $total_pages) {
echo("
<a href=client_default.php?limit=$limit&page=$next_page>
<b>Suivant</b></a><b>>></b>");
}
?>
</td>

</tr>
</table>


<?php
echo $name.' nom.';
echo $lastname.' prenom.';
//all done
?>



</FIELDSET>
</td>
</tr>
</table>
</body>
</html>
------------------------------------------------------------------------------------------------

MENU

<?php session_start(); ?>
<!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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Menu</title>
<LINK href="lib/style/Style.css" type="text/css" rel="stylesheet">

<style type="text/css">

/*Credits: Dynamic Drive CSS Library */
/*URL: http://www.dynamicdrive.com/style/ */

.suckerdiv ul{
margin: 0;
padding: 0;
list-style-type: none;
width: 160px; /* Width of Menu Items */
border-bottom: 1px solid #ccc;
}

.suckerdiv ul li{
position: relative;
}

/*Sub level menu items */
.suckerdiv ul li ul{
position: absolute;
width: 170px; /*sub menu width*/
top: 0;
visibility: hidden;
}

/* Sub level menu links style */
.suckerdiv ul li a{
display: block;
overflow: auto; /*force hasLayout in IE7 */
color: black;
text-decoration: none;
background: #fff;
padding: 1px 5px;
border: 1px solid #ccc;
border-bottom: 0;
}

.suckerdiv ul li a:visited{
color: black;
}

.suckerdiv ul li a:hover{
background-color: yellow;
}

.suckerdiv .subfolderstyle{
background: url(media/arrow-list.gif) no-repeat center right;
}


/* Holly Hack for IE \*/
* html .suckerdiv ul li { float: left; height: 1%; }
* html .suckerdiv ul li a { height: 1%; }
/* End */

</style>

<script type="text/javascript">

//SuckerTree Vertical Menu 1.1 (Nov 8th, 06)
//By Dynamic Drive: http://www.dynamicdrive.com/style/

var menuids=["suckertree1"] //Enter id(s) of SuckerTree UL menus, separated by commas

function buildsubmenus(){
for (var i=0; i<menuids.length; i++){
var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
for (var t=0; t<ultags.length; t++){
ultags[t].parentNode.getElementsByTagName("a")[0].className="subfolderstyle"
if (ultags[t].parentNode.parentNode.id==menuids[i]) //if this is a first level submenu
ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px" //dynamically position first level submenus to be width of main menu item
else //else if this is a sub level submenu (ul)
ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
ultags[t].parentNode.onmouseover=function(){
this.getElementsByTagName("ul")[0].style.display="block"
}
ultags[t].parentNode.onmouseout=function(){
this.getElementsByTagName("ul")[0].style.display="none"
}
}
for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
ultags[t].style.visibility="visible"
ultags[t].style.display="none"
}
}
}

if (window.addEventListener)
window.addEventListener("load", buildsubmenus, false)
else if (window.attachEvent)
window.attachEvent("onload", buildsubmenus)

</script>

</head>
<body bgcolor="#8899bb">
<div class="C_SelectedTabButton">
<ul id="suckertree1">
<li><a href="/gestion_commercial/client/client_default.php" title="Client" target="central">Clients</a></li>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Commandes" target="central">Commandes</a></li>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Installations" target="central">Installations</a></li>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Facturations" target="central">Facturations</a></li>
<li><a href="menu.php" title="Rapports" target="menu">Rapports</a>
<ul>
<li><a href="menu.php" title="Ventes" target="menu">Ventes</a>
<ul>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Complet" target="central">Complet</a></li>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Par Types" target="central">Par Types</a></li>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Par Marques" target="central">Par Marques</a></li>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Par Commercials">Par Commercials</a></li>
</ul>
</li>
<li><a href="menu.php" title="Installations Techniques" target="menu">Installations Techniques</a>
<ul>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Complet">Complet</a></li>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Par Equipes">Par Equipes</a></li>
<li><a href="https://www.google.fr/?gws_rd=ssl" title="Sous traitants">Sous traitants</a></li>
</ul>
</li>
<li><a href="/gestion_commercial/client/modification_client_gene1.php" title="Marges" target="central">tests</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
------------------------------------------------
1
remoh Messages postés 6 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 14 décembre 2007
23 oct. 2007 à 16:13
Merci beaucoup karando,

je suis novice en programmation, est-ce que tu pourrais me detailler la procedure que tu decris?
Il faut que je transforme mes variables $_POST en $_GET c'est ça...? ça se passe donc au niveau de mon formulaire html?

merci encore
0
remoh Messages postés 6 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 14 décembre 2007
23 oct. 2007 à 17:03
Merci ça marche.
J'ai utilisé les $_SESSION et ça fonctionne...

A+
0
bonjour,
j'ai regarder votre script et votre probleme et je suis exactement devant le meme souci que vous mais il semble que vous l'avez résolut.
pour ma part il n'en est rein.
seriez vous aimable de me contacter au sujet des sessions car je pense que le probleme est la.
d'avance merci.
0
ok, salut !
pour que la valeur de la session soit retenue par le navigateur, vou devez mettre ça en tout debut de votre script
à la ligne 1 :
<? session_start() ?>
Merci
0
Et il normal d'ecrire :
echo "<div class='pagination'>";
echo pagination($url,$parpage,$nblignes,$nbpages); // pas de guillemets avant la variable.....
echo "</div>";
0
teler Messages postés 86 Date d'inscription vendredi 11 juillet 2008 Statut Membre Dernière intervention 9 mars 2010 5
19 nov. 2008 à 00:11
Bonjour, je viens de voir ce sujet et j'ai le meme probleme que la personne qui à ouvert cette discution, mais je ne comprends pas bien où placer mes sessions sur ma page.

j'avais ouvert une discussion : http://www.commentcamarche.net/forum/affich 9490453 erreur code pagination?#dernier

merci
0
remoh,

merci d'avance pour votre aide
peux tu mettre le code que t'a utilisé car je suis dans la meme situation avec moteur de recherche et affichage.
en effet quand je lance la recherche ca marche mais quand je passe a page suivante ca affiche toutes la table (ne prend pas la variable recherché en compte.

................................................
le code

<? session_start();

if(!empty($_POST)){
$name = $_POST['nom'];
}
else{
$name = $_SESSION["nom_s"]; //pour restaurer la variable de recherche

}
?>
<!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 http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Clients Liste</title>
<LINK href="../lib/style/Style.css" type="text/css" rel="stylesheet">
</head>

<body>
<table width="100%" border="1" bordercolor="#8899bb">
<tr>
<td height="240" align="left" valign="top">
<FIELDSET class="C_FrameCollapse_Header">
<LEGEND>Critéres</LEGEND>
<LEGEND> </LEGEND>

<form method="post" action="">
<table width="100%" border="0" class="C_MenuGrid">
<tr>
<td width="14%" align="center"><button value="rr" type="reset" class="C_ButtonToolbar" id="sender"><img src="/gestion_commercial/image/supprimer_16_f.gif" /> Nouvelle Recherche</button></td>
<td width="86%" align="left"><button value="rr" type="submit" class="C_ButtonToolbar" id="sender"> <img src="/gestion_commercial/image/filtrer_16_f.gif" /> Sélectionner</button></td>
</tr>
</table>
<table width="100%" border="0">
<tr>
<td width="11%"> </td>
<td width="21%">Nom :</td>
<td width="7%"> </td>
<td width="19%"><input type="text" name="nom"></td>
<td width="14%"> </td>
<td width="28%"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>

</form>

</FIELDSET>
</td>
</tr>
</table>

<table width="100%" border="0">
<tr>
<td height="15"></td>
</tr>
</table>


<table width="100%" border="1" bordercolor="#8899bb" >
<tr>
<td height="400" align="left" valign="top">
<FIELDSET class="C_FrameCollapse_Header">
<LEGEND>Elements</LEGEND>
<LEGEND> </LEGEND>
<?php
$per_page = 5;

// Connexion
$link=mysql_connect('localhost','coraver','coraver');
mysql_select_db('coraver');

$nom = isset($_POST['nom']) ? $_POST['nom'] : '';




// nombre d'enregistrement
$t = mysql_query("SELECT id, nom, prenom, cp FROM client WHERE nom LIKE '%$name%' order by id ") or die (mysql_error());
/*
$t = mysql_query('SELECT id, nom, prenom, cp
FROM client
WHERE nom='$nom'
ORDER BY id');
if(!$t) die(mysql_error());
*/
$a= mysql_fetch_object($t);
$total_items= mysql_num_rows($t);

$limit= $_GET['limit'];
$page= $_GET['page'];

//set default if: $limit is empty, non numerical, less than 10, greater than 50
if((!$limit) || (is_numeric($limit) == false) || ($limit < $per_page) ) {
$limit = $per_page; //default
}
//set default if: $page is empty, non numerical, less than zero, greater than total available
if((!$page) || (is_numeric($page) == false) || ($page > $total_items)) {
$page = 1; //default
}

//calcuate total pages
$total_pages = ceil($total_items / $limit);
$set_limit = ($page * $limit) - $limit;

//echo ". $set_limit . ";

//query: **EDIT TO YOUR TABLE NAME, ECT.
$q = mysql_query("SELECT id, nom, prenom, cp FROM client WHERE nom LIKE '%$name%' order by id LIMIT $set_limit, $limit ") or die (mysql_error());
/*
$q = mysql_query("SELECT id, nom, prenom, cp
FROM client
ORDER BY id LIMIT $set_limit, $limit");
if(!$q) die(mysql_error());
*/
if(mysql_num_rows($q) == 0) die("Pas d'Enregistrements");

?>
<table width="100%" border="0">
<tr>
<td width="73%" align="right">
<?php
echo $total_items.' Eléments.';
?>
</td>
<td width="11%" align="right">

<?php
//Results per page: **EDIT LINK PATH**
echo(" <a href=client_default.php?limit=5&page=1></a>
<a href=client_default.php?limit=10&page=1></a>
<a href=client_default.php?limit=20&page=1></a>

");
?>
</td>
<td width="16%" align="left"> <?php
echo $per_page.' Lignes par page.';
?></td>
</tr>
</table>
<?php





if($total_items) {

echo( "<table border=\"2\" cellpadding=\"2\" cellspacing=\"2\" align=\"center\" width=\"100%\" >\n" );
echo( "<tr class=\"C_MenuGrid\">
<td><div align=\"center\">Matricule</div></td>
<td><div align=\"center\">Nom d'Usage</div></td>
<td><div align=\"center\">Prénom</div></td>
<td><div align=\"center\">Modif.</div></td>
</tr>" );


//affichage des données:

while($code = mysql_fetch_object($q)) {

echo( "<tr>\n" );
echo( "<td><div align=\"center\">".$code->id."</div></td>\n" );
echo( "<td><div align=\"center\">".$code->nom."</div></td>\n" );
echo( "<td><div align=\"center\">".$code->prenom."</div></td>\n" );
echo("<td><div align=\"center\"><a href=\"modification_client1.php?idPersonne=".$code->id. "\"target=\"_self\">Modif.</div></td>\n" );
}
}


?>
<table width="100%" border="0">
<tr>

<td width="12%" align="left">
<?php

//prev. page: **EDIT LINK PATH**
$prev_page = $page - 1;

if($prev_page >= 1) {
echo("<b><<</b> <a href=client_default.php?limit=$limit&page=$prev_page>
<b>Préc.</b></a>");
}

?>
</td>

<td width="71%" align="center">
<?php

//Display middle pages: **EDIT LINK PATH**
for($a = 1; $a <= $total_pages; $a++){
if($a == $page) {
echo("<b> $a</b> | "); //no link
}
else {
echo("
<a href=client_default.php?limit=$limit&page=$a> $a
</a> | ");
}
}
?>
</td>

<td width="17%" align="right">
<?php

//next page: **EDIT THIS LINK PATH**
$next_page = $page + 1;
if($next_page <= $total_pages) {
echo("
<a href=client_default.php?limit=$limit&page=$next_page>
<b>Suivant</b></a><b>>></b>");
}
?>
</td>

</tr>
</table>
<?php

//all done
?>



</FIELDSET>
</td>
</tr>
</table>
</body>
</html>
----------------------------------------------------------------------
0
Merci karando,

Ca marche parfaitement et sa permet davoir le recherche et le resultat sue la meme page (avec 2 form).
0