Problème d'insertion avec MySQL

Résolu/Fermé
Clément56 - 15 oct. 2009 à 12:18
 Clément56 - 17 oct. 2009 à 12:41
Bonjour,

J'ai réalisé un code en PHP pour une page d'inscription. Voici ce code:


<?php
include('scripts/conf.php'); //configuration de la BDD

//conversion des caracteres speciaux pour la creation du fichier
$pseudo  = $_POST['pseudo'];
$faux = array("à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "œ", "š", "Þ", "ù", "ú", "û", "ü", "ý", "ÿ", " ");

$vrai = array("a", "a", "a", "a", "a", "a", "x", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "n", "o", "o", "o", "o", "o", "o", "x", "s", "b", "u", "u", "u", "u", "y", "y", "-");

$newpseudo = str_replace($faux, $vrai, $pseudo);



$mail = "".$_POST['mail']."@".$_POST['mail2']."";
$mdp = $_POST['pass1'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];


//Verfier que le p^seduo n'existe pas deja...
$reponse = mysql_query("SELECT * FROM membres WHERE pseudo = '$newpseudo'"); 
 
while ($donnees = mysql_fetch_array($reponse) ){

	if(isset($donnees['id'])){
		echo "<p>Désolé, ce pseudo est déjà pris</p>";
		include('inscription.php');
	}
	elseif(!isset($donnees['id'])){
		$pseudo  = ($_POST['pseudo']);
		$faux = array("à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "œ", "š", "Þ", "ù", "ú", "û", "ü", "ý", "ÿ", " ");
		$vrai = array("a", "a", "a", "a", "a", "a", "x", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "n", "o", "o", "o", "o", "o", "o", "x", "s", "b", "u", "u", "u", "u", "y", "y", "-");

		$newpseudo = str_replace($faux, $vrai, $pseudo);

		echo $newpseudo;

		include('scripts/conf.php'); //configuration de la BDD


		$mail = "".$_POST['mail']."@".$_POST['mail2']."";
		$mdp = ($_POST['pass1']);
		$nom = ($_POST['nom']);
		$prenom = ($_POST['prenom']);
		mysql_query("INSERT INTO membres VALUES('', '$nom', '$prenom', '$mail', '$newpseudo', '$mdp', '?')");
		mkdir("membres/".$newpseudo."", 0777); 
	}
}

?>




J'ai fais un if..else pour verifier si le pseudo n'existe pas déjà. Si il existe déjà, pas de problème, mais si il n'existe pas rien ne s'inscrit dans la BDD, rien ne s'affiche, on dirait qu'il ne tient pas compte du else :s

Si vous savez pourquoi, je suis preneur

A+ tout le monde
A voir également:

3 réponses

HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
15 oct. 2009 à 12:56
Pour ce genre de choses, je compte le nombre de lignes retournées. Si ce nombre est 0, insertion possible, sinon c'est que ça existe déjà.

1
Ok merci beaucoup, je vais tester.
0
Bingo!

Ca marche à merveille, voici le code (+/- propre)

$retour = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo = '$newpseudo'");
$donnees = mysql_fetch_array($retour);

$nb_pseudo = $donnees['nb_pseudo'];

if($nb_pseudo == 0){

	$pseudo  = ($_POST['pseudo']);
	$faux = array("à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "œ", "š", "Þ", "ù", "ú", "û", "ü", "ý", "ÿ", " ");
	$vrai = array("a", "a", "a", "a", "a", "a", "x", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "n", "o", "o", "o", "o", "o", "o", "x", "s", "b", "u", "u", "u", "u", "y", "y", "-");

	$newpseudo = str_replace($faux, $vrai, $pseudo);


	include('scripts/conf.php'); //configuration de la BDD


	$mail = "".$_POST['mail']."@".$_POST['mail2']."";
	$mdp = ($_POST['pass1']);
	$nom = ($_POST['nom']);
	$prenom = ($_POST['prenom']);
	mysql_query("INSERT INTO membres VALUES('', '$nom', '$prenom', '$mail', '$newpseudo', '$mdp', '?')");
	mkdir("membres/".$newpseudo."", 0777); 
	
	echo'<div id="ok" style="padding: 5px; width: 400px; border: 1px dashed #000; margin: auto;"><center>Bienvenue '.$newpseudo.'</center><br />Merci de vous &ecirc;tre inscrit &agrave; notre site. Les informations telles que votre nom, votre pr&eacute;nom, votre adresse mail ainsi que votre mot de passe, seron tenus secret. Seul l\'administrateur de la base de donn&eacute;es &agrave acc&egrave;s &agrave ces donn&eacute;es. Il n\'a aucunement le droit de les exploiter &agrave; des fins publicitaires... </div>';
	
}
elseif($nb_pseudo != 0){
	
	echo'<blink><p style="color: red">D&eacute;sol&eacute;, le pseudo '.$newpseudo.' existe d&eacute;j&agrave;!</p></blink>';
	include('inscription.php');
}


Encore une fois merci!
0