Sql formulaire

Résolu/Fermé
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 - 4 janv. 2011 à 09:47
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 - 4 janv. 2011 à 22:32
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

8 réponses

gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
Modifié par gaerebut le 4/01/2011 à 11:47
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: ...
0
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 2
Modifié par ced3E le 4/01/2011 à 12:19
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 ?
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
4 janv. 2011 à 16:10
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.

$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
0
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 2
4 janv. 2011 à 20:02
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
4 janv. 2011 à 21:50
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 ?
0
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 2
Modifié par ced3E le 4/01/2011 à 22:14
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 ?
0
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
4 janv. 2011 à 22:21
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 :
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
0
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 2
4 janv. 2011 à 22:31
Merci j' aver pas vue cette fonction ça a marcher nikel, je me trouve un peu bête sur le coup ^^

C' est en forgeant qu' on devient forgeron ^^

Merci a vous de votre aide qui ma permis de comprendre les types :)
0
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
4 janv. 2011 à 22:32
Yeah !!!! :-)
0