Ajout d'une clé étrangère en php

cloddy07 Messages postés 4 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 13 avril 2007 - 12 avril 2007 à 01:13
 berrekia - 2 août 2012 à 16:06
Bonjour a tous,

j'ai réalisé un site internet en php, pour un office du tourisme.

Dans ma partie administrateur, je rencontre quelque problème avec les tables qui possède des clés étrangère. En effet, je fait afficher dans ma liste déroulante le libéllé du type d'association, cependant il faut qu'a partir de ce libellé je récupère le numéro type.

Pour cela j'ai donc fait :
if (isset($_POST['asso']))
 {
  mysql_connect("localhost","root","");
  mysql_selectdb("office du tourisme");
 //récupération des données saisies
  $libel= $_POST['asso'];
  $presi=$_POST['pres'];
  $tele=$_POST['tel'];
  $type=$_POST['liste'];//liste représente ce que j'ai selectionner dans ma liste déroulante
 //calcul de la clé primaire (auto)
  $sql='select max(`nasso`) from `association`';
  $res=mysql_query($sql);
  $tab=mysql_fetch_array($res);
  $num=$tab[0] + 1;
 //récup les libélle type pour les transformés par le code
  $req=' select `ntypeasso` from `typeasso `where `libelletypeasso`="$type"';
  $id =mysql_query($req);
  $tab=mysql_fetch_array($id);
  $ntype=$tab[0];

Cependant lorsque je fait mon insert :
  $sql="insert into `association` values ($num,'$libel','$presi','$tele','$ntype')";

rien ne s'affiche dans la partie ntype, je ne sais vraiment plus comment faire, je suis dépasser et j'avoue, je commence à déprimer serieusement.

SI QUELQU'UN PEUT M'AIDER SVP N'HESITER PAS

merci cloddy

5 réponses

cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
12 avril 2007 à 22:12
Bonjour,

pourquoi ces quotes, et non pas:
$sql="insert into 'association' values($num, $libel, $presi, $tele, $ntype)";

ensuite tu peux tester ta variable dans une boite d'alerte javascript:
echo"<script type='text/javascript'>alert(".$ntype.")</script>";
auquel cas ce serait ta liste qui est mal formée (valeur, libellé)

sinon au pire tu peux toujours définir $ntype en constante, ou lui affecter une valeur dans ton script,
ce qui te permettra de tester l'enregistrement des données.
0
cloddy07 Messages postés 4 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 13 avril 2007
13 avril 2007 à 00:02
voila ce que j'ai maintenant, la clé étrangère n'est plus du tout prise en compte dans l'insert
J'ai déjà essayer de définir $ntype en constante, cela ne marche pas non plus.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\phpoffice\admin\ajouterasso.php on line 58


insert into 'association' values(39, kkkkkkkkkk, kkkkkkkk, kkkkkkkkkk, )*echec de la creation

Serait-il possible que ce soit WAMP5 qui créer des problèmes, car c'est depuis que j'ai changer ma base de donnée d'ordinateur???

en tout cas merci
cloddy
0
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
13 avril 2007 à 19:23
euh, elle est où ta FK déjà ? (la clé étrangère)

également ton calcul pour la clé primaire est inutile, dans le sens où il suffirait (et serait plus correct) de la définir en auto-incrément dans ta table (auquel cas tu n'as plus besoin de la spécifier).
et pour l'erreur fetch_array, çelà vient certainement du fait que tu présentes 4 champs dans ton bout de code, alors qu'il devrait y en avoir 5 (à éviter la virgule en fin - erreur-, si ton champ doit être vide alors mets lui des quotes '')
soit: insert into 'association' values (39, 'kkkk', 'kkkk', 'kkkk', 'kkkk','')
sous réserve que ces valeurs soient conformes à celles attendues dans la table, et que le nombre de champs soit correct
0
Ryad
0

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

Posez votre question
Bonjour,

En fait j'ai le meme probleme depuis un moment je n'arrive à le resoudre.
J'ai trois tables
1)Customers (PK CustomerName,Phone....)
2)Persons (pk Idperson,Name,......
3)Project(Pk IdProject,fk CustomerName,fkIdperson,........)

Je fais l'insertion des customers depuis la page d'accueil (add new customer) et j'envoie la clé primaire dans une liste deroulante dans le formulaire project.php
===========================================
echo "<fieldset><legend> Customer Name </legend>";
$connet = mysql_connect('localhost', 'root', 'aero') OR die('connection error');
mysql_select_db('manageproject1') ;
echo "<tr>";
echo "<td>";
echo "Customer:";
echo "</td>"; echo "<td>";
//dynamically populate the project customer drop down list from the "customers" table
$client= "SELECT CustomerName FROM customers
ORDER BY CustomerName";
$execlient = mysql_query ($client) or die (mysql_error());
echo "<select name='list' id='list' class='bgfield' >";
echo "<option ></option>";
while($clientarray=mysql_fetch_array($execlient))
{
echo "<option value=$clientarray[CustomerName]>$clientarray[CustomerName]</option>";
//$_SESSION['CustomerName']=$clientarray[CustomerName];
}
echo "</select>";
echo "</td>";
echo "</tr>";
echo "</fieldset>";
?>
=========================================
le code dessus foncionne normale

J'ai un probleme comment j'insert la clé etrangere (CustomerName) qui est le resultat des la liste derouloute dans la table project
voila mes requetes:
===========================================
$link= mysql_connect('localhost', 'root', '') OR die('connection error');
mysql_select_db('manageproject1');
$query="INSERT INTO persons VALUES ('','$name','$mail','$NDAperson')";
$result2 = mysql_query($query,$link);
$IdPerson = mysql_insert_id($link);

$query="Select CustomerName from customers where CustomerName='$clientarray[CustomerName]'";
$query="INSERT INTO projects VALUES ('','$CustomerName','$IdPerson','$FolderNumber','$NameSubject','$ATA','$Program','$StartDate','$EndDate','$WpNumber','$NDAProject','$ProjectState','$ProjectComment')";
$result3 = mysql_query($query,$link);

die (' <he>Last inserted Project has id number : '.mysql_insert_id().'</h2> '.$NameSubject.'/ATA:'.$ATA.'/'.$Program.'
, managed by :'.$name.'

Customer Name is :'.$CustomerName.'');
=============================================
Je vous remercie pour vos aides par avance :)
0
Rejoignez-nous