Mon INSERT ne transmet pas a ma BDD

Résolu/Fermé
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011 - 9 nov. 2011 à 23:08
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 - 10 nov. 2011 à 21:04
Bonjour,

après avoir retourné la question dans tout les sense, aprés avoir fait 1000 testes, quand je valide mon formulaire, il n'envoie pas les données a ma BDD :'(

Voici mon code

<?php
function connect(){
 $serveur = '127.0.0.1';
 $user   = 'root';
 $pass   = '';
 $bdd   = 'south_home';

 $conn = mysql_connect($serveur, $user, $pass)
 or die('Impossible de se connecter :'.mysql_error());
 
 mysql_select_db($bdd);
}
?>
<?php
$sql = ('INSERT INTO comptes_utilisateurs(id_utilisateur, mot_de_passe, adresse_email) VALUES(?, ?, ?)');
 $query = mysql_query($sql);
 ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>South's Home - Nouveau Compte</title>
		<link media="screen" rel="stylesheet" type="text/css" href="../CSS/index2.css" />
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	</head>

	<body>
		<?php

		if(isset($_COOKIE["ID_UTILISATEUR"]))
		{
		header("Location: ../index.php");
		}

		?>
		<div id="page">
			<div id="top">
			</div>
			<div id="menu_1">
				<form action="#" method="post">
				<p class="text">
					ID Utilisateur : <br /><input type="text" id="id_utilisateur" name="id_utilisateur" invalid required />
					<br /><br />
					Mot de passe : <br /> <input type="password" id="mot_de_passe" name="mot_de_passe" invalid required />
					<br />
					Confirmation du mot de passe : <br /> <input type="password" id="confirmation_mot_de_passe" name="confirmation_mot_de_passe" invalid required />
				
						<?php
							if (isset($_POST['mot_de_passe']) == isset($_POST['confirmation_mot_de_passe']))
							{
							$true;
							}
							else
							{
							?>
							<span style="color: white; font-size: 15px;">Les mots de passe ne sont pas identique.</span>
							<?php
							}
						?>
					<br /><br />
					Adresse e-mail : <br /> <input type="email" id="adresse_email" name="adresse_email" invalid required />
					<br />
				<input type="submit" name="Envoyer" class="valider2" value="" invalid required />
				</p>
				</form>
			</div>
			<div id="menu_2">
				
			<p class="text2">
					Annonces :
					 <ul  id="puce">
						<li>Le nom d'utilisateur</li>
					</ul>
					<ul id="puce">
						<li>Le mot de passe</li>
					</ul>
					<ul  id="puce">
						<li>L'adresse E-mail</li>
					</ul>
					<ul  id="puce">
						<li><a href="../index.php"><span class="text_lien">Page d'acceuil</span></a></li>
					</ul>
					 
			</div>
		</div>
	</body>
</html>



9 réponses

masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
Modifié par masterbotweb le 10/11/2011 à 00:24
Bonjour Soutshiide06,

Pour ton formulaire, utilise plutôt $_SESSION[] car si un utilisateur essaie de jouer avec tes coockies tu te feras hacker facilement et utilise des fichiers séparer pour les requêtes pour que tu t'y retrouve lors des modifications. Voici un exemple que j'ai créer moi même qui est un peu long mais assez simple.

connect_db.php:

<?php 
// Start Config Base de Donnée 
$db_host = "localhost"; 
$db_login = users"; 
$db_pass = "mdp"; 
$database = "data-base"; 
// End Config Base de Donnée 
$connect_mysql_site=mysql_connect($db_host, $db_login,$db_pass) or die("Erreur de connexion au serveur"); 
$connect_bd_site=mysql_select_db($database) or die("Erreur de connexion à la base de donnees"); 
?> 



enregistrement.php:

<?php
if (isset($_SESSION['pseudo'])) {
header('location:index.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > 
   <head> 
        <title>Acceuil</title> 
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<!-- SCRIPTS ET CSS --> 
   </head> 
<body> 

<?php 
error_reporting(0); 
// Les erreurs qui seront afficher si il y en a 
if ($_GET['err'] == 1) { 
echo 'Veuillez remplir tous les champs'; 
} 
elseif ($_GET['err'] == 2) { 
echo 'Mot de passe non identique'; 
} 
elseif ($_GET['err'] == 3) { 
echo 'Adresse e-mail invalide'; 
} 
elseif ($_GET['err'] == 4) { 
echo 'Le nom d'utilisateur est déjà utilisé'; 
} 
elseif ($_GET['err'] == 5) { 
echo 'L\'adresse e-mail est déjà utilisée'; 
} 
?> 

<!-- Ton formulaire --> 
<form action="verif.php" method="POST"> 
Pseudo : <input type="text" name="pseudo" value="" /> <br /> 
Mot de passe : <input type="password" name="password0" value="" /> <br /> 
Mot de passe : <input type="password" name="password1" value="" /> <br /> 
E-mail : <input type="text" name="mail" value="" /> <br /> 
<input type="submit" value="Envoyer" /> 
</form> 

</body> 
</html> 


verif.php :

<?php 
// Ne pas afficher les erreurs 
error_reporting(0); 

include ('connect_db.php'); 
$sql_req_users = mysql_query("SELECT PSEUDO, EMAIL FROM Table WHERE PSEUDO= '".$pseudo."' OR EMAIL = '".$mail."'"); 
// Variables 
$pseudo = $_POST['pseudo']; 
$pass0 = $_POST['password0']; 
$pass1 = $_POST['password1']; 
$mail = $_POST['mail']; 

// Vérification du formulaire 
// Vérification de champ vide 
if ($pseudo == "" || $pass0 == "" || $pass1 == "" || $mail == "") { 
header("location:enregistrement.php?err=1"); 
} 
// Vérification si les mot de passe sont identiques 
elseif ($pass0 != $pass1) { 
header("location:enregistrement.php?err=2"); 
} 
// Verification de l'adresse e-mail 
elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$", $mai)) { 
header("location:enregistrement.php?err=3"); 
} 
// Vérification de doublons dans la base de données 
elseif (mysql_num_rows($sql_req_users) > 0) { 
    while($row = mysql_fetch_array($sql_req_users)) { 
    if($pseudo == $row["PSEUDO"]) { 
       header("location:enregistrement.php?err=4"); } 
    elseif($mail == $row["MAIL"]) { 
       header("location:enregistrement.php?err=5"); } 
    } 
} 
else { 
// On crypte le mot de passe 
$pass2 = sha1($pass0); 
// Si tout est OK en enregistre le tout 
$sql_reg = "INSERT INTO mns_users (ID, PSEUDO, PASS, MAIL) VALUES ('', '$pseudo', '$pass2', '$mail'); 
$requete_reg = mysql_query($sql_reg, $connect_mysql_site) or die( mysql_error());  
} 
?> 



Bonne chance,
Si tu as besoin d'autres choses n'hésite pas ! Sinon si ton problème est résolu n'oublie pas de le marquer.

Cordialement,
MasterBotWeb

La curiosité est un vilain défaut mais elle peut aussi être utile pour acquérir des connaissances
0
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011
10 nov. 2011 à 10:21
Le code marche presque a merveille mais il me sort toujours l'érreur "err1" qui ce situe dans enregistrement.php
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
Modifié par masterbotweb le 10/11/2011 à 10:38
Essaye ce code à la place sur enregistrement.php
<?php
error_reporting(0);
// Les erreurs qui seront afficher si il y en a
if ($_GET['err'] == "") {
echo '';
}
elseif ($_GET['err'] == 1) {
echo 'Veuillez remplir tous les champs';
}
elseif ($_GET['err'] == 2) {
echo 'Mot de passe non identique';
}
elseif ($_GET['err'] == 3) {
echo 'Adresse e-mail invalide';
}
elseif ($_GET['err'] == 4) {
echo 'Le nom d'utilisateur est déjà utilisé';
}
elseif ($_GET['err'] == 5) {
echo 'L\'adresse e-mail est déjà utilisée';
}
?>
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
Modifié par masterbotweb le 10/11/2011 à 10:43
Si tu veux je peux te faire des requêtes plus élaborer pour gérer les erreurs et le titre de la page ainsi que le contenu ! mais encore plus complexe !
l'exemple que j'ai donné est simple et il faut encore compléter selon les fonctions !
0
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011
Modifié par Soutshiide06 le 10/11/2011 à 10:46
Ce souci est rélgé, mais maintenant j'ai droit a ce message d'erreur

"Column count doesn't match value count at row 1"

=s

PS. un grand merci pour ce que tu a deja fait pour moi
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
10 nov. 2011 à 10:57
Vérifie la requête ainsi que les colonnes de ta table si elles sont les même.

<?php
......
 $sql_req_users = ...
......
elseif (mysql_num_rows($sql_req_users) > 0) { 
    while($row = mysql_fetch_array($sql_req_users)) { 
    if($pseudo == $row["PSEUDO"]) { 
       header("location:enregistrement.php?err=4"); } 
    elseif($mail == $row["MAIL"]) { 
       header("location:enregistrement.php?err=5"); } 
    } 
} 
......
?>
0
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011
Modifié par Soutshiide06 le 10/11/2011 à 11:06
$sql_req_users = mysql_query("SELECT id_utilisateur, adresse_email FROM Table(j'ai également testé avec le nom de ma table) WHERE id_utilisateur= '".$pseudo."' OR adresse_email = '".$mail."'");  


elseif (mysql_num_rows($sql_req_users) > 0) {  
    while($row = mysql_fetch_array($sql_req_users)) {  
    if($pseudo == $row["id_utilisateur"]) {  
       header("location:inscription.php?err=4"); }  
    elseif($mail == $row["adresse_email"]) {  
       header("location:inscription.php?err=5"); }  
    }  
} 
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
10 nov. 2011 à 11:17
Quel est la structure de ta table s'il te plait ?
0

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

Posez votre question
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011
10 nov. 2011 à 11:21
http://data.imagup.com/12/1135586047.jpg

la voila :p
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
10 nov. 2011 à 11:37
l'erreur vient d ta table :
Essaye comme ceci sous phpmyadmin
Supprime la structure de la table et exécute cette requête :

CREATE TABLE IF NOT EXISTS 'Table' (
  'ID' int(11) NOT NULL AUTO_INCREMENT,
  'id_utilisateur' varchar(250) NOT NULL,
  'mot_de_passe' varchar(250) NOT NULL,
  'adresse_mail' varchar(250) NOT NULL,
  PRIMARY KEY ('ID')
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=24 ;
0
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011
Modifié par Soutshiide06 le 10/11/2011 à 11:43
#1064 - Erreur de syntaxe près de ''table' ( 'ID' int(11) NOT NULL AUTO_INCREMENT, 'id_utilisate' à la ligne 1
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
10 nov. 2011 à 11:52
Fait la requête à partir de ta base de données et remplace table par le nom de la table qui doit être vide normalement !
0
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011
10 nov. 2011 à 11:55
c'est ce que je fait...

http://data.imagup.com/10/1135588047.jpg
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
10 nov. 2011 à 12:11
Donc on va le faire manuellement !
Dans ta table créer ta première colonne:
ID | Type: INT | Auto Increment | Primary

Ta deuxième colonne:
id_utilisateur | Type: varchars | valeur : 250

Ta troisième table :
mot_de_passe | Type: varchars | valeur : 250

Ta quatrième colonne :
adresse_mail | Type: varchars | valeur : 250
0
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011
10 nov. 2011 à 12:17
même érreur...
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
10 nov. 2011 à 19:32
As tu essayer de vider la table avant de créer une nouvelle structure !
0
Soutshiide06 Messages postés 37 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 3 décembre 2011
10 nov. 2011 à 20:45
C'ont bon on m'a aidé avec ta base, franchement apar d'après mon collègue il y a quelques erreur mais vite fait quoi donc je te dit en grand merci pour ce code =) probleme résolut
0
masterbotweb Messages postés 138 Date d'inscription dimanche 5 juin 2011 Statut Membre Dernière intervention 4 novembre 2016 26
10 nov. 2011 à 21:04
Derien, tout le plaisir est pour moi !
0