Php: Duplicata du champ '0' pour la clef 1

Résolu/Fermé
simou - 22 févr. 2012 à 10:28
 simou - 22 févr. 2012 à 11:56
Bonjour,
j'ai un fichier txt que je doit insérer son contenu dans la base mysql à table architecte
ce fichier contient le id et le nom de l'architecte.
je doit insérer le nom et le id si il n'existe pas dans la table et dans le cas ou il existe juste un simple update voila mon script :
<?php
    require_once("xx/db_connect.inc.php");
	require_once('xx/xxx.php'); 

	$connexion=db_connexion();	
	
	 mysql_query("set names utf8");	
	

// Connexion db 

$fichier_ouvrir = @fopen("permis.txt", "r");
if ($fichier_ouvrir) {
    while (!feof($fichier_ouvrir)) {
        $var_id= rtrim(fgets($fichier_ouvrir, 11));
		$var_titre_archt= rtrim(fgets($fichier_ouvrir, 200));
       
	    $sql= mysql_query("select * from architecte1 where id_archi='$var_id'") or die('Erreue: ' . mysql_error() . "<br />\n$sql"); 
		
		if (mysql_num_rows($sql) >=1)
        {			     
		  
		 $req="DELETE from architecte1 where id_archi='$var_id'";
		
	     $req="INSERT INTO architecte1 (id_archi,titre_archi) VALUES ('$var_id','$var_titre_archt')";
	     
         $req=mysql_query ("$req")or die(mysql_error());    
		 
		// $req = sprintf("INSERT INTO architecte1 VALUES ('%s', '%s');", mysql_real_escape_string($var_id), mysql_real_escape_string($var_titre_archt));
         //mysql_query($req) or die ('Erreur SQL ! Sur la requête $req<br />'.mysql_error());
	
		 }  
  else
{
  	     $req="INSERT INTO architecte1 (id_archi,titre_archi) VALUES ('$var_id','$var_titre_archt')";
	     
         $req=mysql_query ("$req")or die(mysql_error());  
}
	
		   
}
 fclose($fichier_ouvrir); 
 
 }
 
// Fermeture DB
?>

Le probleme c en executant ce script l'insertion ce fait seulement en 1er enregistrement et avec le msg d'erreur : Duplicata du champ '0' pour la clef 1
NB: le champs id_archt est un clé primaire mais pas auto-incrément parce que les id de l'architecte suivant le fichier
Qui peut m'aider a résoudre ce problème?? c'est très urgent s'il vous plais !
A voir également:

1 réponse

tito23 Messages postés 305 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 janvier 2013 4
22 févr. 2012 à 11:55
Comme je t'ai dit dans l'autre poste il faut prendre lla valeur entière de $var_id
 $req="INSERT INTO architecte1 (id_archi,titre_archi) VALUES (".intval($var_id).",'$var_titre_archt')";
0
oui c ca ;) merci encore
0