[php] [sql] Aucune insertion dans la table

Résolu/Fermé
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 - 5 janv. 2011 à 06:21
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 6 janv. 2011 à 11:00
Bonjour,



Je viens de crée mon formulaire html traitement php ma base de donné et ma table sql mais j' ai aucune donné qui se stocke dans celle ci.

Je ne comprend pas trop ou j' ai fais une erreur aprés avoir chercher je ne trouve rien :(


Merci d' avance de votre aide par ce que la je suis un peu perdu.

code html :
<form method="post" action="Formulaire.php">
<div id="label">
<p align="right"><label for="Prenom">Prénom</label> : <input type="text" name="Prenom"  id="Prenom" style="height:15px; width:110px; font-size:15px;"  /></p>
<p align="right"><label for="Nomdefamille">Nom de famille</label> : <input type="text" name="Nomdefamille"  id="Nomdefamille"style="height:15px; width:110px; font-size:15px;"  /></p>
<p align="right"><label for="email">Votre email</label> : <input type="text" name="email"  id="email" style="height:15px; width:110px; font-size:15px;" /></p>
<p align="right"><label for="email2">Répétez l'email</label> : <input type="text" name="email2" id="email2" style="height:15px; width:110px; font-size:15px;"/></p>
<p align="right"><label for="Votremotdepasse">Mot de passe</label> : <input type="password" name="Votremotdepasse" id="Votremotdepasse" style="height:15px; width:110px; font-size:15px;" /></p>
</div>
<div id="labelsexe">
<p align="center"> <label for="sexe">Vous êtes :</label>
<select name="sexe"id="sexe">
<option selected 
value="1">Un homme</option> 
<option value="2">Une femme</option>
</p>
</select>
<br>
<input type="checkbox" name="checkbox" value="1" />j'ai lu les <strong><a href="../../cgu.php">conditions d'utilisation</a></strong> 
</div>
<div id="labelage">
<p align="center"> <label for="Datedenaissance">Date de naissance :</label><br> 
<select name="jour" id="jour">
<option selected value="01">01</option>
<option value="02">02</option> 
<option value="03">03</option> 
<option value="04">04</option> 
<option value="05">05</option> 
<option value="06">06</option> 
<option value="07">07</option> 
<option value="08">08</option> 
<option value="09">09</option> 
<option value="10">10</option> 
<option value="11">11</option> 
<option value="12">12</option> 
<option value="13">13</option> 
<option value="14">14</option> 
<option value="15">15</option> 
<option value="16">16</option> 
<option value="17">17</option> 
<option value="18">18</option> 
<option value="19">19</option> 
<option value="20">20</option> 
<option value="21">21</option> 
<option value="22">22</option> 
<option value="23">23</option> 
<option value="24">24</option> 
<option value="25">25</option> 
<option value="26">26</option> 
<option value="27">27</option> 
<option value="28">28</option> 
<option value="29">29</option> 
<option value="30">30</option> 
<option value="31">31</option>
</select>

<select name="mois" id="mois" >
<option selected value="01">01</option> 
<option value="02">02</option> 
<option value="03">03</option> 
<option value="04">04</option> 
<option value="05">05</option> 
<option value="06">06</option> 
<option value="07">07</option> 
<option value="08">08</option> 
<option value="09">09</option> 
<option value="10">10</option> 
<option value="11">11</option> 
<option value="12">12</option>
</select>

<select name="annee"id="annee" >
<option selected value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option> 
<option value="2005">2005</option> 
<option value="2004">2004</option> 
<option value="2003">2003</option> 
<option value="2002">2002</option> 
<option value="2001">2001</option> 
<option value="2000">2000</option>
<option value="1999">1999</option> 
<option value="1998">1998</option> 
<option value="1997">1997</option> 
<option value="1996">1996</option> 
<option value="1995">1995</option> 
<option value="1994">1994</option> 
<option value="1993">1993</option> 
<option value="1992">1992</option> 
<option value="1991">1991</option> 
<option value="1990">1990</option> 
<option value="1989">1989</option> 
<option value="1988">1988</option> 
<option value="1987">1987</option> 
<option value="1986">1986</option> 
<option value="1985">1985</option> 
<option value="1984">1984</option> 
<option value="1983">1983</option> 
<option value="1982">1982</option> 
<option value="1981">1981</option> 
<option value="1980">1980</option> 
<option value="1979">1979</option> 
<option value="1978">1978</option> 
<option value="1977">1977</option> 
<option value="1976">1976</option> 
<option value="1975">1975</option> 
<option value="1974">1974</option> 
<option value="1973">1973</option> 
<option value="1972">1972</option> 
<option value="1971">1971</option> 
<option value="1970">1970</option> 
<option value="1969">1969</option> 
<option value="1968">1968</option> 
<option value="1967">1967</option> 
<option value="1966">1966</option> 
<option value="1965">1965</option> 
<option value="1964">1964</option> 
<option value="1963">1963</option> 
<option value="1962">1962</option> 
<option value="1961">1961</option> 
<option value="1960">1960</option> 
<option value="1959">1959</option> 
<option value="1958">1958</option> 
<option value="1957">1957</option> 
<option value="1956">1956</option> 
<option value="1955">1955</option> 
<option value="1954">1954</option> 
<option value="1953">1953</option> 
<option value="1952">1952</option> 
<option value="1951">1951</option> 
<option value="1950">1950</option> 
<option value="1949">1949</option> 
<option value="1948">1948</option> 
<option value="1947">1947</option> 
<option value="1946">1946</option> 
<option value="1945">1945</option> 
<option value="1944">1944</option> 
<option value="1943">1943</option> 
<option value="1942">1942</option> 
<option value="1941">1941</option> 
<option value="1940">1940</option> 
<option value="1939">1939</option> 
<option value="1938">1938</option> 
<option value="1937">1937</option> 
<option value="1936">1936</option> 
<option value="1935">1935</option> 
<option value="1934">1934</option> 
<option value="1933">1933</option> 
<option value="1932">1932</option> 
<option value="1931">1931</option> 
<option value="1930">1930</option> 
<option value="1929">1929</option> 
<option value="1928">1928</option> 
<option value="1927">1927</option> 
<option value="1926">1926</option> 
<option value="1925">1925</option> 
<option value="1924">1924</option> 
<option value="1923">1923</option> 
<option value="1922">1922</option> 
<option value="1921">1921</option> 
<option value="1920">1920</option></select> </p>
</div>
<div id="boutonValider">
<INPUT  type=image Value=submit border=0 src="Apel.gif"  align="middle" ><-Valider  </div>
</from>


code php :

<?php
mysql_connect("localhost","root", "")  OR die('Erreur de connexion à la base'); 
mysql_select_db("myphone"); 

$Prenom = isset($_POST['Prenom']) ? trim(mysql_real_escape_string($_POST['Prenom'])) : ''; 
$Nomdefamille = isset($_POST['Nomdefamille']) ? trim(mysql_real_escape_string($_POST['Nomdefamille'])) : ''; 
$Votremotdepasse = isset($_POST['Votremotdepasse']) ? trim(mysql_real_escape_string($_POST['Votremotdepasse'])) : ''; 
$email = isset($_POST['email']) ? (mysql_real_escape_string($_POST['email'])) : ''; 
$email2 = isset($_POST['email2']) ? (mysql_real_escape_string($_POST['email2'])) : ''; 
$sexe = isset($_POST['sexe']) ? (mysql_real_escape_string($_POST['sexe'])) : ''; 
$jour = isset($_POST['jour']) ? (mysql_real_escape_string($_POST['jour'])) : ''; 
$mois = isset($_POST['mois']) ? trim(mysql_real_escape_string($_POST['mois'])) : ''; 
$annee = isset($_POST['annee']) ? trim(mysql_real_escape_string($_POST['annee'])) : ''; 
$Datedenaissance = $jour . '/' . $mois . '/' . $annee;

$errors = array(); 
if(isset($_POST["checkbox"]) == "" ) $errors[] = 'La casse des Conditions d\'utilisation est non cochée';  
if(strlen($Prenom) < 3) $errors[] = 'Le prénom doit contenir au moins 3 caractères'; 
if(strlen($Prenom) > 15) $errors[] = 'Le prénom ne doit pas contenir plus de 15 caractères'; 
if(!preg_match('#^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]+$#', $Prenom)) $errors[] = 'Le Prénom ne doit contenir que des caractères de type lettre';  
if(strlen($Nomdefamille) < 3) $errors[] = 'Le nom de famille doit contenir au moins 3 caractères'; 
if(strlen($Nomdefamille) > 15) $errors[] = 'Le nom de famille doit ne doit pas contenir plus de 15 caractères'; 
if(!preg_match('#^[a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]+$#', $Nomdefamille)) $errors[] = 'Le Nom de famille ne doit contenir que des caractères de type lettre'; 
if(strlen($Votremotdepasse) < 5) $errors[] = 'Votre mot de passe doit contenir au moins 3 caractères'; 
if(strlen($Votremotdepasse) > 20) $errors[] = 'Votre mot de passe ne doit pas contenir plus de 20 caractères'; 
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) $errors[] = 'L\'adresse email est non invalide'; 
if($email !== $email2) $errors[] = 'Les adresses emails entrées ne correspondent pas'; 

if(count($errors) > 0) {
	echo '<div class="errors">';
	echo 'Il y a '.count($errors).' erreur(s) :<br/>';
	foreach($errors as $error){
		echo '- '.$error.'<br/>';
	}
	echo '</div>'; 
} 
else{
$sql="INSERT INTO membres(Prenom, Nomdefamille,email,Votremotdepasse,sexe,Datedenaissance,email) VALUES('$Prenom','$Nomdefamille','$email','$Votremotdepasse','$sexe','$Datedenaissance')";
if(mysql_query($sql)) echo"<br/><br/>Vos données ont bien été envoyées.";
}   
?>




Table sql :

id int(11) Non Aucunauto_increment

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
A voir également:

3 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
5 janv. 2011 à 16:49
Salut.

Pour commencer, voilà le code de ton formulaire validé et allégé :
https://gist.github.com/8391960a2990ea7bac95

@Framboos: Ta solution ne fonctionnera pas : tu ajoutes la colonne pour l'id dans VALUES() mais pas dans la première parenthèse.
Si l'id est en auto_increment, tu n'es pas obligé de le préciser dans aucune des parenthèses.

Par contre, utiliser mysql_erro() est une bonne idée.
1
Framboos Messages postés 85 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 27 septembre 2013 9
5 janv. 2011 à 17:15
Effectivement il précisait les champs puisqu'il n'utilise pas l'id, ensuite pour l'auto_increment il ne semble pas y être justement.

Ou alors ca vient peut être de $Datedenaissance.

$Datedenaissance = $jour . '/' . $mois . '/' . $annee;

et dans la base Datedenaissance et de type date

il faut surement convertir la date de naissance en timestamp, je pense que l'erreur vient plutôt d'ici.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
5 janv. 2011 à 17:24
id	int(11)	 Non Aucunauto_increment

« Aucun » n'est pas censé être attaché à « auto_increment », c'est parce qu'il a fait un copier/coller depuis un tableau.

$Datedenaissance = $jour . '/' . $mois . '/' . $annee; 
et dans la base Datedenaissance et de type date
il faut surement convertir la date de naissance en timestamp

Bien vu, il y a une erreur, sauf que le type DATE stocke les dates au format AAAA-MM-JJ

Pour stocker un timestamp, on utilise le type INT.
Le type TIMESTAMP contient la date au format AAAAMMJJHHMMSS.
0
Framboos Messages postés 85 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 27 septembre 2013 9
5 janv. 2011 à 17:56
Bon alors il suffit de remplacer :
$Datedenaissance = $jour . '/' . $mois . '/' . $annee; 


Par:
$Datedenaissance = $annee . '-' . $mois . '-' . $jour; 
0
Framboos Messages postés 85 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 27 septembre 2013 9
Modifié par Framboos le 5/01/2011 à 17:22
Bonjour,

Tu oublies d'enregistrer l'id du membre dans ta requête :
D'ailleurs il semble ne pas s'incrémenter automatiquement ... si c'est le cas je te conseille de régler ton champ id sur auto incrémentation.

Tu as :
else{ 
$sql="INSERT INTO membres(Prenom,  Nomdefamille, email, Votremotdepasse, sexe, Datedenaissance, email) VALUES('$Prenom', '$Nomdefamille', '$email', '$Votremotdepasse', '$sexe', '$Datedenaissance')"; 
if(mysql_query($sql)) echo"<br/><br/>Vos données ont bien été envoyées."; 
}   


Essaye ceci :

$sql="INSERT INTO membres(id, Prenom, Nomdefamille,email, Votremotdepasse,sexe, Datedenaissance, email) VALUES('', '$Prenom', '$Nomdefamille', '$email', '$Votremotdepasse', '$sexe', '$Datedenaissance')"; 

$result = mysql_query($sql); 
if (!$result) { 
    die('Requête invalide : ' . mysql_error()); 
} 



Et vu que tu utilises tout les champs de ta table tu n'est pas obligé de les préciser, donc tu peux écrire ceci ;

$sql="INSERT INTO membres VALUES('', '$Prenom', '$Nomdefamille', '$email', '$Votremotdepasse', '$sexe', '$Datedenaissance')"; 


Bon courage pour la suite ;) ...
0
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 2
5 janv. 2011 à 23:16
Merci tout le monde ça marche super bien :)

Effectivement j' ai changer l' ordre de la date de naissance ;)


avion-f16 : merci pour avoir ajouter le php a mon code qui effectivement est bien moins lourd ! le php ça change la vie ? ^^


Par contre je vais devoir crée un login et un auto login a l' inscription avec les valeurs rentrer, pour rediriger sur la page personnelle de chaqu' un avec l' id utilisateur, mais je ne sais pas comment crée automatiquement une page personnelle aprés l' inscription une idée ?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
6 janv. 2011 à 01:53
Il va falloir créer un seul script pour afficher la page de profil.
Si le profil est publique, alors il faudra passer en paramètre GET (dans l'URL) l'id du membre.
Si le profil n'est accessible que par le membre, alors il faudra utiliser les sessions pour stocker son id lorsqu'il se connectera.

Grâce à cet id, tu pourras récupérer toutes les informations le concernant en une seule requête.
0
ced3E Messages postés 101 Date d'inscription mardi 28 décembre 2010 Statut Membre Dernière intervention 9 janvier 2013 2
6 janv. 2011 à 04:24
Oui effectivement les profils ne seront accessible que par les membres et chaque membre aura donc ça propre page avec sont profil. Donc oui l' utilisation de l' id est indispensable.

Je regarde le tuto http://www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php qui est une bonne base pour le login, mais pour se qui est de l' utilisation de l' id je ne sais pas trop comment mis prendre.De plus le login devra comprendre l' id pour diriger sur la bonne page. Mais ma question est comment crée cette fameuse page automatiquement car je vais pas crée une page a chaque membre manuellement ^^
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
6 janv. 2011 à 11:00
L'id sera stocké en session.
Sur ta page, il suffit de faire une requête SQL pour récupérer les infos, avec le clause WHERE :
SELECT * FROM tableMembres WHERE id = $_SESSION['id']
0