Rechercher : dans
Par :

Problème d'insertion avec MySQL

Dernière réponse le 17 oct 2009 à 12:41:34 Clément56, le 15 oct 2009 à 12:18:14 
 Signaler ce message aux modérateurs

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
Configuration: Windows Vista
Firefox 3.0.14

Meilleures réponses pour « Problème d'insertion avec MySQL » dans :
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

1

HostOfSeraphim, le 15 oct 2009 à 12:56:26
  • +1

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à.

Configuration : Linux Debian Lenny / Noyau 2.6.26 / Gnome / ­Iceweasel 3
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

2

Clément56, le 15 oct 2009 à 16:59:19

Ok merci beaucoup, je vais tester.

Répondre à Clément56

3

 Clément56, le 17 oct 2009 à 12:41:34

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!

Répondre à Clément56