Enregistrement sur un base de donnees

Résolu/Fermé
gahmed - 8 juil. 2009 à 12:18
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 10 juil. 2009 à 16:42
Bonjour,
j'ai un problème avec mes codes php, sur mes pages ou il y a une requête INSERT des que je l'ouvre sans même saisir d'informations il fait un enregistrement dont les valeurs seront des zéros ou bien null sur la base de données. Maintenant c'est qu'intervient le probleme des que réouvre la même page on me signale que cette erreur (Duplicate entry '0-2009-07-08' for key 1).
Es ce quelqu'un pourrai m'aider svp.

Merci d'avance

13 réponses

jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
8 juil. 2009 à 15:41
Bonjour,

ton erreur duplicate je pense que ton insert essaye d ajouter une l=nouvelle ligne don la clé primaire est déja renseignée dans ta base de donnée.

De plus, je pense que ton insert est placé trop tot dans ton code php, ce qui fait qu il te lance l insert sans avoir les variables adéquat a insérer...

Serait t il possible d avoir ton bout de code ??
0
voila mon code
<?php
      $jours = date("d");
      $moisys = date("m");
      $annees = date("Y");
	?>
 
      <form action="" method="POST">
	     <blockquote> 
		  <center><h3> Enregistrement Patient </h3></center>
		  <table width="707" height="111">
		    <tr>
		      <td width="306">
		  Date de Consultation 
		 <input size="1" value="<?php echo $jours ?>" maxlength="2" disabled="" name="da">&nbsp;
		 <input size="2" value="<?php echo $moisys ?>" maxlength="3" disabled="" name="moi">&nbsp;
		 <input size="4" value="<?php echo $annees ?>" maxlength="4" disabled="" name="ans"> 
   	          </td>
			  
	    <td colspan="2">1ere Visite
              <select name="vis">
              <option>OUI</option>
              <option>NON</option>
            </select>			
			Si non, Num enreg &nbsp;
			<input type="text"  size="5" name="enreg"></td></tr>
			<?php 

$bach= strtoUpper($_POST['enreg']);
echo $bach;
?>


     <tr><td>MODE PAIEMENT 
			<select name="paiement">
			  <option>cheque</option>
			  <option>espece</option>
			  
		    </select> 
			</td>
     <td width="151">
		
		      </td>
     <td width="234">
&nbsp;Num de Quittance          
	       <input type="text" size="5" name="quit"></td>
     </tr></table>
        </blockquote>
		  <?php
	 
	 	    //connection au serveur
  $cnx = mysql_connect( "localhost", "root", "" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "hospital" ) ;
    //récupération des valeurs des champs:
   $num=$_POST["enreg"];
	  $dateCons=$annees.$moisys.$jours;
	  $quit=$_POST["quit"];
	  $vis=$_POST['vis'];
	 	  $paiement=$_POST["paiement"];
		  
		   //création de la requête SQL:
		     $sql = "INSERT  INTO consultation (numP, DateCons, numqui, previsite, modepaiement)
            VALUES ( '$num', '$dateCons', '$quit', '$vis','$paiement') " ;
			  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }

 
	
		 ?>
	
		<br>
		<blockquote>
		   <center><h3> Etat Civil </h3></center>
		  <p>Nom &nbsp;
		         <input type="text" size="20" name="n">
		       &nbsp;
		       Prenom &nbsp;
		       <input type="text" size="20" name="p">
		       &nbsp;
		       Date de Naiss
		       <select name="jour">
		                    <option >01</option>
		                    <option>02</option>
		                    <option >03</option>
		                    <option >04</option>
		                    <option >05</option>
		                    <option>06</option>
		                    <option >07</option>
		                    <option >08</option>
		                    <option >09</option>
		                    <option >10</option>
		                    <option >11</option>
		                    <option >12</option>
		                    <option >13</option>
		                    <option >14</option>
		                    <option >15</option>
		                    <option>16</option>
		                    <option >17</option>
		                    <option >18</option>
		                    <option >19</option>
		                    <option >20</option>
		                    <option >21</option>
		                    <option >22</option>
		                    <option >23</option>
		                    <option >24</option>
		                    <option >25</option>
		                    <option >26</option>
		                    <option >27</option>
		                    <option >28</option>
		                    <option >29</option>
		                    <option >30</option>
		                    <option >31</option> 
               </select>                      
               <select name="mois">
                            <option >01</option>
                            <option>02</option>
                            <option >03</option>
                            <option >04</option>
                            <option >05</option>
                            <option >06</option>
                            <option >07</option>
                            <option >08</option>
                            <option >09</option>
                            <option >10</option>
                            <option >11</option>
                            <option >12</option>
               </select>
               <select name="year">
                            <option >2021</option>
                            <option >2020</option>
                            <option >2019</option>
                            <option >2018</option>
                            <option >2017</option>
                            <option>2016</option>
                            <option >2014</option>
                            <option >2013</option>
                            <option >2012</option>
                            <option >2011</option>
                            <option >2010</option>
                            <option >2009</option>
                            <option >2008</option>
                            <option >2007</option>
                            <option>2006</option>
                            <option >2005</option>
                            <option >2004</option>
                            <option>2003</option>
                            <option >2002</option>
                            <option >2001</option>
                            <option >2000</option>
                            <option>1999</option>
                            <option >1998</option>
                            <option >1997</option>
                            <option >1996</option>
                            <option>1995</option>
                            <option >1994</option>
                            <option >1993</option>
                            <option >1992</option>
                            <option >1991</option>
                            <option >1990</option>
                            <option >1989</option>
                            <option >1988</option>
                            <option >1987</option>
                            <option >1986</option>
                            <option >1985</option>
                            <option >1984</option>
                            <option>1983</option>
                            <option >1982</option>
                            <option >1981</option>
                            <option>1980</option>
                            <option >1982</option>
                            <option >1981</option>
                            <option>1980</option>
                            <option >1979</option>
                            <option >1978</option>
                            <option >1977</option>
                            <option >1976</option>
                            <option >1975</option>
                            <option>1974</option>
                            <option >1973</option>
                            <option >1972</option>
                            <option >1971</option>
                            <option >1970</option>
               </select>
  &nbsp; </p>
		     <p>Age &nbsp;
               <input type="text" size="4" name="age" disabled="disabled">
&nbsp; Sexe &nbsp;
               <select name="sex" >
                 <option >Masculin</option>
                 <option >Feminin</option>
               </select>  
			   &nbsp;Adresse Habituelle<input type="text" size="50" name="adr">
		     </p>
		     <p>
			   Region 
		       <select name="region" >
			              <option >Dakar</option>
						  <option >Thies</option>
						  <option >Matam</option>
						  <option >Ziguinchor</option>
						  <option >Kaolack</option>
						  <option >Tamba</option>
						  <option >St Louis</option>
						  <option >Fatick</option>
						  <option >Podor</option>
						  <option >Autre</option>
			   </select>&nbsp;
					Si autre <input type="text" size="15" name="oregion"> &nbsp;
				Ethnie
				  <select name="e">
				  		<option >Wolof</option>
						<option >Serere</option>
						<option >Diola</option>
						<option >Toucouleur</option>
						<option >Banbara</option>
						<option >Mandingue</option>
						<option >Autre</option>
				 </select>	
				 Si autre <input type="text" size="15" name="oethnie"> &nbsp;		 	   
             </p>
			 <p>
			    	Telephone ou Cellulaire <input type="text" size="20" name="tel">
					Niveau d'instruction
					   <select name="nivo">
					      <option >Absent</option>
						  <option >Langue Nationale</option>
						  <option >Primaire</option>
						  <option >Secondaire</option>
						  <option >Universitaire</option>
					   </select>	  
			</p>		
			<p>
			    Profession <select name="pf">
							  <option >Autre</option>
							  <option >Commercant</option>
							  <option >Cultivateur</option>
							  <option >Eleve,Etudiant</option>
							  <option >Eleveur</option>
							  <option >Enseignant</option>
							  <option >Militaire</option>
							  <option >Ouvrier</option>
							</select>  
				Si autre <input type="text" size="15" name="op"> &nbsp;
				Statut Matrimonial <select name="sm">
							   <option >Celibataire</option>
							   <option >Marie(e)</option>
							   <option >Divorce(e)</option>
							   <option >Veuf(ve)</option>
							        </select>
					<center><input type="submit" value="VALIDER"></center> 							
		</blockquote>
		<br>
		  <?php
			
				 	    //connection au serveur
  $cnx = mysql_connect( "localhost", "root", "" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "hospital" ) ;
    //récupération des valeurs des champs:
 
		
			$num=$_POST["enreg"];
			
			$n=$_POST["n"];
			$p=$_POST["p"];
			
			$year=$_POST["year"];
			$mois=$_POST["mois"];
			$jour=$_POST["jour"];
			$date=$year.$mois.$jour;
			$age=$annees - $year;
			$region=$_POST["region"].'-'.$_POST["oregion"];
		    
			
			$sex=$_POST["sex"];
			$adr=$_POST["adr"];
			
			$ethnie=$_POST["ethnie"].'-'.$_POST["oethnie"];
		
			
			$nivo=$_POST["nivo"];
			$pfs=$_POST["pf"].'-'.$_POST["op"];
			$tel=$_POST["tel"];
			$sm=$_POST["sm"];
			 //création de la requête SQL:
  $sql1 = "INSERT  INTO patient (numP,nomP, prenomP, age,date, sexe, adresse, region, telephone, ethnie, niveau_instruction, profession, statut_matrimonial)
            VALUES ( '$num','$n', '$p', '$age','$date', '$sex', '$adr', '$region', '$tel', '$ethnie', '$nivo', '$pfs', '$sm') " ;
			  //exécution de la requête SQL:
  $requete1 = mysql_query($sql1, $cnx) or die( mysql_error() ) ;
  
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete1)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }

 
			?> 
		<br>
		  
      </form>

il y a deux requetes INSERT car on fait sa deux tables
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
8 juil. 2009 à 21:26
essaye avec

$sql = "INSERT INTO consultation (numP, DateCons, numqui, previsite, modepaiement)
VALUES ( ".$num.", ".$dateCons.", ".$quit.", ".$vis.",".$paiement.") " ;


ou

$sql = "INSERT INTO consultation (numP, DateCons, numqui, previsite, modepaiement)
VALUES ( `".$num."`, `".$dateCons."`, `".$quit."`, `".$vis."`,`".$paiement."`) " ;

Attention, dans le 2eme test c est bien un ` et pas ' :p

tient moi au jus :)
0
merci pour les codes mais aucune des deux requetes ne passent
pour la premiere on a cette erreur(You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 20090709, , ,)' at line 2)
pour la deuxieme on a sa (Unknown column '' in 'field list')
0

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

Posez votre question
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
9 juil. 2009 à 08:17
oulala, j etais fatigué hier soir....

$sql = "INSERT INTO consultation (`numP`, `DateCons`, `numqui`, `previsite`, `modepaiement`)
VALUES ( '".$num."', '".$dateCons."', '".$quit."', '".$vis."','".$paiement."') " ;

attention il y a 3 guillemets Values ( ' ".$num." ' .... mais il ne faut pas mettre les espaces ;)

essai donc ca ;)
0
merci le code que tu m'as passe mais le problème c'est que NumP et DateCons forment une clé primaire pour la table Consultation des que j'ouvre la page il fait un enregistrement dont les valeurs pour la clé primaire sont 0 et 0000-00-00 . Maintenant si je ferme la page et la réouvre il va essayer de faire cet enregistrement 0 et 0000-00-00 ce qui n'est pas possible car la clé primaire doit être unique c'est pourquoi il me signale que la clé primaire ne peut pas dupliquer.
Comment faire pour qu'il n'enregistre pas les valeurs 0 pour NumP et 0000-00-00 pour DateCons?
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
9 juil. 2009 à 14:24
fait un test avant ta requete pour savoir si NumP et DateCons ne sont pas null alors

genre :

if isset($num) and isset($dateCons) {
INSERT ...
}
0
j'ai mis la condition mais il y a toujours cet enregistrement. A
Aurais tu une autre idée pour m'aider a résoudre mon problème?

Merci quand même pour l'aide que tu me fournis pour avancer
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
9 juil. 2009 à 15:55
As tu mis la condition avant tes 2 insert ??
0
j'ai mis sa seulement sur la première requête
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
10 juil. 2009 à 10:12
et ben voila pourkoi il le fait qd meme ;)

met la condition sur les 2 ;)
0
Merci beaucoup sa passe maintenant
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
10 juil. 2009 à 16:42
ok, met ton post en résolu :)
0