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

PHP & Base de données Discussion :

Données entrées dans un formulaire restent affichées sur la page de résultats


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Graphiste
    Inscrit en
    Avril 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2019
    Messages : 25
    Points : 8
    Points
    8
    Par défaut Données entrées dans un formulaire restent affichées sur la page de résultats
    Bonjour,

    J'ai une page de recherche. Quand les internautes cliquent sur "Rechercher", ça renvoie à une autre page affichant les résultats. Sur le côté de cette page il y a un onglet "modifier la recherche" qui reprend le même formulaire que la page précédente.

    Pour plus de clarté, j'aimerai que les données encodées dans le formulaire de la première page se retrouvent dans le formulaire "modifié ma recherche. Je ne sais pas si c'est compréhensible.

    Voici la page avec le formulaire :
    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
    <h3>2. Rechercher une solution de mobilité alternative au départ de ma commune :</h3>	
     
     
    <form action="communes.php" method="POST">
     
    		<?php // communes
    			$reponse = $bdd->query("SELECT * FROM pbqj_mobilef.commune ORDER BY nom_commune ASC;");
    		?>
    			<select value="id_commune" name="id_commune" type="text" class="form-control">
     
    		<?php
    			while ($donnees = $reponse->fetch())
    			{
    		 	echo '<option value="'.$donnees['id'].'">'.$donnees['nom_commune'].'</option>';
    		 	}
    		?>
    	 		</select><br>
     
     
    	<h3>3. De quel type de transport adapté avez-vous besoin ? </h3>
     
    		<?php // categories
    			$reponse = $bdd->query("SELECT * FROM pbqj_mobilef.transport ORDER BY ordre;");
    		?>
     
    			<p>
    			<select value="id_transport" name="id_transport" type="text" class="form-control">
    		<?php
    			while ($donnees = $reponse->fetch())
    			{
    			 echo '<option value="'.$donnees['id'].'">'.$donnees['nom_transport'].'</option>';
    			}
    		$reponse->closeCursor();
    		?>	
    			</select>
    			</p><br>
     
     
    <input type="submit" name="info" value="Rechercher" class="btnrouge" />
    </form><!--balise de fermeture du formulaire !!!!-->
    Et voici la page qui affiche les résultats avec le formulaire "modifié ma recherche"

    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
    <?php  
     
     
     
    $sql = "SELECT service.idservice, logo, nom_service, motif_de_transport, beneficiaires, accompagnement_possible
    FROM commune
    INNER JOIN intuni 
    	ON commune.id = intuni.id_commune
    INNER JOIN transport
    	ON intuni.id_transport = transport.id
    INNER JOIN service
    	ON intuni.id_service = service.idservice 
    WHERE commune.id = :id_commune AND transport.id = :id_transport;
    	";
    $reponse = $bdd->prepare($sql);
    $reponse->bindValue(':id_commune', $_POST["id_commune"]);
    $reponse->bindValue(':id_transport', $_POST["id_transport"]);
    $reponse->execute();
     
     
    while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))
     
    {?>
    								<div class="col-lg-12">
     
    					<div class="pricing-box-alt">
    			<div class="pricing-heading">
    				<div class="col-lg-4">
    					<img src="img/logos/<?php echo nl2br($donnees['logo']);?>" style="width : 160px;"/>
    				</div>
     
    				<div class="col-lg-8">
     
    					<h3 class=""><?php echo ($donnees['nom_service']);?></h3>
    						<p><strong>Motif de transport :</strong><br><?php echo nl2br($donnees['motif_de_transport']);?> </p><br>
    						<p class="beneficiaires"><strong>Bénéficiaires : </strong><?php echo nl2br($donnees['beneficiaires']);?><br><br>
    						<strong>Aides et accompagnement possible : </strong><?php echo ($donnees['accompagnement_possible']);?></p> <br><br>
     
     
     
    						<a href="service.php?idservice=<?php echo $donnees['idservice']; ?>" class="btnrouge">Plus d'informations</a>
     
    						</div>
     
    					<div class="pricing-action">
    						<p style="color: #fcfcfc;"><?php echo ($donnees['nom_service']);?></p>
    				</div>
    			</div>
    									</div></div>
     
    					<?php				
     
    }
    $reponse->closeCursor(); ?>
     
    				</article>	
     
     
    		</div>
     
    			<div class="col-lg-4">
    				<aside class="right-sidebar">
     
     
     
    				<div class="widget">
     
    										<h5 class="widgetheading">Modifier ma recherche</h5>
     
     
    					<form action="communes.php" method="POST">
     
    <br>
    <h4>Choisir une commune</h3>
     
     
    <form action="communes.php" method="POST">
     
    		<?php // communes
    			$reponse = $bdd->query("SELECT * FROM pbqj_mobilef.commune ORDER BY nom_commune ASC;");
    		?>
    			<select value="id_commune" name="id_commune" type="text" class="form-control">
     
    		<?php
    			while ($donnees = $reponse->fetch())
    			{
    		 	echo '<option value="'.$donnees['id'].'">'.$donnees['nom_commune'].'</option>';
    		 	}
    		?>
    	 		</select><br>
     
    <h4>Choisir un type de transport</h4>
     
    <?php // categories
    			$reponse = $bdd->query("SELECT * FROM pbqj_mobilef.transport ORDER BY ordre;");
    		?>
     
    			<p>
    			<select value="id_transport" name="id_transport" type="text" class="form-control">
    		<?php
    			while ($donnees = $reponse->fetch())
    			{
    			 echo '<option value="'.$donnees['id'].'">'.$donnees['nom_transport'].'</option>';
    			}
    		$reponse->closeCursor();
    		?>	
    			</select>
    			</p><br>
     
     
    	<input type="submit" value="Rechercher" class="btnrouge"/>
    										</form>
    Pouvez-vous m'aider ?

    Merci beaucoup

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Il est de bonne habitude de séparer les différents contenus d'un site.
    Etre un développeur, c'est aussi avoir une grande flemme !

    Dans ton cas, tu devrais sortir tout ton formulaire dans un fichier à part entière.
    Il ne te restera qu'à écrire include('/chemin/vers/le/fichier/du/formulaire/form.php');.

    Maintenant pour en revenir à ta question, il suffit de définir l'attribut selected pour option qui correspond à ce qui a été envoyé par le formulaire.
    Personnellement, je crée souvent une fonction pour faire ça :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function form_value($index, $default = "")
    {
        return (isset($_POST[$index])) ? $_POST[$index] : $default;
    }

    Du coup, si je prends l'exemple d'un select de ton formulaire :
    Code php : 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
    <?php
    // communes
    $reponse = $bdd->query("SELECT * FROM pbqj_mobilef.commune ORDER BY nom_commune ASC;");
    ?>
    <select value="id_commune" name="id_commune" type="text" class="form-control">
     
        <?php
        while ($donnees = $reponse->fetch()) {
            // On vérifie si form_value() est égale à notre "id" courant
            // Si oui, on lui défini l'attribut "selected", sinon un string vide
            $selected = (form_value('id_commune') == $donnees['id']) ? ' selected="selected"' : '';
            // On oublie pas d'afficher l'attribut défini (ou non) dans $selected
            echo '<option value="' . $donnees['id'] . '"' . $selected . '>' . $donnees['nom_commune'] . '</option>';
        }
        ?>
    </select><br>

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par LEM4000 Voir le message
    J'ai une page de recherche. Quand les internautes cliquent sur "Rechercher", ça renvoie à une autre page affichant les résultats.
    La meilleure solution est d'enregistrer les données sélectionnée dans des variables de SESSIONS.



    Pour ré-afficher les données dans le formulaire, darkstar123456 t'a donné la méthode.
    Il faudra juste remplacer form_value('...') * par $_SESSION ['recherche']['...'].
    * La fonction form_value() n'a plus lieu d'être.

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Graphiste
    Inscrit en
    Avril 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2019
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci pour votre réponse. J'ai testé ceci mais c'est tjrs comme avant :

    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
     
    <form action="communes.php" method="POST">
     
    <?php
    // communes
    $reponse = $bdd->query("SELECT * FROM pbqj_mobilef.commune ORDER BY nom_commune ASC;");
    ?>
    <select value="id_commune" name="id_commune" type="text" class="form-control">
     
        <?php
        while ($donnees = $reponse->fetch()) {
            // On vérifie si form_value() est égale à notre "id" courant
            // Si oui, on lui défini l'attribut "selected", sinon un string vide
            $selected = ($_SESSION['id_commune'] == $donnees['id']) ? ' selected="selected"' : '';
            // On oublie pas d'afficher l'attribut défini (ou non) dans $selected
            echo '<option value="' . $donnees['id'] . '"' . $selected . '>' . $donnees['nom_commune'] . '</option>';
        }
        ?>
    </select><br>
     
    <h4>Choisir un type de transport</h4>
     
    <?php
    // categorie
    $reponse = $bdd->query("SELECT * FROM pbqj_mobilef.transport ORDER BY ordre;");
    ?>
    <select value="id_transport" name="id_transport" type="text" class="form-control">
     
        <?php
        while ($donnees = $reponse->fetch()) {
            // On vérifie si form_value() est égale à notre "id" courant
            // Si oui, on lui défini l'attribut "selected", sinon un string vide
            $selected = ($_SESSION['id_transport'] == $donnees['id']) ? ' selected="selected"' : '';
            // On oublie pas d'afficher l'attribut défini (ou non) dans $selected
            echo '<option value="' . $donnees['id'] . '"' . $selected . '>' . $donnees['nom_transport'] . '</option>';
        }
        ?>
    </select><br>

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Oui mais bon c'est pas magique les sessions. As-tu fais un session_start() quelque part pour démarrer la gestion des sessions et as-tu défini tes variables de session avec les valeurs que tu veux mémoriser ?

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Graphiste
    Inscrit en
    Avril 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2019
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    J'ai fait comme ceci sur ma page de résultats (où le formulaire doit récupérer les données du premier formulaire)

    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
    <?php if( empty(session_id()) ){ session_start(); } 
    if( isset($donnees['id_commune']) ){ $_SESSION['recherche']['critere1'] = $donnees['id_commune']; }
    if( isset($donnees['id_transport']) ){ $_SESSION['recherche']['critere2'] = $donnees['id_transport']; }
     ?>
    <?php include("connexion.php"); ?>
     
    <?php include("header.php"); ?>
     
    	<!-- end header -->
     
     
    										<h5 class="widgetheading">Modifier ma recherche</h5>
     
     
    					<form action="communes.php" method="POST">
     
    <br>
    <h4>Choisir une commune</h3>
     
     
    <form action="communes.php" method="POST">
     
    <?php
    // communes
    $reponse = $bdd->query("SELECT * FROM pbqj_mobilef.commune ORDER BY nom_commune ASC;");
    ?>
    <select value="id_commune" name="id_commune" type="text" class="form-control">
     
        <?php
        while ($donnees = $reponse->fetch()) {
            $selected = ($_SESSION ['recherche']['critere1'] == $donnees['id']) ? ' selected="selected"' : '';
            echo '<option value="' . $donnees['id'] . '"' . $selected . '>' . $donnees['nom_commune'] . '</option>';
        }
        ?>
    </select><br>
     
    <h4>Choisir un type de transport</h4>
     
    <?php
    // categorie
    $reponse = $bdd->query("SELECT * FROM pbqj_mobilef.transport ORDER BY ordre;");
    ?>
    <select value="id_transport" name="id_transport" type="text" class="form-control">
     
        <?php
        while ($donnees = $reponse->fetch()) {
            $selected = ($_SESSION['recherche']['critere2'] == $donnees['id']) ? ' selected="selected"' : '';
            echo '<option value="' . $donnees['id'] . '"' . $selected . '>' . $donnees['nom_transport'] . '</option>';
        }
        ?>
    </select><br>
     
     
    	<input type="submit" value="Rechercher" class="btnrouge"/>
    										</form>
     
     
     
    					</ul>
    				</div>
     
     
    				</div>
    				</aside>
    			</div>
     
    		</div>
     
     
    	</div>
    	</section>
     
    	<?php include("footer.php"); ?>
     
     
     
     
    </body>
    </html>

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il faut essayer de comprendre ce qu'on fait...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php if( empty(session_id()) ){ session_start(); } 
    if( isset($donnees['id_commune']) ){ $_SESSION['recherche']['critere1'] = $donnees['id_commune']; }
    if( isset($donnees['id_transport']) ){ $_SESSION['recherche']['critere2'] = $donnees['id_transport']; }
     ?>
    $donnees n'existe pas ici. C'est $_POST.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/12/2017, 19h13
  2. Réponses: 1
    Dernier message: 02/05/2010, 10h26
  3. [MySQL] tester les données entrées dans la formulaire
    Par marwen86 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/02/2010, 15h47
  4. Réponses: 1
    Dernier message: 25/09/2008, 19h09
  5. Filtrer sur les données vides dans un formulaire
    Par jevany dans le forum Access
    Réponses: 7
    Dernier message: 29/05/2006, 08h50

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