Sujet Résolu Problème d'incrémentation dans une bdd

• Support sur le langage PHP (Hypertext Preprocessor).

Modérateur: Modérateurs(trices)

Messagepar DJ Kin-C » Jeu 30 Juin 2011 17:45

Bonjour, je développe un tout petit site intranet pour le boulot afin de stocker différentes aides informatique des problèmes que nous avons rencontré. Tout est bon, mise à part que dans ma base de données l'auto-incrémentation se passent très bien, mais pour les deux autres champs, je n'ai à chaque fois que le nom des variables pr et suggestions qui se sauvegardent dedans. Je vous mets donc mon code :


Code : Tout sélectionner
  1.  
  2.     <body bgcolor="#FFFCCC" text="#0000B0">
  3.         <div align="center">
  4.             <fieldset>
  5.                 <strong>Formulaire
  6.                 </strong>
  7.                                 
  8.                 <form action="./validation.php" method="post" onSubmit="return envoi()">
  9.                     <p>
  10.                         <fieldset>
  11.                             <legend align="center">Définition de la panne :
  12.                             </legend>
  13.                             <?php echo $_POST['pr'];
  14.                             
  15.                             ?>
  16.                         </fieldset>
  17.                     </p>
  18.                     <p>
  19.                         <fieldset>
  20.                             <legend align="center">
  21.                                 Solution :
  22.                             </legend>
  23.                             <?php echo $_POST['suggestions'];
  24.                             
  25.                             ?>
  26.                         </fieldset>
  27.                         <input type="submit" value="Valider">
  28.                             <?php
  29.                             mysql_connect("localhost", "root");
  30.                             mysql_select_db("aide");
  31.                             mysql_query("INSERT INTO irgp(id, titre, solution) VALUES(' ','pr','suggestions')");
  32.                             ?>
  33.                         </input>
  34.                     </p>
  35.                 </form>
  36.                 <a href="./default.php">
  37.                     Revenir à la page d'accueil
  38.                 </a>
  39.             </fieldset>
  40.         </div>
  41.     </body>
  42. </html>
  43.  






Merci de me répondre =)
 DJ Kin-C
Avatar de l’utilisateur

Stormtrooper
 
 
Messages : 38
Âge : 26
Inscription : Lun 18 Avr 2011 12:27
Dernière visite : Lun 12 Aoû 2013 16:30
Pays : France

Publicités

Messagepar Quentin01 » Jeu 30 Juin 2011 17:46

Je savais pas qu'on pouvais faire des input a fermante ?!
Et sinon c'est normal que tu es que le nom des variables puisque tu enregistre une chaine de caracteres avec leur nom dedans ^^
Il faut mettre le nom des variables donc ici $_POST['......'] ( Je sais plus le nom ).
Image
Ubuntu & Debian User !
 Quentin01
Avatar de l’utilisateur

Stormtrooper
 
 
Messages : 93
Âge : 18
Inscription : Dim 22 Mai 2011 17:21
Dernière visite : Lun 19 Nov 2012 17:54
Localisation : Un dieu est omniprésent !
Pays : France
OS : OS-X Snow Leopard
Navigateur : Firefox

Messagepar Anonyme » Jeu 30 Juin 2011 17:46

Voila 2 ou 3 trucs :

1)
Code : Tout sélectionner
  1. <?php
  2.                             mysql_connect("localhost", "root");
  3.                             mysql_select_db("aide");
  4.                             mysql_query("INSERT INTO irgp(id, titre, solution) VALUES(' ','pr','suggestions')");
  5.                            ?>


Remplace par <?php ... ?> on sait jamais des fois qu'il y est un truc quelque part ...


2)
Code : Tout sélectionner
  1. <?php
  2.                             mysql_connect("localhost", "root");
  3.                             mysql_select_db("aide");
  4.                             mysql_query("INSERT INTO irgp(id, titre, solution) VALUES(' ','pr','suggestions')"); ?>



le ' ' , je pense qu'il faudrait mettre un '' , sans espace entre les deux


Voila, je vois pas sinon a part ce qu'a dit Quentin01 ;)
Cet utilisateur est géré par l’Administrateur du Forum. Il correspond à des anciens membres de l’ancienne base de données.
Merci de votre compréhension.
 Anonyme
Avatar de l’utilisateur

Stormtrooper
 
Messages : 51
Inscription : Jeu 30 Juin 2011 13:19
OS : Windows XP - SP3
Navigateur : Firefox

Messagepar darky » Jeu 30 Juin 2011 17:47

Yop DJ ^^.
Bon déjà je ne ferai pas comme ça. Saisir les données et enregistrer ces données dans la même page Php.

Dans ta première page fait des input :
Code : Tout sélectionner
  1.  
  2. <html>
  3. <body bgcolor="#FFFCCC" text="#0000B0">
  4.         <div align="center">
  5.             <fieldset>
  6.                 <strong>Formulaire
  7.                 </strong>
  8.                 
  9.                 <!-- <button onClick="contraste()">Body en noir et blanc</button>
  10.                 <button onClick="contraste1()">Body en jaune et vert</button>
  11.                 <button onClick="contraste2()">Body par défaut</button> -->
  12.                 <form action="http://localhost/laposte/validation.php" method="post" onSubmit="return envoi()">
  13.                     <p>
  14.                         <fieldset>
  15.                             <legend align="center">Définition de la panne :
  16.                             </legend>
  17.                             <input type="text" id="panne" name="panne" />
  18.                         </fieldset>
  19.                     </p>
  20.                     <p>
  21.                         <fieldset>
  22.                             <legend align="center">
  23.                                 Solution :
  24.                             </legend>
  25.                             <input type="text" id="suggestions" name="suggestions" />
  26.                         </fieldset>
  27.                     </p>
  28.                         <input type="submit" value="Valider" />
  29.                 </form>
  30.                 <a href="http://localhost/laposte/default.php">
  31.                     Revenir à la page daccueil
  32.                 </a>
  33.             </fieldset>
  34.         </div>
  35.     </body>
  36. </html>
  37.  


Ensuite dans ta page valider.php :

Code : Tout sélectionner
  1.  
  2. <html>
  3. <body>
  4. <h1>Validation du formulaire</h1>
  5. <?php
  6. mysql_connect("localhost", "root", "");
  7. mysql_select_db("aide");
  8. // On récupère les données du formulaire
  9. $i = 0;
  10. $panne = mysql_real_escape_string($POST['panne']);
  11. $suggestions = mysql_real_escape_string($POST['suggestions']);
  12.  
  13. $panne_erreur = NULL;
  14. $suggestions_erreur = NULL;
  15. if(empty($panne))
  16. {
  17.        $panne_erreur = "Veillez remplir le champ panne";
  18.        $i++;
  19. }
  20. if(empty($suggestions))
  21. {
  22.        $suggestions_erreur = "Veillez remplir le champ suggestions";
  23.        $i++;
  24. }
  25. if($i == 0)
  26. {
  27.       mysql_query('
  28.       INSERT INTO irgp (id, titre, solution) VALUES ("", "'.$panne.'", "'.$suggestions.'")') or die(mysql_error());
  29. }
  30. else
  31. {
  32.         echo '<h1>Inscription interrompue</h1>';
  33.         echo '<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
  34.         echo '<p>'.$i.' erreur(s)</p>';
  35.         echo '<p>'.$panne_erreur.'</p>';
  36.         echo '<p>'.$suggestions_erreur.'</p>';
  37.         echo'<p>Cliquez <a href="./ta page de formulaire.php">ici</a> pour recommencer</p>';
  38. }
  39. mysql_close();
  40. ?>
  41. </body>
  42. </html>
  43.  


J'espère que c'est bon ce que j'ai mi mais ça me semble être la meilleure solution (en plus il y a plus de sécurité).
 darky
Avatar de l’utilisateur

Administrateur
 
 
Messages : 2453
Âge : 24
Inscription : Dim 3 Avr 2011 17:44
Dernière visite : Lun 10 Fév 2014 03:48
Localisation : Côté Obscur
Pays : France
OS : Windows 8
Navigateur : Chrome

Messagepar DJ Kin-C » Jeu 30 Juin 2011 17:47

c'est la page de validation, elle affiche ce que l'on a rentré auparavant ^^ après je vais essayer avec les $_post[pr] et si ça ne marche pas, je prendrai ta solution ! Merci pour les réponses, je vous tiens au jus demain !
 DJ Kin-C
Avatar de l’utilisateur

Stormtrooper
 
 
Messages : 38
Âge : 26
Inscription : Lun 18 Avr 2011 12:27
Dernière visite : Lun 12 Aoû 2013 16:30
Pays : France

Messagepar Anonyme » Jeu 30 Juin 2011 17:48

Bonjour,

Le problème étant qu'avec ton script d'origine, tu peux pas récupérer $_POST[pr] et $_POST['suggestion']. Puisque tu n'a aucun input avec un attribut name, tu ne peux donc pas les récupérer. La solution de darky semble juste. Sauf que si c'est juste pour deux champs, je trouve inutile d'incrémenter une variable i et de mettre les erreurs dans des variables pour les afficher ensuite. Je l'aurais fais en moins de ligne.

Code : Tout sélectionner
  1. <?php
  2. if(isset($_POST['panne'] && isset($_POST['suggestion']))
  3. {
  4.    $panne = trim(mysql_real_escape_string($_POST['panne']));
  5.    $suggestion = trim(mysql_real_escape_string($_POST['suggestion']));
  6.    if(!empty($panne) && !empty($suggestion) )
  7.    {
  8.       mysql_query = ('INSERT INTO irgp (titre, solution) VALUES ("'.$panne.'", "'.$suggestions.'")') or exit(mysql_error());
  9.    }
  10.    else
  11.    {
  12.       echo ' Il manque des champs ' ;
  13.    }
  14. }
  15. ?>



Pour traiter uniquement deux champs, c'est une façons plus courte même si la solution plus haut reste valable. Chacun emploi la façons qu'il désire :).
Il faut juste savoir que par n'importe quelle façons utilisée pour récupérer des infos et les envoyer en bdd ( Input bouton, input text, input radio etc ) il faut un attribut name, sinon tu ne peux pas récupérer les valeurs.
Cet utilisateur est géré par l’Administrateur du Forum. Il correspond à des anciens membres de l’ancienne base de données.
Merci de votre compréhension.
 Anonyme
Avatar de l’utilisateur

Stormtrooper
 
Messages : 51
Inscription : Jeu 30 Juin 2011 13:19
OS : Windows XP - SP3
Navigateur : Firefox

Messagepar Quentin01 » Jeu 30 Juin 2011 17:48

Pourquoi avoir besoin de input alors qu'il les a fait sur la page precedente la il fait juste une verification des informations !
Image
Ubuntu & Debian User !
 Quentin01
Avatar de l’utilisateur

Stormtrooper
 
 
Messages : 93
Âge : 18
Inscription : Dim 22 Mai 2011 17:21
Dernière visite : Lun 19 Nov 2012 17:54
Localisation : Un dieu est omniprésent !
Pays : France
OS : OS-X Snow Leopard
Navigateur : Firefox

Messagepar DJ Kin-C » Jeu 30 Juin 2011 17:49

Notice: Undefined index: panne in C:\wamp\www\laposte\validation.php on line 52

Notice: Undefined index: suggestions in C:\wamp\www\laposte\validation.php on line 53

ah voila mon petit problème, sur le net ça dit qu'on a souvent cette erreur mais ils ne disent pas comment la régler :s

Code : Tout sélectionner
  1.  
  2. <?php
  3. mysql_connect("localhost", "root");
  4. mysql_select_db("aide");
  5. // On récupère les données du formulaire
  6. $i = 0;
  7. $panne = mysql_real_escape_string($_POST['panne']);                                          => line 52
  8. $suggestions = mysql_real_escape_string($_POST['suggestions']);                         => line 53
  9.  
  10. $panne_erreur = NULL;
  11. $suggestions_erreur = NULL;
  12. if(empty($panne))
  13. {
  14.        $panne_erreur = "Veillez remplir le champ Problème";
  15.        $i++;
  16. }
  17. if(empty($suggestions))
  18. {
  19.        $suggestions_erreur = "Veillez remplir le champ solution";
  20.        $i++;
  21. }
  22. if($i == 0)
  23. {
  24.       mysql_query('
  25.       INSERT INTO irgp (id, titre, solution) VALUES ("", "'.$panne.'", "'.$suggestions.'")') or die(mysql_error());
  26. }
  27. else
  28. {
  29.         echo '<h1>Inscription interrompue</h1>';
  30.         echo '<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
  31.         echo '<p>'.$i.' erreur(s)</p>';
  32.         echo '<p>'.$panne_erreur.'</p>';
  33.         echo '<p>'.$suggestions_erreur.'</p>';
  34.         echo'<p>Cliquez <a href="./formajout.php">ici</a> pour recommencer</p>';
  35. }
  36.  
  37. ?>


Merci de me répondre ^^
 DJ Kin-C
Avatar de l’utilisateur

Stormtrooper
 
 
Messages : 38
Âge : 26
Inscription : Lun 18 Avr 2011 12:27
Dernière visite : Lun 12 Aoû 2013 16:30
Pays : France

Messagepar Anonyme » Jeu 30 Juin 2011 17:50

Question nulle : quelle version de php ? Quelle version de sql ?

Essaye en pdo non ?
Cet utilisateur est géré par l’Administrateur du Forum. Il correspond à des anciens membres de l’ancienne base de données.
Merci de votre compréhension.
 Anonyme
Avatar de l’utilisateur

Stormtrooper
 
Messages : 51
Inscription : Jeu 30 Juin 2011 13:19
OS : Windows XP - SP3
Navigateur : Firefox

Messagepar darky » Jeu 30 Juin 2011 17:50

Regarde ce que t'as marqué Jack :

Jack a écrit:Puisque tu n'as aucun input avec un attribut name, tu ne peux donc pas les récupérer.


Dans tes input de la page précédente, met :
Code : Tout sélectionner
  1.  
  2. <input type="text" name="panne" id="panne" />
  3. ----------------
  4. <input type="text" name="suggestions" id="suggestions" />
  5.  


et ça devrait marcher ;)
 darky
Avatar de l’utilisateur

Administrateur
 
 
Messages : 2453
Âge : 24
Inscription : Dim 3 Avr 2011 17:44
Dernière visite : Lun 10 Fév 2014 03:48
Localisation : Côté Obscur
Pays : France
OS : Windows 8
Navigateur : Chrome

Suivante

Retourner vers PHP

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité