IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

formulaire et pagination


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut formulaire et pagination
    bonjour à tous,

    je voudrais faire un formulaire ou plus exactement un filtre de recherche.
    J'ai une grosse base qui contient l'historique de transferts de fichiers. Je veux pouvoir filtrer (émetteur / destinataire) et afficher les résultats sur plusieurs pages.

    Je bloque sur l'affichage des pages suivantes (sup à 1). Quand je clique sur le lien "2" (numéro de la page) ca me ré-initialise le formulaire ... du coup, je perds la valeur de mes variables (pour ma requete) alors que j'ai mis des SELECTED !!! Comprends pas ...

    voici le code, merci de votre lecture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <?
    // ------------------------------------------------------------------------------- 
    // -------------------------------------------------------------------------------
    ?>
    <html>
    <head>
    <title> Histo des Transferts </title>
    <link rel="stylesheet" media="screen" type="text/css" title="mon_funky_style" href="mon_style.css" />
    </head>
    <body>
    <div id="en_tete">  
    <h1><a href="test_code4.php" style="text-decoration:none;" >Historique des Transferts </a></h1>
    </div>
     
     
    <?php
    // connexion a la base fm3 !!!
    mysql_connect("10.xx.xx.xx", "fmhisto", "xxxxxxxx");
    mysql_select_db("fm3");
    ?>
     
     
    <div id="formulaire">
    	<div id="emetteur">
    		<?php
    		// creation de la liste deroulante pour l'emetteur
    		$sql3='SELECT distinct nom_partenaire FROM PARTENAIRES order by nom_partenaire asc';
    		$result3=mysql_query($sql3);
    		echo "<form action='test_code4.php' method='POST'>
    		<table><tr><td>
    		<select name='champ_emetteur' id='champ_emetteur'>";
    		if($row3[nom_partenaire]=$_POST['champ_emetteur'])
    		{
    			$selected=$row3[nom_partenaire];
    		}
    		else
    		{
    			$selected="Emetteur" ;
    		}
    		echo "<option value='".$row3[nom_partenaire]."' $selected>$selected</option>";
    		// affichage de la liste 
    		while ($row3=mysql_fetch_array($result3))
    		{
    			echo"<option>$row3[nom_partenaire]</option>";
    		}
    		echo"</select></tr></td>";
    		?>
    		</table>
    	</div>
     
     
    	<div id="destinataire">
    		<?php
    		// creation de la liste deroulante pour le destinataire
    		$sql2='SELECT distinct nom_partenaire FROM PARTENAIRES order by nom_partenaire asc';
    		$result2=mysql_query($sql2);
    		echo "<form action='test_code4.php' method='POST'>
    		<table><tr><td>
    		<select name='champ_destinataire' id='champ_destinataire'>";
    		if($row2[nom_partenaire]=$_POST['champ_destinataire'])
    		{
    			$selected=$row2[nom_partenaire];
    		}
    		else
    		{
    			$selected="Destinataire" ;
    		}
    		echo "<option value='".$row2[nom_partenaire]."' $selected>$selected</option>";
    		// affichage de la liste 
    		while ($row2=mysql_fetch_array($result2))
    		{
    			echo"<option>$row2[nom_partenaire]</option>";
    		}
    		echo"</select></tr></td>";
    		?>
    		</table>
    	</div>
    </div>
     
    <div id="valid_reset">
    <form method="POST"> <input value="valider" type="submit">
    </form>
    </div>
     
     
    <div id="resultat">
    <?
    if (($_POST['champ_emetteur'])=="TOUS")
    {
    	$emetteur="%";
    }
    else
    {
    	$emetteur=$_POST['champ_emetteur'];
    }
    if (($_POST['champ_destinataire'])=="TOUS")
    {
    	$destinataire="%";
    }
    else
    {
    	$destinataire=$_POST['champ_destinataire'];
    }
     
    echo "emetteur :" .$emetteur;
    echo "destinataire :" .$destinataire;
    //--------------------------------------------------------------------
    $messagesParPage=100; //100 lignes par page.
     
    // Nombre Total (sans limite) de réponse à la requete
    $retour_total='select date, E.nom_partenaire as emetteur, D.nom_partenaire as destinataire, nom_fic from HISTO, PARTENAIRES as D, PARTENAIRES as E where id_emetteur=E.id_partenaire AND id_destinataire=D.id_partenaire AND D.nom_partenaire like "'.$destinataire.'" AND E.nom_partenaire like "'.$emetteur.'" order by date desc ';
    $retour_count=mysql_query($retour_total);
    $NumResult=mysql_num_rows($retour_count);
    echo "nbre total de reponses :" .$NumResult;
     
    //Nombre de pages.
    $nombreDePages=ceil($NumResult/$messagesParPage);
     
     
    	if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    	{
    		echo "get :" .$_GET['page'];
    		$pageActuelle=intval($_GET['page']);
    		echo "page actuelle :" .$pageActuelle;
    		if($pageActuelle>$nombreDePages)
    		{
    			$pageActuelle=$nombreDePages;
    		}
    	}
    	else 
    	{
    		echo "get :" .$_GET['page'];
    		$pageActuelle=1;  
    	}
     
    	$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
    	// La requête sql (avec limit) pour récupérer les messages de la page actuelle.
    	$retour_messages_limited='select date, E.nom_partenaire as emetteur, D.nom_partenaire as destinataire, nom_fic from HISTO, PARTENAIRES as D, PARTENAIRES as E where id_emetteur=E.id_partenaire AND id_destinataire=D.id_partenaire AND D.nom_partenaire like "'.$destinataire.'" AND E.nom_partenaire like "'.$emetteur.'" order by date desc limit '.$premiereEntree.','.$messagesParPage;
    	$r_messages_limited=mysql_query($retour_messages_limited);
     
    // s'il y a des reponses
    if ($NumResult>0)
    {
    	echo '<table border="1" cellpadding="0" cellspacing="0"><tr><th>Date</th><th>Nom du Fichier</th></tr>';
    	while($row=mysql_fetch_array($r_messages_limited)) 
    	{
     			$date = stripslashes($row[0]);
    			$nom_fic = stripslashes($row[1]);
     
    			echo "<tr>
    			<td>$date</td>\n
    			<td>$nom_fic</td>\n
    			</tr>\n";
    	}
     
    	// affichage des liens N° de pages
    	echo '<p align="center">Page : '; 
    	for($i=1; $i<=$nombreDePages; $i++) 
    	{
    		//On va faire notre condition
    		if($i==$pageActuelle) //S'il s'agit de la page actuelle...
    		{
    			echo ' [ '.$i.' ] '; 
    		}	
    		else
    		{
    			echo ' <a href="test_code4.php?page='.$i.'">'.$i.'</a> ';
    		}
    	}
    	echo '</p>';
    }
     
     
    ?>
    </div>
    <?
    // Deconnexion de la base de donnees
    mysql_close();
    ?>
    <div id="pied_de_page">
       Tonio del Plato
    </div>
    </body>
    </html>
    si quelqu'un à la patience de me répondre ... merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    A vue de nez, je te dirais qu'il faut :
    1- considérer chaque page comme un formulaire indépendant,
    2- traiter (à chaque changement de page / submit) les variables récupérées et les enregistrer dans une variable de SESSION
    (sous forme d'un array de valeurs, par exemple)
    Ainsi, tu peux circuler d'une page à une autre sans perdre de données (puisque traitées et gardées en mémoire/session)
    3- sur la dernière page : un gros bouton "ENVOYER" qui, une fois cliqué, envoie sur le traitement finale : enregistrement en BdD / envoi mail (ou que sais-je encore)
    4- une fois le traitement final terminé : on vide la SESSION.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    ok merci, je vais regarder du coté des sessions.

Discussions similaires

  1. Formulaire avec pagination
    Par horlain dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 11/02/2014, 17h12
  2. [MySQL] pb syntaxe requêtes traitement formulaire avec pagination
    Par Evelyne31 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/11/2012, 17h36
  3. Tri par formulaire et pagination
    Par almoha dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2010, 19h01
  4. Memoriser l'etat des cases a cocher d'un formulaire avec pagination
    Par belaggoun2000 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/02/2010, 15h23
  5. Réponses: 7
    Dernier message: 04/04/2006, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo