Vérifier la clé primaire dans la base!

Résolu/Fermé
glee89 Messages postés 21 Date d'inscription mardi 31 juillet 2012 Statut Membre Dernière intervention 19 juin 2013 - 19 juin 2013 à 10:54
glee89 Messages postés 21 Date d'inscription mardi 31 juillet 2012 Statut Membre Dernière intervention 19 juin 2013 - 19 juin 2013 à 18:17
S'il vous plait, aidez-moi à palier à ce problème:
Désolé, ce matricule existe déja dans la base!
Warning: mysql_fetch_array(): 5 is not a valid MySQL result resource in C:\Program Files (x86)\EasyPHP-5.3.9\www\Sites\InsertEtudiant.php on line 65
Erreur SQL !INSERT INTO 'etudiant'('matricule', 'nom', 'prenom', 'datenaiss', 'lieunaiss', 'contact') VALUES("5863H","DOH","Joel","1990-09-10","Tabou","05132413")
Aucune base n'a été sélectionnée

Voici le code dont on fait reférence:
<?php
		       //On se connecte
		    connectToDB() ;
		   
		       //On prépare la requête
		    $sql = 'SELECT * FROM etudiant' ;
		 
		       // On lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas (or die)
		    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()) ;
			
		       // Au fait ces lignes nous permettrons de verifier si l'étudiant ajouté
		       // ne figure pa deja dans la base.
		       //Boucle
		    while ($data = mysql_fetch_array($req))
		    {
		        $verif = $data['matricule'] ;
		        if($verif == $matricule)
			    {
			        echo'<span style="color:#ff0000;"> Désolé, ce matricule existe déja dans la base! </span>' ;
				 
				       //On libère la mémoire mobilisée pour cette requête dans sql!
				    mysql_free_result($req) ;
				  
				       // On ferme sql
				    mysql_close() ;
					
					$form = true ;
			    }
				else
				{
				    continue ;
				}
		    }
		       //On prépare la commande sql d'insertion
		    $sql = 'INSERT INTO 'etudiant'('matricule', 'nom', 'prenom', 'datenaiss', 'lieunaiss', 'contact') VALUES("'.$matricule.'","'.$nom.'","'.$prenom.'","'.$datenaiss.'","'.$lieunaiss.'","'.$contact.'")' ;
		 
		     /*on lance la commande (mysql_query) et au cas où,
		       on rédige un petit message d'erreur si la requête ne passe pas (or die)
		       (Message qui intègrera les causes d'erreur sql)*/
		    mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
		 
		       // on ferme la connexion
		    mysql_close() ;
		 
		    echo("Insertion reussie!") ;
			$form = false ;
?>
A voir également:

2 réponses

jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
19 juin 2013 à 14:27
Salut !

Matricule est une clé primaire, cela veut dire que tu nepeux pas avoir deux fois le même.
Et donc à un moment tu essayes d'ajouter une ligne où le matricule existe déjà donc erreur
0
glee89 Messages postés 21 Date d'inscription mardi 31 juillet 2012 Statut Membre Dernière intervention 19 juin 2013
19 juin 2013 à 18:15
ok! merci!
j'ai eu une ligne de code sur un site qui résolu le problème. et la voici:
$sql = mysql_num_rows(mysql_query('SELECT * FROM etudiant where matricule="'.$matricule.'"')) ;

Comme ça je suis dans la table sans que j'utilise une boucle tantque.
0
glee89 Messages postés 21 Date d'inscription mardi 31 juillet 2012 Statut Membre Dernière intervention 19 juin 2013
19 juin 2013 à 18:17
Problème résolu! Merci beaucoup à tous!
0