Sql formulaire
Résolu
ced3E
Messages postés
101
Date d'inscription
Statut
Membre
Dernière intervention
-
coeus Messages postés 3021 Date d'inscription Statut Membre Dernière intervention -
coeus Messages postés 3021 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J' ai crée mon formulaire traitement php tout vas bien mais je ne sais pas trop quoi mettre dans le sql voila pour le moment se que ça donne :
[champ id] [type int11]
[champ prenom] [type varchar(15)] [Interclassement latin1_swedish_ci]
[champ Nomdefamille] [type varchar(15)] [Interclassement latin1_swedish_ci]
[champ email] je ne sais pas trop quoi mettre ici
[champ Votremotdepasse] je ne sais pas trop quoi mettre ici
[champ sexe] [type varchar(20)] [Interclassement latin1_swedish_ci]( c' est un champ de type selecte )
[champ jour] c' est un champ de type selecte numérique je sais pas trop quoi mettre
[champ mois] c' est un champ de type selecte numérique je sais pas trop quoi mettre [champ annee] c' est un champ de type selecte numérique je sais pas trop quoi mettre
un index est il utile ? je ne pense pas
merci d' avance de votre aide
ced
J' ai crée mon formulaire traitement php tout vas bien mais je ne sais pas trop quoi mettre dans le sql voila pour le moment se que ça donne :
[champ id] [type int11]
[champ prenom] [type varchar(15)] [Interclassement latin1_swedish_ci]
[champ Nomdefamille] [type varchar(15)] [Interclassement latin1_swedish_ci]
[champ email] je ne sais pas trop quoi mettre ici
[champ Votremotdepasse] je ne sais pas trop quoi mettre ici
[champ sexe] [type varchar(20)] [Interclassement latin1_swedish_ci]( c' est un champ de type selecte )
[champ jour] c' est un champ de type selecte numérique je sais pas trop quoi mettre
[champ mois] c' est un champ de type selecte numérique je sais pas trop quoi mettre [champ annee] c' est un champ de type selecte numérique je sais pas trop quoi mettre
un index est il utile ? je ne pense pas
merci d' avance de votre aide
ced
8 réponses
Bonjour,
je te conseillerai plutôt cela:
[champ id] [type int11 auto increment]
[champ prenom] [type varchar(255)] [Interclassement latin1_swedish_ci]
[champ Nomdefamille] [type varchar(255)] [Interclassement latin1_swedish_ci]
[champ email][type varchar(255)]
[champ Votremotdepasse][type varchar(255)]
[champ sexe] [type tinyint(1)] [Interclassement latin1_swedish_ci]
[champ date][type date] [Interclassement latin1_swedish_ci]
En fait, j'ai mis les champs texte a 255 car c'est la norme (le prénom peut faire plus de 15 caractères en tout cas :-) )
Pour l'email et le mot de passe, pareil c'est 255 caractères.
En enregistrant le mot de passe, tu peux le hasher en PHP via la fonction sha1 ou md5 pour qu'il soit méconnaissable en BDD.
Enfin, pour la naissance, à toi (en PHP) de concaténer le jour, mois et année puis le caster en champs de type date pour qu'il rentre en BDD !
Pour le sexe, j'ai mis un booleen (0 ou 1).
0 correspondra à un homme et 1 une femme (ou inversement).
Rien de plus compliqué, c'est juste qu'il faut le savoir et que ça se devine pas forcément :-)
A+
Gaerebut
Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1: ne jamais dire tout ce que l'on sait...
-Règle 2: ...
je te conseillerai plutôt cela:
[champ id] [type int11 auto increment]
[champ prenom] [type varchar(255)] [Interclassement latin1_swedish_ci]
[champ Nomdefamille] [type varchar(255)] [Interclassement latin1_swedish_ci]
[champ email][type varchar(255)]
[champ Votremotdepasse][type varchar(255)]
[champ sexe] [type tinyint(1)] [Interclassement latin1_swedish_ci]
[champ date][type date] [Interclassement latin1_swedish_ci]
En fait, j'ai mis les champs texte a 255 car c'est la norme (le prénom peut faire plus de 15 caractères en tout cas :-) )
Pour l'email et le mot de passe, pareil c'est 255 caractères.
En enregistrant le mot de passe, tu peux le hasher en PHP via la fonction sha1 ou md5 pour qu'il soit méconnaissable en BDD.
Enfin, pour la naissance, à toi (en PHP) de concaténer le jour, mois et année puis le caster en champs de type date pour qu'il rentre en BDD !
Pour le sexe, j'ai mis un booleen (0 ou 1).
0 correspondra à un homme et 1 une femme (ou inversement).
Rien de plus compliqué, c'est juste qu'il faut le savoir et que ça se devine pas forcément :-)
A+
Gaerebut
Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1: ne jamais dire tout ce que l'on sait...
-Règle 2: ...
merci j' ai un petit problème pour l auto increment message d' erreur :
requête SQL:
ALTER TABLE 'membres' CHANGE 'id' 'id' INT NOT NULL AUTO_INCREMENT
MySQL a répondu:
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
pour la date de naissance j' utilise 3 selectes tu le stocke en une fois mais comment mettre l' id en commun ?
Pour se qui est du mot de passe l' utilisation de md5 ne change pas le type ?
J' aimerai stocké l' ip j' utilise quel type numérique ?
requête SQL:
ALTER TABLE 'membres' CHANGE 'id' 'id' INT NOT NULL AUTO_INCREMENT
MySQL a répondu:
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
pour la date de naissance j' utilise 3 selectes tu le stocke en une fois mais comment mettre l' id en commun ?
Pour se qui est du mot de passe l' utilisation de md5 ne change pas le type ?
J' aimerai stocké l' ip j' utilise quel type numérique ?
Re,
pour l'auto increment, il doit déjà y avoir une clé primaire dans ta table.
Pour la date de naissance, il suffit de concaténer les 3 champs en 1.
Cependant, il faut stocker les valeurs relatives aux champs dans les bonnes variables correspondantes ($jour, $mois et $année).
Pour le mots de passe en md5, tu dois utiliser une chaine.
Enfin, pour stocker l'ip, tu dois aussi utiliser une chaine car elle contient des points.
Bon courage :-)
A+
Gaerebut
pour l'auto increment, il doit déjà y avoir une clé primaire dans ta table.
Pour la date de naissance, il suffit de concaténer les 3 champs en 1.
$date = $jour . '/' . $mois . '/' . $annee;
Cependant, il faut stocker les valeurs relatives aux champs dans les bonnes variables correspondantes ($jour, $mois et $année).
Pour le mots de passe en md5, tu dois utiliser une chaine.
Enfin, pour stocker l'ip, tu dois aussi utiliser une chaine car elle contient des points.
Bon courage :-)
A+
Gaerebut
effectivement j' aver un int en trop provisoire comme je ne savais pas quoi mettre, aprés modification j' ai toujours le message d' erreur grrr :(
Donc pour l' ip et le mot de passe une chaine type numérique MEDIUMINT ?
Donc pour l' ip et le mot de passe une chaine type numérique MEDIUMINT ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour le mot de passe, une chaîne de caractère VARCHAR longue de 32 caractères, ni plus ni moins. Un mot encrypté en md5 va toujours comporter 32 caractères.
Pour ta clé, as-tu bien supprimé la clé existante, puis déclaré la nouvelle ? Quelles formules as-tu employées exactement ? Quels ont été les feedbacks ?
Pour ta clé, as-tu bien supprimé la clé existante, puis déclaré la nouvelle ? Quelles formules as-tu employées exactement ? Quels ont été les feedbacks ?
Champ Type Interclassement Attributs Null Défaut Extra Action
id int(11) Non Aucun
Prenom varchar(255) latin1_swedish_ci Non Aucun
Nomdefamille varchar(255) latin1_swedish_ci Non Aucun
email varchar(255) latin1_swedish_ci Non Aucun
Votremotdepasse varchar(32) latin1_swedish_ci Non Aucun
sexe tinyint(1) Non Aucun
Datedenaissance date Non Aucun
j' ai bien supprimé le 2 eme int, pour crée le AUTO_INCREMENT je modifie la ligne id je coche AUTO_INCREMENT et je clique sur le bouton sauvegarder et la erreur je comprend pas.
L' utilisation de md5() implique de mettre en place un générateur de mot de passe, pour la fonction mot de passe oublier ça me parait compliquer, car le mot de passe crée ne sera plus sous md5 non ?
id int(11) Non Aucun
Prenom varchar(255) latin1_swedish_ci Non Aucun
Nomdefamille varchar(255) latin1_swedish_ci Non Aucun
email varchar(255) latin1_swedish_ci Non Aucun
Votremotdepasse varchar(32) latin1_swedish_ci Non Aucun
sexe tinyint(1) Non Aucun
Datedenaissance date Non Aucun
j' ai bien supprimé le 2 eme int, pour crée le AUTO_INCREMENT je modifie la ligne id je coche AUTO_INCREMENT et je clique sur le bouton sauvegarder et la erreur je comprend pas.
L' utilisation de md5() implique de mettre en place un générateur de mot de passe, pour la fonction mot de passe oublier ça me parait compliquer, car le mot de passe crée ne sera plus sous md5 non ?
Ah si tu veux permettre à tes utilisateurs de retrouver leur mot de passe, oublie le md5. Le principe de l'encryptage c'est évidemment qu'il n'existe pas de moyen de le décrypter ! :-P
Alternative cependant : permettre aux utilisateurs de faire un reset de leur mot de passe, au lieu de le "retrouver". C'est très simple à faire aussi.
Pour ton problème de clé, as-tu fait :
avant de faire ton set de auto increment ? Sinon, pourrais-tu faire un export de ta table, de manière à ce que je puisse la recréer dans ma BDD et que j'essaie de mon côté ? Parce que juste en regardant ton code comme ça je ne vois pas ce qui cloche... :-S
Alternative cependant : permettre aux utilisateurs de faire un reset de leur mot de passe, au lieu de le "retrouver". C'est très simple à faire aussi.
Pour ton problème de clé, as-tu fait :
ALTER TABLE 'ma_table' ADD PRIMARY KEY('id')
avant de faire ton set de auto increment ? Sinon, pourrais-tu faire un export de ta table, de manière à ce que je puisse la recréer dans ma BDD et que j'essaie de mon côté ? Parce que juste en regardant ton code comme ça je ne vois pas ce qui cloche... :-S