Probléme de lecture $_GET[]
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un problème avec une page PHP :
- Sur ma premiere page est affciher la liste des messages enregisté dans la base de donnée. Pour chaque message, je peux procédé a une reponse que j'ai donc codé comme ceux ci :
Ce lien conduit donc à ma page repondre.php. Lorsque je clique, j'ai bien l'email qui est dans l'URL
Voici le code de la page repondre.php :
Je veux donc inserer 'Neileb Design' dans email, le message rempli dans le formulaire dans 'message' et dans 'reponse' je veux faire rentrer le $_GET['email'].
Cela m'affiche aucune erreur et aucune ligne n'est rentré dans la base de donné.
Merci d'avance de votre aide.
J'ai un problème avec une page PHP :
- Sur ma premiere page est affciher la liste des messages enregisté dans la base de donnée. Pour chaque message, je peux procédé a une reponse que j'ai donc codé comme ceux ci :
<td><a href="repondre.php?email=<?php echo $donnees2['email'] ?>" style="font-weight:bold" >Repondre</a></td>
Ce lien conduit donc à ma page repondre.php. Lorsque je clique, j'ai bien l'email qui est dans l'URL
Voici le code de la page repondre.php :
<?php include('connectionbdd.php'); session_start(); if ($_SESSION['email']!='admin') { header('Location: connection.php'); } if(isset($_POST['bouton'])) { $email=$_GET['email']; if(isset($email)) { $req = $bdd->prepare("INSERT INTO clientneileb (email, message, reponse) VALUES ('NeiLeb Design', :message, :email )"); $req -> execute(array( 'email' =>$email, 'message' =>$_POST['message'])); if($req) { header('Location: admin.php'); } } } ?> <div id="conteneur"> <h1>Répondre</h1> <form method='POST' action='repondre.php' > <p><br><br><br>Message :<br> <input class='champ' type='text' name='message' required height="300px" > <br><br> <input type='submit' name='bouton' value='Valider' class='boutonenvoyer'> </p> </form>
Je veux donc inserer 'Neileb Design' dans email, le message rempli dans le formulaire dans 'message' et dans 'reponse' je veux faire rentrer le $_GET['email'].
Cela m'affiche aucune erreur et aucune ligne n'est rentré dans la base de donné.
Merci d'avance de votre aide.
A voir également:
- Probléme de lecture $_GET[]
- Confirmation de lecture whatsapp - Guide
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
- Accusé de lecture gmail - Guide
- Lecture epub sur pc - Guide
- Lecture gratuite - Télécharger - Vie quotidienne
3 réponses
Essayes ça :
Cordialement,
Jordane
<?php //Affichage des erreurs php error_reporting(E_ALL); //Démarrage des sessions session_start(); //Connexion à la BDD include('connectionbdd.php'); if ($_SESSION['email']!='admin') { header('Location: connection.php'); } //récupératoin "propre des variables $email = !empty($_GET['email']) ? $_GET['email'] : (isset($_POST['email'] ? $_POST['email'] : ''); $message = isset($_POST['message']) ? $_POST['message']: ''; if(isset($_POST['bouton'])){ if($email) { $sql = "INSERT INTO clientneileb (email, message, reponse) VALUES ('NeiLeb Design', :message, :email )"; $a_datas = array( ':email' =>$email, ':message' =>$message); try{ $req = $bdd->prepare($sql); $res = $req->execute($a_datas); if($res){ header('Location: admin.php'); } }catch(Exception $e) // En cas d'erreur dans l'execution de la requete echo "Erreur ! ". $e->getMessage(); echo "<br> Requete :<br>".$sql; echo "a_datas =<br><pre>"; print_r($a_datas); echo "</pre>"; } } } ?> <! -- Debut du code HTML --> <div id="conteneur"> <h1>Répondre</h1> <form method='POST' action='' > <input type="hidden" name="email" value="<?php echo $email;?>"> <p><br><br><br>Message :<br> <input class='champ' type='text' name='message' required height="300px" > <br><br> <input type='submit' name='bouton' value='Valider' class='boutonenvoyer'> </p> </form>
Cordialement,
Jordane
Salut,
En validant le formulaire de la page repondre.php, tu peux remarquer dans l'URL que le paramètre email n'est plus présent, tu ne peux donc pas le récupérer via les paramètres GET.
Une solution simple est d'ajouter l'adresse mail dans un input de type hidden afin que celle-ci soit envoyée lors de la validation du formulaire, par exemple :
Ainsi en cliquant sur le lien repondre.php?email=toto@exemple.com, l'adresse mail toto@exemple.com est renseignée dans le champ hidden. Lors de la validation du ce formulaire, on pourra alors récupérer cette adresse via $_POST['email'] puisque le formulaire utilise la méthode post :
Une autre solution est de faire transiter ce mail via une variable de session.
Bonne journée
En validant le formulaire de la page repondre.php, tu peux remarquer dans l'URL que le paramètre email n'est plus présent, tu ne peux donc pas le récupérer via les paramètres GET.
Une solution simple est d'ajouter l'adresse mail dans un input de type hidden afin que celle-ci soit envoyée lors de la validation du formulaire, par exemple :
<form method='POST' action='' > <p><br><br><br>Message :<br> <input class='champ' type='text' name='message' required height="300px" > <br><br> <input type='hidden' name='email' value="<?php echo htmlspecialchars($_GET['email']); ?>" <input type='submit' name='bouton' value='Valider' class='boutonenvoyer'> </p> </form>
Ainsi en cliquant sur le lien repondre.php?email=toto@exemple.com, l'adresse mail toto@exemple.com est renseignée dans le champ hidden. Lors de la validation du ce formulaire, on pourra alors récupérer cette adresse via $_POST['email'] puisque le formulaire utilise la méthode post :
$email=$_POST['email'];
Une autre solution est de faire transiter ce mail via une variable de session.
Bonne journée