Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1770 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php débutant] formulaire avec mess. d'erreur (tp minichat siteduzero)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php débutant] formulaire avec mess. d'erreur (tp minichat siteduzero)

n°2124859
benbigboss
Posté le 04-02-2012 à 11:14:56  profilanswer
 

Salut à tous,
 
j'essaie de comprendre comment fonctionne le php depuis peu, et je lis donc le site du zero.
 
Depuis quelques jours j'essaie de refaire le tp "mini chat" en apportant quelques modifications. ( http://www.siteduzero.com/tutoriel [...] -chat.html )
 
Ya une modif que je n'arrive absolument pas à faire...
C'est envoyer un message d'erreur quand les gens valident sans rien mettre dans les form.
 
Ce que j'ai réussi à a faire, c'est éviter la moindre modification si ya rien (on valide, mais rien ne se passe). Mais je voudrais en plus rajouter un message d'erreur (ex: "Il manque ton nom" ).
 
Pouvez-vous m'expliquer comment faire ca, car là je suis completement bloqué...
 
Merci beaucoup :)
 

mood
Publicité
Posté le 04-02-2012 à 11:14:56  profilanswer
 

n°2124860
benbigboss
Posté le 04-02-2012 à 11:17:12  profilanswer
 

Je précise le code pour la modif faite :

 

dans la mage minichat_post :

Code :
  1. <?php
  2. // Connexion à la base de données
  3. try
  4. {
  5.     $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  6.     $bdd = new PDO('mysql:host=localhost;dbname=test2', 'root', '', $pdo_options);
  7.     if($_POST['pseudo']!="" AND $_POST['message']!="" )
  8. {
  9.     // Insertion du message à l'aide d'une requête préparée
  10.     $req = $bdd->prepare('INSERT INTO minichat (pseudo, message) VALUES(?, ?)');
  11.     $req->execute(array($_POST['pseudo'], $_POST['message']));
  12.    
  13.     // Redirection du visiteur vers la page du minichat
  14.     header('Location: minichat.php');
  15. }
  16. else
  17. {
  18. header('Location: minichat.php');
  19. }
  20. }
  21. catch(Exception $e)
  22. {
  23.     die('Erreur : '.$e->getMessage());
  24. }
  25. ?>


Message édité par benbigboss le 04-02-2012 à 11:56:27
n°2124862
adwer
Comité anti-STS
Posté le 04-02-2012 à 11:31:11  profilanswer
 

Un truc assez simple à faire pour cela (je pense) :
 

Code :
  1. else
  2. {
  3.     header('Location: messages.php');
  4.     if($_POST['pseudo']=="" )
  5.     {
  6.        echo '<p><strong>Renseignes ton pseudo, s'ilteplease </strong></p>';
  7.     }
  8.     else
  9.     {
  10.        echo '<p><strong>Ecris un message, au moins :D </strong></p>';
  11.     }
  12. }


 
Ca fait un petit moment que j'ai pas fait de php, mais logiquement ça devrait marcher :-)


Message édité par adwer le 04-02-2012 à 11:32:17
n°2124866
benbigboss
Posté le 04-02-2012 à 11:57:47  profilanswer
 

En fait j'avais pensé à faire ca, mais comme là on est dans le fichier minichat_post.php (donc pas celui qui contient le formulaire et les messages), le echo n'apparait jamais sur la page visible...

n°2124869
adwer
Comité anti-STS
Posté le 04-02-2012 à 12:36:53  profilanswer
 

J'avais pas tilté, j'avoue :p
Ce que tu peux faire, à ce moment la, c'est préciser dans la redirection qu'y a une erreur, ta redirection pourrait ressembler à ça :  
 
header('Location: minichat.php?error=nom');
 
et tu récupères le code d'erreur avec un $_GET['error'], que tu testes pour savoir si tu dois afficher un message d'erreur

n°2124873
benbigboss
Posté le 04-02-2012 à 13:27:13  profilanswer
 

Ha oui !
Très bonne idée !
 
En revanche, ca renvoie un messsage d'erreur quand je charge le page pour la première fois car la variable error n'est pas définie.
Dur l'apprentissage du php !

n°2124874
adwer
Comité anti-STS
Posté le 04-02-2012 à 13:34:53  profilanswer
 

Pour savoir si une variable est définie, t'as la fonction isset(taVariable) :)


Message édité par adwer le 04-02-2012 à 13:35:12
n°2124875
benbigboss
Posté le 04-02-2012 à 14:09:05  profilanswer
 

Oui j'utilise
if(isset($error)
{echo $error;}
else
{...}
mais ca ne semble pas fonctionner...
 
Sinon, je pensais à definir la variable error ="" sur la page minichat, et quand on valide, la variable prend une autre valeur selon que les form sont remplies ou non...
 
Possible de définir $error=="" dès le 1er chargement de minichat ?
 
Merci beaucoup :)

n°2124877
adwer
Comité anti-STS
Posté le 04-02-2012 à 14:28:30  profilanswer
 

Tu dois faire isset($_GET['error'])  pour récupérer la valeur de error depuis  l'URL, c'est bien ce que tu fais ?

n°2124878
benbigboss
Posté le 04-02-2012 à 14:38:53  profilanswer
 

oui oui tout à fait,

 

mais au premier chargement de la page, c'est à dire quand j'appelle la feuille minichat.php, l'url ne contient que www.[]/minichat.php, il n'y a donc pas de variable error, d'où le message d'erreur sur la page...


Message édité par benbigboss le 04-02-2012 à 14:39:20
mood
Publicité
Posté le 04-02-2012 à 14:38:53  profilanswer
 

n°2124881
adwer
Comité anti-STS
Posté le 04-02-2012 à 14:50:38  profilanswer
 

ouais, mais isset devrait vérifier si ta variable existe, enfin d'après mes souvenirs... C'est bizarre :/

n°2124882
benbigboss
Posté le 04-02-2012 à 15:07:04  profilanswer
 

En fait, j'ai trouvé, tu m'as vraiment bien aidé, merci !
 
Je vais pointer toutes mes pages vers www.[]/minichat.php?error=
et faire un echo $error;
 
Comme ca, rien n'apparait,
et quand les formes sont vides, ca renverra un minichat.php?error=il manque un nom !'); (ddans le header:('location).
 
Merci beaucopu !
 
Reste plus qu'à comprendre comment mettre des accents dans l'url
 
A+
 
 

n°2124884
adwer
Comité anti-STS
Posté le 04-02-2012 à 15:57:41  profilanswer
 

Ca marche, bien trouvé, j'y avais pensé mais je trouvais ça moche :p
A+

n°2124897
benbigboss
Posté le 04-02-2012 à 18:18:31  profilanswer
 

Halala

 

Maintenant, quand j'envoie mon site sur le serveur (1and1), j'ai une erreur

Citation :

Warning: Cannot modify header information - headers already sent by (output started at /homepages/45/dXXXXXX//htdocs/minichat_post.php:5) in /homepages/45/dXXXXXX/htdocs/minichat_post.php on line 23

 

Pourtant mon code fonctionne bien chez moi !

 
Code :
  1. <html>
  2. <meta charset="utf-8" />
  3. <?php
  4. try
  5. {
  6.     $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  7.     $bdd = new PDO('mysql:host=ddbXXX.1and1.com;name=dbXXXX', 'dbXXXXX', 'YYYYYY', $pdo_options);
  8.     if($_POST['pseudo']!="" AND $_POST['message']!="" )
  9. {
  10.  
  11.     $req = $bdd->prepare('INSERT INTO commentaires (pseudo, message) VALUES(?, ?)');
  12.     $req->execute(array($_POST['pseudo'], $_POST['message']));
  13.    
  14.    
  15.     header('Location: messages.php?erreur=');
  16. }
  17. else
  18. {
  19. header('Location: messages.php?erreur=message d'erreur');
  20. }
  21. }
  22. catch(Exception $e)
  23. {
  24.     die('Erreur : '.$e->getMessage());
  25. }
  26. ?>
  27. </html>
 

Une idée ?
car là aussi totaly blocked !


Message édité par benbigboss le 04-02-2012 à 18:20:28
n°2124899
benbigboss
Posté le 04-02-2012 à 18:31:08  profilanswer
 

Ha bah c'est bon,
 
Je devais supprimer <html> et <meta>
 
Cool !Tout fonctionne, merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php débutant] formulaire avec mess. d'erreur (tp minichat siteduzero)

 

Sujets relatifs
Erreur lors de la lecture de gros fichiers sur réseau localrecherche logiciel libre pour formulaire, retour requête
Remplir un formulaire HTML avec C++Question de débutant, créer petit logiciel de recherche de texte.
Erreur du système d'exploitation 3(Le chemin d'accès spécifié est intr[QST] Débutant pour faire un formulaire simple
modification d'un formulaire - tableauerreur installation SDK pour windows 7
erreur besoin d'aide 
Plus de sujets relatifs à : [php débutant] formulaire avec mess. d'erreur (tp minichat siteduzero)


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR