Insertion de données dans MYSQL IMPOSSIBLE!

Répondre
adloiseau
le 10/04/2008 à 13:29
adloiseau
Bonjour,

Je fais un projet pour mon bac et c'est un formulaire, je dispose de deux fichiers, un inscription.html et un inscription .php.
Le problème est que quand je rempli mon formulaire et que je clique sur valider, il me dit que les informations sont bien envoyés mais quand je vais dans ma base de données il y a bien en effet une ligne qui se rajoute mais tous mes champs sont vides.

Voici le contenu de mes deux fichiers :

HTML :

<html>
<head>
<title>Inscription</title>
</head>

<body bgcolor="#000000">

<center>
<img src="C:\Documents and Settings\Administrateur\Bureau\projet\mood_m6.JPEG">
</center>

<br>
<br>

<center><basefont face="castellar" size="5"color="red">Inscription</center></basefont>

<br>
<br>
<br>
<br>

<form method="post" action="inscription.php">
<table border >
<body text="red">
<center> <TABLE BORDER="2">


<TR>
<TD>Pseudo</TD>
<TD>
<INPUT type="text" name="pseudo">
</TD>
</TR>

<TR>
<TD>Password</TD>
<TD>
<INPUT type="text" name="password">
</TD>
</TR>

<TR>
<TD>Nom</TD>
<TD>
<INPUT type="text" name="nom">
</TD>
</TR>

<TR>
<TD>Prénom</TD>
<TD>
<INPUT type="text" name="prenom">
</TD>
</TR>

<TR>
<TD>Adresse</TD>
<TD>
<INPUT type="text" name="adresse">
</TD>
</TR>

<TR>
<TD>Ville</TD>
<TD>
<INPUT type="text" name="ville">
</TD>
</TR>

<TR>
<TD>Code Postal</TD>
<TD>
<INPUT type="text" name="cp">
</TD>
</TR>

<TR>
<TD>Sexe</TD>
<TD>
Homme : <INPUT type="radio" name="sexe" value="M">
<br>Femme : <INPUT type="radio" name="sexe" value="F">
</TD>
</TR>

<TR>
<TD>Date de Naissance</TD>
<TD>
<INPUT type="text" name="naissance">
</TD>
</TR>

<TR>
<TD>Remise à Zero</TD>
<TD>
<center><INPUT type="reset"></center>
</TD>
</TR>

</form>

</table></center>

<center>
<FORM ACTION="inscription.php">
<input type="submit" value="Valider">
</form>
<FORM ACTION="01.htm">
<input type="submit" value="Retour">
</form>

</center>

</body>
</html>



PHP :

<html>
<body>
<?php

// On commence par récupérer les champs

if(isset($_POST['pseudo'])) $pseudo=$_POST['pseudo'];
else $pseudo="";

if(isset($_POST['password'])) $password=$_POST['password'];
else $password="";

if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";

if(isset($_POST['adresse'])) $adresse=$_POST['adresse'];
else $adresse="";

if(isset($_POST['ville'])) $ville=$_POST['ville'];
else $ville="";

if(isset($_POST['cp'])) $cp=$_POST['cp'];
else $cp="";

if(isset($_POST['sexe'])) $sexe=$_POST['sexe'];
else $sexe="";

if(isset($_POST['naissance'])) $naissance=$_POST['naissance'];
else $naissance="";

// connexion à la base

$connexion = mysql_connect("localhost", "root", "root") or die ("Impossible de se connecter");
mysql_select_db("bmw",$connexion) or die ("Impossible de trouver la base");


// On vérifie si les champs sont vides


if(empty($pseudo) OR empty($password) OR empty($nom) OR empty($prenom) OR empty($adresse) OR empty($ville) OR empty($cp) OR empty($sexe) OR empty($naissance))

// on écrit la requête sql

$sql=("insert into inscription (pseudo, password, nom, prenom, adresse, ville, cp, sexe, naissance)
values ('$pseudo','$password','$nom','$prenom','$adresse','$ville','$cp','$sexe','$naissance')");

// on insère les informations du formulaire dans la table

mysql_query($sql);

// on affiche le résultat pour le visiteur

echo"<br/><br/>Vos données ont bien été envoyées.";

// on ferme la connexion

mysql_close();

?>

</body>
</html>
LA GLOBULE
le 10/04/2008 à 13:32
LA GLOBULE
Ca me saoule que personne ne lise les conditions d'utilisation des forums...

Sinon, ton code a plusieurs problèmes :
- ta condition pour tester si les champs sont vides "ne se termine pas" : la en gros, ce que tu dis, c'est que si une valeur est vide, alors tu déclares ta requête SQL. Ce qu'il faut faire, c'est : si un champ est vide, on affiche un message d'erreur sinon on exécute la requete SQL. Pour cela, utilise une structure simple avec des { }, comme par exemple :

<?php
if (empty($toto)) {
// message erreur
}
else {
// SQL
}
?>

- attention, empty est un faux ami : il ne teste pas si le champ est vide (je t'invite à regarder la documentation de cette fonction).
- tu dois escaper tes données avant de les insérer en base de données, avec une fonction comme mysql_real_escape_string
adloiseau
le 10/04/2008 à 13:49
adloiseau
Avec les {} comment serait mon code ?


?php

// On commence par récupérer les champs

if(isset($_POST['pseudo'])) $pseudo=$_POST['pseudo'];
else $pseudo="";

if(isset($_POST['password'])) $password=$_POST['password'];
else $password="";

if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";

if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";

if(isset($_POST['adresse'])) $adresse=$_POST['adresse'];
else $adresse="";

if(isset($_POST['ville'])) $ville=$_POST['ville'];
else $ville="";

if(isset($_POST['cp'])) $cp=$_POST['cp'];
else $cp="";

if(isset($_POST['sexe'])) $sexe=$_POST['sexe'];
else $sexe="";

if(isset($_POST['naissance'])) $naissance=$_POST['naissance'];
else $naissance="";
diablo
le 10/04/2008 à 15:37
diablo
@adloiseau -> Ton code est super mal foutu :)

Evite d'utiliser des url absolues, surtout si tu bosse en local
-> "C:\Documents and Settings\Administrateur\blabla" = à bannir

Perso, j'aurais utilisé un extract() sur ton $_POST, ca évite de tout taper à la main et de prendre le risque de faire des fautes de frappe.

Ensuite, tu à 3 formulaire dans ta page, t'étonne pas qu'à l'arrivée, ta page inscription.php ne recoive aucune info quand tu valides.
Réfléchis, dans quel formulaire se trouve ton bouton submit ? Et de ce fait, quel formulaire soumets-tu quand tu cliques dessus ?
Et par extension, quelles données envoies-tu quand tu appuis sue ton bouton submit ?

La bonne tenue de ton code html a un impact sur le fonctionnement de ton code php, surtout quand tu utilises des formulaires.
.:[ UTB ]:. Diablo xo0 Au royaume des aveugles, les bornes sont rois...
diablo
le 10/04/2008 à 15:39
diablo
ps : le débugging, c'est ... utile ;) un petit

<?php echo $sql; ?>

a la fin de code t'aurait surement aidé à situer le problème.

De même, la fonction print_r utilisée sur un $_POST ou $_GET peut parfois être très utile.

++
.:[ UTB ]:. Diablo xo0 Au royaume des aveugles, les bornes sont rois...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours