problème enregistrement dans une base de donné

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème enregistrement dans une base de donné

Re: problème enregistrement dans une base de donné

par Patriboom » 31 janv. 2016, 18:15

Et puis ... personne ne te l'a écrit, mais ton code utilise les commande mysql il est temps de passer à mysqli , d'autres modif seront à faire. Si t'as des problèmes dans cette mise à jour, il te faudra ouvrir un autre sujet SI tes recherches n'ont pas fourni la réponse. N'oublie pas l'excellent manuel PHP http://php.net/manual/fr/

Re: problème enregistrement dans une base de donné

par Sam67 » 31 janv. 2016, 16:48

désoler double-post,
mais je fais un petit up, pour savoir si quelqu'un pourrais m'expliquer plus précisément ou se trouve l'erreur et où là corriger merci :)

Re: problème enregistrement dans une base de donné

par Sam67 » 29 janv. 2016, 21:04

Oulah, ça en fait beaucoup et pour la boucle je me suis inspiré d'un formulaire sur internet et il le mettait :?
Et j'ai bien mis mon id en auto incrément. Sinon pour le date_message j'ai pas bien compris :c

Désoler pour toute ces questions

Re: problème enregistrement dans une base de donné

par Saian » 29 janv. 2016, 20:17

Comme je te l'ai déjà dis dans mon premier message généralement la colonne d'id est définie en auto increment et n'a donc pas à être incluse dans la requête d'insertion. Comment est définie la colonne id sur ta table ? si elle n'est pas en auto increment mets la en auto increment (sinon on est pas sorti de l'auberge ^^).

Pour ce qui est de $date_message, tu veux mettre quoi dedans ? la date du moment où le message est envoyé j'imagine non ? ce n'est donc pas un champ du formulaire. La variable $date_message ne va pas se renseigner toute seule, c'est à toi de le faire. Renseignes toi sur la fonction php date et les formats date mysql.

Il y a d'ailleurs un problème dans ton code si le SELECT du début retourne une ou plusieurs lignes alors l'insert se fera avec le $date_message de la dernière ligne car en sortie du while $date_message aura la valeur de la dernière ligne...
De plus tu fais un select et une boucle sur les résultats mais tu ne fais rien du tout avec. Quel est l'intérêt ? bref va falloir potasser un peu.

Re: problème enregistrement dans une base de donné

par Sam67 » 29 janv. 2016, 19:55

Merci :D mais maintenant j'ai de nouveau le bug de l'id et date_message qui sont pas défini, pouvez-vous m'aider ?

Re: problème enregistrement dans une base de donné

par Saian » 29 janv. 2016, 19:50

J'imagine qu'il s'agit de cette ligne :
$date_message=$rows[7];
Le message dit que l'index 7 (offset 7) n'existe pas (undefined). $rows[7] n'est donc pas défini.

Je vois que tu as commencé par $rows[1] pour l'id.
Donc à moins que ce ne soit pas la première colonne de la table, je penses que tu as du rater l'épisode expliquant que le premier index du tableau c'est 0. :P

http://php.net/manual/fr/function.mysql-fetch-row.php
mysql_fetch_row() va rechercher une ligne dans le résultat associé à l'identifiant de résultat spécifié. La ligne est retournée sous la forme d'un tableau. Chaque colonne est enregistrée sous la forme d'un tableau commençant à la position 0.
J'imagine que si tu commences par 0 en finissant par 6 tu ne devrais plus avoir d'erreur.

Re: problème enregistrement dans une base de donné

par Sam67 » 29 janv. 2016, 19:38

Re, désoler pour le double poste.
Mais j'ai trouvé la solution mais maintenant j'ai ce message d'erreur :
Image

Pouvez-vous m'aider svp ?

Re: problème enregistrement dans une base de donné

par Sam67 » 29 janv. 2016, 19:31

Bonsoir,
pouvez-vous me dire ou je dois rajouter la valeur id, si c'est dans la cible.php ou le formulaire en html.
Merci de votre aide et comme dit je débute :p

Re: problème enregistrement dans une base de donné

par @rthur » 28 janv. 2016, 00:21

Merci pour votre aide, pourrez-vous me donnez mon code corriger si vous avez le temps :)
Bonjour Sam67,
Le but d'un forum d'entraide comme PHPfrance, n'est pas de fournir la solution sur un plateau mais de t'aider à ce que tu puisses le faire toi même pour que tu soit capable ensuite de le refaire.
Essaye donc de le faire toi-même et dis nous si ça marche ou pas :)

Re: problème enregistrement dans une base de donné

par Sam67 » 27 janv. 2016, 20:52

Merci pour votre aide, pourrez-vous me donnez mon code corriger si vous avez le temps :)

Re: problème enregistrement dans une base de donné

par J-Nicolas » 27 janv. 2016, 20:38

Il manque la valeur "id" qu'attend la DB. Elle n'est pas dans le formulaire et elle ne va pas se créer toute seule.

Re: problème enregistrement dans une base de donné

par Sam67 » 27 janv. 2016, 20:29

Bonjour voilà le code du formulaire:

Code : Tout sélectionner

<form id="commande" method="post" action="cible.php"> <img id="icon-caddie" src="Images/caddie.png" height="90px" width="110px"></img> <table><tbody> <tr><td> <input style="width: 247px; height: 40px" class="input" placeholder="Nom / pseudo *" type="text" name="pseudo" /> <br/></td><td> <input style="width: 247px; height: 40px" class="input" placeholder="Email *" type="email" name="email"/><br/> </td></tr> </tbody></table> <table><tbody> <tr><td> <input style="width: 247px; height: 40px" class="input" placeholder="Pseudo Skype (optionnel)" type="text" name="skype"/><br/></td><td> <input style="width: 247px; height: 40px" class="input" placeholder="Le thème de votre site *" type="text" name="theme"/><br/> </td></tr> </tbody></table> <textarea style="width: 700px; height: 150px" rows="8" id="comments" class="input" name="comments" type="text" placeholder="Veuillez nous décrire votre commande et à fournir un maximum de détails comme les couleurs voulues, etc... *" ></textarea> <br> <input class="bouton" type="submit" name="valider" value="Commander"/> </form>

Re: problème enregistrement dans une base de donné

par or 1 » 27 janv. 2016, 20:25

il faudrait le code du formulaire en méthode post qui pointe vers cible.php

Re: problème enregistrement dans une base de donné

par Saian » 27 janv. 2016, 20:24

Bonsoir, le message est très clair les variables $id et $date_message ne sont pas définies à la ligne 58 qui est je pense la requête d'insertion.
Je suppose que ces deux variables ne sont pas présentes dans $_POST.

EDIT :
D'ailleurs, généralement la colonne d'id est définie en auto increment et n'a donc pas à être incluse dans la requête d'insertion.

problème enregistrement dans une base de donné

par Sam67 » 27 janv. 2016, 20:09

Bonjour,
J'ai un problème survenu lors d'un enregistrement d'un formulaire dans la bdd.

voici l'erreur:

Image

Et voici le code :

Code : Tout sélectionner

<?php mysql_connect ('*****','*****','*****') or die ('erreur de connexion'); mysql_select_db('phpmembre') or dir ('erreur de trouver la base'); $query='select * from conx'; $result=mysql_query ($query); while($rows=mysql_fetch_row($result)) { $id=$rows[1]; $pseudo=$rows[2]; $skype=$rows[3]; $email=$rows[4]; $theme=$rows[5]; $comments=$rows[6]; $date_message=$rows[7]; } $msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>"; $msg_ok = "Votre demande a bien été prise en compte."; $message = $msg_erreur; // vérification des champs if (empty($_POST['pseudo'])) $message .= "Votre pseudo<br/>"; if (empty($_POST['email'])) $message .= "Votre email<br/>"; if (empty($_POST['theme'])) $message .= "Votre theme<br/>"; if (empty($_POST['comments'])) $message .= "Votre message<br/>"; // si un champ est vide, on affiche le message d'erreur if (strlen($message) > strlen($msg_erreur)) { echo $message; } else { foreach($_POST as $index => $valeur) { $$index = mysql_real_escape_string(trim($valeur)); } $sql = "INSERT INTO conx VALUES ('".$id."', '".$pseudo."', '".$skype."', '".$email."', '".$theme."', '".$comments."', '".$date_message."')"; $res = mysql_query($sql); if ($res) { echo $msg_ok; } else { echo mysql_error(); } } ?>
Merci de votre aide :)