Mon formulaire ne marche pas
Résolu/Fermé
Altaïr Rouss
-
Modifié le 21 août 2017 à 15:50
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 22 août 2017 à 20:23
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 22 août 2017 à 20:23
A voir également:
- Mon formulaire ne marche pas
- Formulaire de réclamation facebook - Guide
- Formulaire instagram compte suspendu - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Google Chrome
- Problème d'envoi de formulaire ✓ - Forum PHP
- Le formulaire rempli - Guide
3 réponses
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
Ambassadeur
1 554
Modifié le 21 août 2017 à 19:26
Modifié le 21 août 2017 à 19:26
bonsoir,
peux-tu donner les noms de tes deux fichiers php?
peux-tu aussi expliquer le scenario plus factuellement?
- Ma base de données est vide, je n'ai aucun cookie lié à ce site (RAS)
- J'entre un pseudo et un message (?sur quelle page?). Ils s'affichent sur la page (quelle page, la même?) et mon champ "pseudo" prend automatiquement la valeur du cookie (RAS) (tu n'as aucun cookie, comment le champ peut-il prendre la valeur du cookie?)
- Je supprime le cookie qui à été créé pour simuler un nouvel utilisateur utilisant le chat (RAS)
- (et ensuite que fais-tu?) Quel que soit le pseudo que j'utilise, il prendra la valeur "Array" (où vois-tu cette valeur?) et aucun cookie n'est enregistré
peux-tu donner les noms de tes deux fichiers php?
peux-tu aussi expliquer le scenario plus factuellement?
- Ma base de données est vide, je n'ai aucun cookie lié à ce site (RAS)
- J'entre un pseudo et un message (?sur quelle page?). Ils s'affichent sur la page (quelle page, la même?) et mon champ "pseudo" prend automatiquement la valeur du cookie (RAS) (tu n'as aucun cookie, comment le champ peut-il prendre la valeur du cookie?)
- Je supprime le cookie qui à été créé pour simuler un nouvel utilisateur utilisant le chat (RAS)
- (et ensuite que fais-tu?) Quel que soit le pseudo que j'utilise, il prendra la valeur "Array" (où vois-tu cette valeur?) et aucun cookie n'est enregistré
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
21 août 2017 à 21:34
21 août 2017 à 21:34
Bonjour,
On le code de connexion à la bdd dans un fichier à part qu'il suffit d'inclure dans ses pages au lieu de le réécrire à chaque fois !
Puis concernant le reste de ton code :
déjà.. on place le maximum de code php EN DEHORS du html (au début du fichier)
par exemple.. la connexion à la bdd, la récupération PROPRE des variables AVANT de les utiliser
le traitement du formulaire .. etc...
Ensuite.. pour gérer les erreurs PHP .. on utilise des blocs TRY/CATCH .. pas des " OR DIE.. "
Et pour finir .. les égalité se vérifient avec == ou === mais pas avec = !
On le code de connexion à la bdd dans un fichier à part qu'il suffit d'inclure dans ses pages au lieu de le réécrire à chaque fois !
<?php //fichier cnxbdd.php try{ $bdd =new PDO('mysql:host=localhost;dbname=ptsi; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?>
Puis concernant le reste de ton code :
déjà.. on place le maximum de code php EN DEHORS du html (au début du fichier)
par exemple.. la connexion à la bdd, la récupération PROPRE des variables AVANT de les utiliser
le traitement du formulaire .. etc...
Ensuite.. pour gérer les erreurs PHP .. on utilise des blocs TRY/CATCH .. pas des " OR DIE.. "
Et pour finir .. les égalité se vérifient avec == ou === mais pas avec = !
<?php //Activation des erreurs PHP error_reporting(E_ALL); ini_set('display-errors','on'); //connexion à la bdd require_once "cnxbdd.php"; //récupération PROPRE des variables $pseudo = !empty($_COOKIE['pseudo']) ? $_COOKIE['pseudo'] : NULL; // Récupération des 25 derniers messages $sql = "SELECT date_message , pseudo , message FROM recus ORDER BY ID DESC LIMIT 0, 25"; try{ $requete = $bdd -> prepare($sql) ; $requete->execute() ; //on stocke le résultat dans un ARRAY $messages = $requete->fetchAll(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } ?> <div id="form"> Envoyer un message: <form action="recus.php" method="post"> <p> <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" value="<?php echo $pseudo; ?>"><br /> <label for="message">Message</label> : <input type="text" name="message" id="message" /><br /> <input type="submit" value="Envoyer" /> </p> </form> </div> <div id="chat"> <h2>Chat :</h2> <?php // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars) foreach($messages as $donnees) { echo '<p><em>' .htmlspecialchars($donnees['date_message']). '</em><strong> -' .htmlspecialchars($donnees['pseudo']). ': </strong>' .htmlspecialchars($donnees['message']). '</p>' ; } ?> </div> </div> <!-- Fin div "form" -->
<?php //Fichier recus.php //Activation des erreurs PHP error_reporting(E_ALL); ini_set('display-errors','on'); //connexion à la bdd require_once "cnxbdd.php"; //fonctions function add_message($post_pseudo,$message){ $sql = 'INSERT INTO recus (date_message, pseudo, message) VALUES(:date_message, :pseudo, :message)'; $datas = array( 'date_message' => date('Y-m-d H:i:s'), 'pseudo' => $post_pseudo, 'message' => $message); try{ $requete = $bdd -> prepare($sql) ; $result = $requete->execute($datas) ; // Redirection du visiteur vers la page du minichat if($result){ header('Location: forum.php'); exit(); } }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } } //récupération PROPRE des variables $autorisation = NULL; $cookie_pseudo = !empty($_COOKIE['pseudo']) ? $_COOKIE['pseudo'] : NULL; $post_pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL; $message = !empty($_POST['message']) ? $_POST['message'] : NULL; // Si les deux champs sont remplis if ($post_pseudo && $message) { // Si le PC client possède un pseudo if ($cookie_pseudo) { // Si le pseudo est celui du client if ($post_pseudo == $pseudo) { add_message($post_pseudo,$message); } else { // Si le pseudo n'est pas celui du client echo "Ceci n'est pas votre pseudo"; } } else { // Si le PC client ne possède pas de pseudo // On regarde si le pseudo existe en base $sql = 'SELECT pseudo FROM recus WHERE pseudo =:pseudo'; $datas = array( 'pseudo' => $post_pseudo); try{ $requete = $bdd -> prepare($sql) ; $result = $requete->execute($datas) ; $reponse = $result->fetchAll(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } if(empty($reponse)){ $autorisation = false; // On crée un cookie pour donner un nom à l'utilisateur setcookie('pseudo', $_POST['pseudo'], time()+2.5*365*24*3600, null, null, false, true); add_message($post_pseudo,$message); } else { echo "Ce pseudo est déjà utilisé, veuillez en choisir un autre"; } } }else{ // S'il manque un champ echo "Veuillez renseigner un pseudo et un message pour intéragir avec le chat"; } ?>
C'est les égalités, il y en a deux que j'ai mal écrites, tout est réglé
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
22 août 2017 à 20:23
22 août 2017 à 20:23
Oui.
Mais... tiens compte quand même de mes remarques....
Mais... tiens compte quand même de mes remarques....