Insertion de donnees dans mySQL (php)
Résolu/Fermé
P@mela
-
27 juil. 2009 à 17:29
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 - 28 juil. 2009 à 19:32
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 - 28 juil. 2009 à 19:32
A voir également:
- Insertion de donnees dans mySQL (php)
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
- Insertion sommaire word - Guide
- Easy php - Télécharger - Divers Web & Internet
- Reinstaller windows sans perte de données - Guide
7 réponses
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
27 juil. 2009 à 19:07
27 juil. 2009 à 19:07
INSERT INTO participantsformations(nom,prenom,
Ta table s'appelle bien participantsformations?
met un espace entre participantsformations et la parenthèse.
Je ne vois pas à quoi sert odbc_do et odbc_close. Tu m'expliques?
Pour terminer, que contient $cnx ? elle n'est déclarée nul part.
ps : 2 petits trucs dans ton code, cela ne sert a rien de faire un isset juste avent un !empty.
empty regarde si la variable est vide. !empty fait l'inverse.
isset regarde si la variable existe qu'elle soit vide ou non.
donc si tu fais juste un !empty, cela fonctionnera car si la variable n'existe pas, c'est comme si elle était vide.
Ensuite, tu ne vérifie pas ce que les visiteurs entrent dans les champs de ton formulaire. C'est très dangereux car premièrement, le visiteur peut mettre n'importe quoi.
par exemple, pour le téléphone, il pourrait mettre "bouh"
et dexièmement, c'est très facile de pirater ton site car tu ne le protège pas.
fais attention ;)
Ta table s'appelle bien participantsformations?
met un espace entre participantsformations et la parenthèse.
Je ne vois pas à quoi sert odbc_do et odbc_close. Tu m'expliques?
Pour terminer, que contient $cnx ? elle n'est déclarée nul part.
ps : 2 petits trucs dans ton code, cela ne sert a rien de faire un isset juste avent un !empty.
empty regarde si la variable est vide. !empty fait l'inverse.
isset regarde si la variable existe qu'elle soit vide ou non.
donc si tu fais juste un !empty, cela fonctionnera car si la variable n'existe pas, c'est comme si elle était vide.
Ensuite, tu ne vérifie pas ce que les visiteurs entrent dans les champs de ton formulaire. C'est très dangereux car premièrement, le visiteur peut mettre n'importe quoi.
par exemple, pour le téléphone, il pourrait mettre "bouh"
et dexièmement, c'est très facile de pirater ton site car tu ne le protège pas.
fais attention ;)
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
28 juil. 2009 à 11:18
28 juil. 2009 à 11:18
tu met 2 fois mysql_query. une seule fois c'est assez.
rajoute ceci après ta requete :
çela affichera ton erreur détaillé s'il y a une erreur sql.
j'ai relu ton code et ceci, ne sert a rien, tu peux l'enlever ;)
S'il n'y a pas d'erreur sql, je ne vois pas ce qui cloche :(
montre moi alors la structure de ta table.
$result = mysql_query("INSERT INTO participantsformations (nom,prenom,tel,telecopieur,courriel,organisme,fonction,ordre) VALUES ('$nom','$prenom','$tel','$telecopieur','$courriel','$org','$fonction','$ordre') ");
rajoute ceci après ta requete :
if (!$result) { echo 'Requete invalide : ' . mysql_error; }
çela affichera ton erreur détaillé s'il y a une erreur sql.
j'ai relu ton code et ceci, ne sert a rien, tu peux l'enlever ;)
else { }
S'il n'y a pas d'erreur sql, je ne vois pas ce qui cloche :(
montre moi alors la structure de ta table.
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
28 juil. 2009 à 16:14
28 juil. 2009 à 16:14
Ta clé primaire est importante, c'est ce qui te permet d'identifier chaque ligne.
Tu dois donc effectivement mettre un auto incrémentation.
C'est à dire que sql va automatiquement incrémenter le nombre précédent de ta base et la mettre comme nouvelle valeur.
En clair, tu aura une suite de nombre commencent par 1.
Puisque sql gère cette colone, tu ne dois pas la mettre dans ton insert.
Tu ne dois pas mettre de valeur par défaut. juste dire que cette colonne contient uniquement des chiffres donc choisit par exemple INT et comme taille, met 10 (sincèrement, je ne sais pas ce que sa change si tu met 5 ou 100 :p )
Pour la date, tu as différent format.
le timestamp (temps en seconde depui le 1/1/1970)
DATE (date au format YYYY-dd-mm)
DATETIME (date et heure au format YYYY-dd-mm HH:ii:ss)
TIME c'est juste l'heure.
Si tu veux utiliser les dates "concrètes" (pas le temps unix (timestamp)), tu met dans l'insert NOW() au lieu de '$date' (le NOW() ne doit pas être entre guillemets)
SQL ajoutera alors la date et l'heure à la quelle la page à été chargé soit la date actuel.
et en bonus, lorsque tu fais un select d'une date, écrit ce qui suit au lieu de simplement ta date :
DATE_FORMAT(nom_de_la_colone_date, '%d/%m/%Y à %H:%i') as date
lorsque tu affichera date, tu aura alors une date au format dd/mm/YYYY à HH:ii. (Tu peux bien sur adapter ton code.
voilà, je crois que après ça, tu ne devrais plus avoir d'erreur :)
Tu dois donc effectivement mettre un auto incrémentation.
C'est à dire que sql va automatiquement incrémenter le nombre précédent de ta base et la mettre comme nouvelle valeur.
En clair, tu aura une suite de nombre commencent par 1.
Puisque sql gère cette colone, tu ne dois pas la mettre dans ton insert.
Tu ne dois pas mettre de valeur par défaut. juste dire que cette colonne contient uniquement des chiffres donc choisit par exemple INT et comme taille, met 10 (sincèrement, je ne sais pas ce que sa change si tu met 5 ou 100 :p )
Pour la date, tu as différent format.
le timestamp (temps en seconde depui le 1/1/1970)
DATE (date au format YYYY-dd-mm)
DATETIME (date et heure au format YYYY-dd-mm HH:ii:ss)
TIME c'est juste l'heure.
Si tu veux utiliser les dates "concrètes" (pas le temps unix (timestamp)), tu met dans l'insert NOW() au lieu de '$date' (le NOW() ne doit pas être entre guillemets)
SQL ajoutera alors la date et l'heure à la quelle la page à été chargé soit la date actuel.
et en bonus, lorsque tu fais un select d'une date, écrit ce qui suit au lieu de simplement ta date :
DATE_FORMAT(nom_de_la_colone_date, '%d/%m/%Y à %H:%i') as date
lorsque tu affichera date, tu aura alors une date au format dd/mm/YYYY à HH:ii. (Tu peux bien sur adapter ton code.
voilà, je crois que après ça, tu ne devrais plus avoir d'erreur :)
Salut! :)
1) oui le nom de mon tableau cest bien participantsformations. Jai rajouté lespace entre le nom et la parenthese!
2)odbc_do et odbc_close sont mis en commentaires parce que avant jutilisais des fonctions odbc_connect etc.. a la place de mysql_connect etc..
mais ils sont inutiles et je vais les enlever :)
ah et cnx cetait une ancienne variable de connection kan jutilisais la methode avec odbc
3)merci pour la mise en garde p/r a la protection de mon application! jy avait pas penser mais en +, il y a des gens qui peuvent mettre des bouts de code dans les champs et effacer les donnees de ma bd! :S eskil y a une commande ki peut prevenir ca?
4)mon probleme est pas enko resolu puiske mes donnees ne rentre pas dans ma table mySQL.. :(
Ca maffiche (dans phpmyadmin) kil ny a eu aucun enregistrement et je ne peu pas afficher le contenu du tableau (je peu seulement voir sa structure..)
Eske tu saurais cest koi le probleme? eske cest un probleme de syntaxe ou bien cest + ke ca?
p.s jai modifier une partie et elle est rendu comme ca:
$query=mysql_query("INSERT INTO participantsformations (nom,prenom,tel,telecopieur,courriel,organisme,fonction,ordre) VALUES ('$nom','$prenom','$tel','$telecopieur','$courriel','$org','$fonction','$ordre')");
$result=mysql_query($query);
A la place de :
mysql_query("INSERT INTO participantsformations (nom,prenom,tel,telecopieur,courriel,organisme,fonction,ordre) VALUES ('$nom','$prenom','$tel','$telecopieur','$courriel','$org','$fonction','$ordre')");
Merci :)
1) oui le nom de mon tableau cest bien participantsformations. Jai rajouté lespace entre le nom et la parenthese!
2)odbc_do et odbc_close sont mis en commentaires parce que avant jutilisais des fonctions odbc_connect etc.. a la place de mysql_connect etc..
mais ils sont inutiles et je vais les enlever :)
ah et cnx cetait une ancienne variable de connection kan jutilisais la methode avec odbc
3)merci pour la mise en garde p/r a la protection de mon application! jy avait pas penser mais en +, il y a des gens qui peuvent mettre des bouts de code dans les champs et effacer les donnees de ma bd! :S eskil y a une commande ki peut prevenir ca?
4)mon probleme est pas enko resolu puiske mes donnees ne rentre pas dans ma table mySQL.. :(
Ca maffiche (dans phpmyadmin) kil ny a eu aucun enregistrement et je ne peu pas afficher le contenu du tableau (je peu seulement voir sa structure..)
Eske tu saurais cest koi le probleme? eske cest un probleme de syntaxe ou bien cest + ke ca?
p.s jai modifier une partie et elle est rendu comme ca:
$query=mysql_query("INSERT INTO participantsformations (nom,prenom,tel,telecopieur,courriel,organisme,fonction,ordre) VALUES ('$nom','$prenom','$tel','$telecopieur','$courriel','$org','$fonction','$ordre')");
$result=mysql_query($query);
A la place de :
mysql_query("INSERT INTO participantsformations (nom,prenom,tel,telecopieur,courriel,organisme,fonction,ordre) VALUES ('$nom','$prenom','$tel','$telecopieur','$courriel','$org','$fonction','$ordre')");
Merci :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut! :)
Bon alors finalement jai modifier ma ligne de requete iinsert pour:
$query="INSERT INTO participantsformations (nom,prenom,tel,telecopieur,courriel,organisme,fonction,ordre)VALUES('$nom','$prenom','$tel','$telecopieur','$courriel','$org','$fonction','$ordre')"; // creation de la requete sql
$result=mysql_query($query) or die( mysql_error() );
donc comme ca, je nai qu'un seul mysql_query!
Aussi, j'ai rajouter ce que tu ma dit (pour trouver lerreur) er jai effectivement eu une erreur. Au debut, ca ma mis: Field 'No' doesn't have a default value
Or, le champ No est ma clé primaire mais je ne linclut pas dans mon code parce que je sais pas comment l'écrire..je veux dire, est-ce qu'il y a une manière spéciale pour écrire le code d'une variable pour que ça l'identifie comme étant une clé primaire?
Bref, pour régler le problème, jai cocher Auto-Increment pour le champ No (dans mySQL)..je sais pas si cest la bonne chose ou bien il fallait mettre une valeur par defaut..
Et mtn ke jai regler ce probleme, il y a ce message derreur loll:
Field 'DateInscription' doesn't have a default value
Mais pour la date, je ne sais pas lequel mettre, jai essayer de sélectionner current_timestamp pour la valeur de defaut mais ca ma dit que je pouvais pas faire ca...
Donc voila!
Bon alors finalement jai modifier ma ligne de requete iinsert pour:
$query="INSERT INTO participantsformations (nom,prenom,tel,telecopieur,courriel,organisme,fonction,ordre)VALUES('$nom','$prenom','$tel','$telecopieur','$courriel','$org','$fonction','$ordre')"; // creation de la requete sql
$result=mysql_query($query) or die( mysql_error() );
donc comme ca, je nai qu'un seul mysql_query!
Aussi, j'ai rajouter ce que tu ma dit (pour trouver lerreur) er jai effectivement eu une erreur. Au debut, ca ma mis: Field 'No' doesn't have a default value
Or, le champ No est ma clé primaire mais je ne linclut pas dans mon code parce que je sais pas comment l'écrire..je veux dire, est-ce qu'il y a une manière spéciale pour écrire le code d'une variable pour que ça l'identifie comme étant une clé primaire?
Bref, pour régler le problème, jai cocher Auto-Increment pour le champ No (dans mySQL)..je sais pas si cest la bonne chose ou bien il fallait mettre une valeur par defaut..
Et mtn ke jai regler ce probleme, il y a ce message derreur loll:
Field 'DateInscription' doesn't have a default value
Mais pour la date, je ne sais pas lequel mettre, jai essayer de sélectionner current_timestamp pour la valeur de defaut mais ca ma dit que je pouvais pas faire ca...
Donc voila!
Ouiii merci bcp bcp! :)
Ca marche très bien! mes données sont mtn stockées dans ma table mySQL et la date et l'heure s'affichent aussi!!! :D
Merci de ton aide! :)
Pamela
Ca marche très bien! mes données sont mtn stockées dans ma table mySQL et la date et l'heure s'affichent aussi!!! :D
Merci de ton aide! :)
Pamela
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
28 juil. 2009 à 19:32
28 juil. 2009 à 19:32
Pas de soucis :)
Tu as mon pseudo si tu veux me contacter :)
Tu as mon pseudo si tu veux me contacter :)