8796 sujets

Développement web côté serveur, CMS

ma requête insert ne fonctionne pas, pouvez vous me dire j'ai des erreurs de syntaxe, ou si vous trouver ce qui ne va pas ^^

voila ma page d'inscription :

<?php
session_start();
include('config.php');

/********Actualisation de la session...**********/

include('fonctions.php');
connexionbdd();

/********Fin actualisation de session...**********/

if(isset($_SESSION['membre_id']))
{
	header('Location: '.ROOTPATH.'/index.php');
	exit();
}
?>
<link href="style.css"	title="j&eacute;r&eacute;m&apos;ap&eacute;ro" rel="stylesheet" type="text/css" media="screen" />	 
<title>j&eacute;r&eacute;m&apos;ap&eacute;ro</title>
<div id="contenu">
			<div id="map">
				<a href="index.php">Accueil</a> => <a href="inscription.php">Inscription</a>
			</div>
			<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
			<h1>Formulaire d'inscription</h1><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
			<p>Bienvenue sur la page d'inscription de j&eacute;r&eacute;m&apos;ap&eacute;ro !<br/></p><br/><br/><br/><br/>
			<form action="trait-inscription2.php" method="post" name="Inscription">
				<!--<fieldset><legend>Identifiants</legend>
					<label for="pseudo" class="float">Pseudo :</label> <input type="text" name="pseudo" id="pseudo" size="30" /> <em>(compris entre 3 et 32 caract&egrave;res)</em><br /><br/>
					<label for="mdp" class="float">Mot de passe :</label> <input type="password" name="mdp" id="mdp" size="30" /> <em>(compris entre 4 et 50 caract&egrave;res)</em><br />
					<label for="mdp_verif" class="float">Mot de passe (v&eacute;rification) :</label> <input type="password" name="mdp_verif" id="mdp_verif" size="30" /><br /><br/>
					--><label for="mail" class="float">Mail :</label> <input type="text" name="mail" id="mail" size="30" /> <br /><br/>
					<label for="mail_verif" class="float">Mail (v&eacute;rification) :</label> <input type="text" name="mail_verif" id="mail_verif" size="30" /><br /><br/>
					<!--<label for="date_naissance" class="float">Date de naissance :</label> <input type="text" name="date_naissance" id="date_naissance" size="30" /> <em>(format JJ/MM/AAAA)</em><br/><br/>-->
					<div class="center"><input type="submit" value="Inscription" /></div>
				</fieldset>
			</form>
		</div>


ma page deu traitement de l'inscription :

<link href="style.css" media="screen" rel="stylesheet" title="Défaut" type="text/css" />

<?php
session_start();
include_once('config.php');

include_once('fonctions.php');
connexionbdd();


$sql = 'INSERT INTO membres VALUES("", "", "", "'.$_POST["mail"].'", "", "", "", "", "", "", "", "", "", "", "", "")';
mysql_query($sql);
?>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<h3>vous venez de vous abonner a la newsletter jeremapero</h3><br/><br/><br/><br/>
<a href="index.php">Retour</a>


et voilà ma table :

-- 
-- Structure de la table `membres`
-- 

CREATE TABLE `membres` (
  `membre_id` int(11) NOT NULL auto_increment,
  `membre_pseudo` varchar(32) NOT NULL,
  `membre_mdp` varchar(40) NOT NULL,
  `membre_mail` varchar(100) NOT NULL,
  `membre_inscription` bigint(20) NOT NULL,
  `membre_naissance` varchar(11) NOT NULL,
  `membre_msn` varchar(255) NOT NULL,
  `membre_yahoo` varchar(255) NOT NULL,
  `membre_aim` varchar(255) NOT NULL,
  `membre_localisation` varchar(255) NOT NULL,
  `membre_profession` varchar(255) NOT NULL,
  `membre_avatar` varchar(255) NOT NULL,
  `membre_biographie` text NOT NULL,
  `membre_signature` text NOT NULL,
  `membre_derniere_visite` bigint(20) NOT NULL,
  `membre_banni` int(11) NOT NULL default '0',
  PRIMARY KEY  (`membre_id`),
  UNIQUE KEY `membre_pseudo` (`membre_pseudo`),
  UNIQUE KEY `membre_mail` (`membre_mail`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 AUTO_INCREMENT=23 ;

Modifié par volcomboy62 (24 Feb 2011 - 10:27)
$sql = 'INSERT INTO membres VALUES("", "", "", "'.$_POST["mail"].'", "", "", "", "", "", "", "", "", "", "", "", "")'; 


Je dirais à la louche de remplacer par ça :


$sql = "INSERT INTO membres VALUES('', '', '', '".$_POST["mail"]."', '', '', '', '', '', '', '', '', '', '', '', '')"; 


mais ça fait des années que je n'ai pas fais de PHP !
bon alors je vient de voir qu'en faite ma requête marche mais en faite dès qu'il y a plus de deux ligne dans ma base, les autres données ne s'insère pas dans la base.
Savez vous d'où cela peut provenir ?
Ok alors fait un echo $sql pour afficher ta requête sur la page, tu la copies/colles dans ton requêteur SQL : si c'est ok, tu as un souci au niveau de la connexion à la base de donnée (vérifie mot de passe, nom du serveur). Si c'est pas ok, corrige la syntaxe !
sa ne peut pas être un problème de connexion puisque l'inscription marche, l'écriture ce fait dans ma base de donnée mais il peut y avoir que deux lignes dans ma base.
Si j'essaie de m'inscrire alors qu'il y a déjà deux inscrits dans ma base, sa ne marche pas.
Bonjour,

je vais peut être dire une bêtise ou alors je n'ai pas compris l'exemple, mais si tu n'as qu'une seule valeur à insérer, pourquoi ne pas faire ça :

$sql = "INSERT INTO membres (TonChampMail) VALUES ('".$_POST["mail"]."')";

si ta base est bien faite, tous les autres champs prendront leur valeur par défaut.
De plus, personnellement, je n'utiliserai jamais une variable $_POST dans une requête.
Pour finir, même si c'est un mail censé être vérifier en amont, échappe quand même les caractères, ça peut pas faire de mal.

tiens nous au courant
++