Controle doublons et champs existants insertion mysql

WRInaute discret
Bonjour

Voici mon probleme :

J'ai 3 tables :

tbl_acteurs , tbl_acteurs_fiche, tbl_fiche


Je veux par le biais d'un formulaire inserer des données dans ces trois tables , jusque la rien de compliqué si ce n'est que je veux controler les champs et les doublons en meme temps !

J'ai ceci dans mon fichier insertion.php :



A savoir que j'ai 6 champs acteurs dans mon formulaire mais il se peut qu'il ne soit pas tous rempli et qu'il existe déja dans la table acteurs ....


Je récupére dabbord lID fiche de l'insert précendent :
$id_fiche = mysql_insert_id();



je vérifier si le champs est rempli
if ($nom_acteurs1)
{


je vérifie si l'acteur existe déja dans la table acteurs
$sql = "SELECT id_acteurs FROM tbl_acteurs WHERE nom_acteurs='$nom_acteurs1'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$row= mysql_fetch_array($req);

$id_acteurs = htmlentities(StripSlashes($row["id_acteurs"]));

si il existe : j'ajoute juste son ID dans la table acteurs_fiche
if($row==$nom_acteurs1)
{
$sql = "insert into tbl_acteurs_fiche(id_acteurs_fiche, id_acteurs, id_fiche) values(\"\",\"$id_acteurs\",\"$id_fiche\")";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}

Sinon je crée un enregistrement dans la table acteur , je recupere lid et je l'insere dans tbl_acteurs_fiche
else
{
$sql = "insert into tbl_acteurs(id_acteurs, nom_acteurs) values(\"\",\"$nom_acteurs1\")";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$id_acteurs = mysql_insert_id();
$sql = "insert into tbl_acteurs_fiche(id_acteurs_fiche, id_acteurs, id_fiche) values(\"\",\"$id_acteurs\",\"$id_fiche\")";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}

}





if ($nom_acteurs2)
{

$sql = "SELECT id_acteurs FROM tbl_acteurs WHERE nom_acteurs='$nom_acteurs2'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$row= mysql_fetch_array($req);

$id_acteurs = htmlentities(StripSlashes($row["id_acteurs"]));



if($row==$nom_acteurs2)
{
$sql = "insert into tbl_acteurs_fiche(id_acteurs_fiche, id_acteurs, id_fiche) values(\"\",\"$id_acteurs\",\"$id_fiche\")";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}
else
{
$sql = "insert into tbl_acteurs(id_acteurs, nom_acteurs) values(\"\",\"$nom_acteurs2\")";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$id_acteurs = mysql_insert_id();
$sql = "insert into tbl_acteurs_fiche(id_acteurs_fiche, id_acteurs, id_fiche) values(\"\",\"$id_acteurs\",\"$id_fiche\")";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}

}


.................
...............
...............
...........


Bien "évidemment ca fonctionne pas comme je veux !

Si quelqu'un peut m'aider ...
Merci par avance
 
WRInaute passionné
Impossible de se plonger dans ton code...
Morcèle le et identifie plus précisement la partie qui bug...

Au début j'ai vu ça :

Je récupére dabbord lID fiche de l'insert précendent :
$id_fiche = mysql_insert_id();

Il me semble que le mysql_insert_id() n'est disponible qu'apres un insert..
ici il doit retourner false...
 
WRInaute occasionnel
moi je te conseil pour savori si la variable existe dutilisé

isset()

Code:
if(isset($variable))


attention si la variable issu d un formulaire


Code:
  $_REQUEST[variable]




  (= $variable )
 
WRInaute discret
Ok pour la vérification du champs mais le probleme vient surtout du controle de l'existence de l'enregistrement dans ma table mysql , d'ou le select du début !

Le insert du début signifie qu'on le récupere apres un enregistrement que je n'ai volontairement pas mis dans le code puisque ca ne sert a rien dans le cas présent


Il faut juste combiner le controle du champ rempli et l'existence de l'enregisrement et procéder aux actions necessaires selon le résultat du select .


Max
 
Discussions similaires
Haut