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
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
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
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: ...
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: ...
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
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 ?
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 ?
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
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.
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
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
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 ?
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
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
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 ?
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 ?
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
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 ?
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 ?
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
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 :
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
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
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 :)
C' est en forgeant qu' on devient forgeron ^^
Merci a vous de votre aide qui ma permis de comprendre les types :)
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
4 janv. 2011 à 22:32
Yeah !!!! :-)