Page 1 sur 1

doublons dans la base de donnée

Posté : 05 mai 2011, 16:44
par cobra2930
Bonjour a tous,
Voici mon problème : J'ai fait un code en php pour ajouter des élèves dans ma base de donnée (phpMyAdmin) et le formulaire fonctionne mais dans ma base de donnée il m'ajoute deux fois la personne avec tous ses paramètres.aurais-je fait une erreur dans mon code ?
<?php
	$nom = isset($_GET['nom']) && !empty($_GET['nom'])? $_GET['nom'] : null;
	$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
	$prenom = isset($_GET['prenom']) && !empty($_GET['prenom'])? $_GET['prenom'] : null;
	$adresse = isset($_GET['adresse']) && !empty($_GET['adresse'])? $_GET['adresse'] : null;
	$code_postal = isset($_GET['code_postal']) && !empty($_GET['code_postal'])? $_GET['code_postal'] : null;
	$ville = isset($_GET['ville']) && !empty($_GET['ville'])? $_GET['ville'] : null;
	$portable = isset($_GET['portable']) && !empty($_GET['portable'])? $_GET['portable'] : null;
	$mail = isset($_GET['mail']) && !empty($_GET['mail'])? $_GET['mail'] : null;
	$date_de_naissance = isset($_GET['date_de_naissance']) && !empty($_GET['date_de_naissance'])? $_GET['date_de_naissance'] : null;

		// on se connecte à notre base
	   // $base = mysql_connect ('serveur', 'login', 'pass');  
		//mysql_select_db ('ma_base', $base) ;  
		mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
?>
<?php

			// enregistrer la saisie du formulaire
		if (isset($_GET['action']) && $_GET['action']=='Enregistrer')
		{
			//
			$message = "";
			if (empty($nom)) $message .= "<p>Le nom est obligatoire !</p>";
			if (empty($prenom)) $message .= "<p>Le prenom est obligatoire !</p>";
			if (empty($idClasse)) $message .= "<p>La classe est obligatoire !</p>";
			if (empty($message))
			{
			  $sql = 'INSERT INTO eleve (nom, prenom, idClasse, adresse, code_postal, ville, portable, mail, date_de_naissance) VALUES ("'.$nom.'", "'.$prenom.'", "'.$idClasse.'", "'.$adresse.'", "'.$code_postal.'", "'.$ville.'", "'.$portable.'", "'.$mail.'", "'.$date_de_naissance.'")'; 
			  
			  mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
			  //echo $sql;
						
						if (!@mysql_query($sql)) $message .= "<li>".$nomEleve." => Erreur : ".mysql_error()."</li>";
				if (empty($message)) $message = "Enregistrement effectué avec succès";
                else $message = "<p>Les Erreurs suivantes sont rencontrées :</ul>" . $message . "</ul></p>";
			}
				   
		}				
		// fin de connexion
		mysql_close();
?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ajout d'élève dans la base</title>
<link rel="stylesheet" type="text/css" href="calendrier.css">
<script type="text/javascript" src="calendrier.js"></script>
  <link href="/index.php?format=feed&type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
  <link href="/index.php?format=feed&type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
  <script type="text/javascript" src="/media/system/js/mootools.js"></script>
  <script type="text/javascript" src="/media/system/js/caption.js"></script>
	<link rel="stylesheet" type="text/css" href="css/content.css">
	<link rel="stylesheet" type="text/css" href="css/current.css">
	<link rel="stylesheet" type="text/css" href="css/form.css">
	<link rel="stylesheet" type="text/css" href="css/html_code.css">
	<link rel="stylesheet" type="text/css" href="css/menu.css">
	<link rel="stylesheet" type="text/css" href="css/message.css">
	<link rel="stylesheet" type="text/css" href="css/module.css">
	<link rel="stylesheet" type="text/css" href="css/page_nav.css">
	<link rel="stylesheet" type="text/css" href="css/print.css">
	<link rel="stylesheet" type="text/css" href="css/template.css">
	
</head>
<body>
	<div class="main">
		<div class="logo">
		  <blockquote>
		    <blockquote>
		      <p>						 		<img src="images/banniere.jpg" width="1133" height="138" alt="banniere" />
	          </p>
	        </blockquote>
	      </blockquote>
	  </div>
		<br/><br/>
	
			<div class="leftmod">
				<div class="leftmod2">		
					<div class="module_menu">
						<div>
							<div>
								<div>
																<h3>Menu Principal</h3>
														<ul class="menu">
														  <li id="current" class="active item1"><a href="index.php"><span>Accueil</span></a></li>
														  <li class="parent item27"><a href="formAssiduite.php"><span> Gestion d'assiduité</span></a></li>
														  <li class="item2"><a href="consultation_d_assiduite.php"><span>Consultation d'assiduite</span></a></li>
														  <li class="item37"><a href="gestion_eleves.php"><span>Gestion des élèves</span></a></li>
														  <li class="item48"><a href=""><span></span></a></li>
														  <li class="item49"><a href=""><span></span></a></li>
														</ul>					
								</div>

							</div>
						</div>
					</div>
					<div class="module_menu">
						<div>
							<div>
								<div>
																<h3>Ressources</h3>

														<ul class="menu">
														  <li class="item11"><a href="modeles.php"><span>Modèles</span></a></li>
														  <li class="item12"><a href=""><span></span></a></li>
														  <li class="item13"><a href=""><span></span></a></li>
														  <li class="item17"><a href=""><span></span></a></li>
														</ul>					
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
			<br/><br/>
		<div class="main2">
		<h1>Ajout d'élève dans la base</h1><br/><br/>

			<form name="form2" action="" method="get">
				Nom : <input type="text" id="nom" name="nom" value=""/><FONT color="red">&nbsp;*</FONT><br/><br/>
				Prenom : <input type="text" id="prenom" name="prenom" value=""/><FONT color="red">&nbsp;*</FONT><br/><br/>
				Classe : <input type="text" id="idClasse" name="idClasse" value=""/><FONT color="red">&nbsp;*</FONT><br/><br/>
				Adresse : <input type="text" id="adresse" name="adresse" value=""/><br/><br/>
				Code postal : <input type="text" id="code_postal" name="code_postal" value=""/><br/><br/>
				Ville : <input type="text" id="ville" name="ville" value=""/><br/><br/>
				Portable : <input type="text" id="portable" name="portable" value=""/><br/><br/>
				Mail : <input type="text" id="mail" name="mail" value=""/><br/><br/>
				Date de naissance : <input type="text" id="date_de_naissance" name="date_de_naissance" value=""/><br/><br/>
				<br/><FONT color="red">&nbsp;*</FONT>=champ obligatoire.
				<input type="submit" name="action" value="Enregistrer" />
			</form>
			
			<br/><br/><div id="message"><?php echo isset($message)?$message:''; ?></div>
			
		</div>
	</div>
</body>

</html>

Re: doublons dans la base de donnée

Posté : 05 mai 2011, 16:55
par Yosh
Tu fait appel deux fois à mysql_query donc c'est normal que tu ai un doublon.
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
//echo $sql;
                                               
if (!@mysql_query($sql)) //ici tu réexécute la requête
Il vaut mieux stocker le résultat de mysql_query et faire la vérification ensuite, du style
$result = mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
//echo $sql;
if(!$result)

Re: doublons dans la base de donnée

Posté : 05 mai 2011, 16:56
par moogli
ce n'est pas un problème SQL mais un problèem php tu a deux mysql_query pour la même requete, ce n'est pas un problème d'ailleur c'est ce que tu demande a php tout va bien ;)

la suite de la réponse sur le sujet d'origine=> php-avance/gestion-absences-presences-p ... 26-75.html ;)

@+

Re: doublons dans la base de donnée

Posté : 05 mai 2011, 17:17
par cobra2930
Tu fait appel deux fois à mysql_query donc c'est normal que tu ai un doublon.
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
//echo $sql;
                                               
if (!@mysql_query($sql)) //ici tu réexécute la requête
Il vaut mieux stocker le résultat de mysql_query et faire la vérification ensuite, du style
$result = mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
//echo $sql;
if(!$result)
Merci pour ta réponse même si j'avais eu la réponse sur mon sujet originale je trouve que tu m'as bien expliqué.