IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

ajout d'une entrée et clé étrangère


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut ajout d'une entrée et clé étrangère
    Bonjour à tous.
    J'ai vu le post de aboura86 et j'ai cru que ça aurait pu m'aider, mais nous n'avons pas exactement le même problème.
    Pour ma part, j'ai aussi deux tables liées. Quand je veux rajouter une entrée dans la seconde (tabinscriptions), il faut que je dispose de la clé étrangère. Cette clé n'étant autre que la clé primaire de la première table (tabindividus).
    Je lance une requête pour retrouver cette clé. Et je la stocke dans une variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $querynum=mysql_query("SELECT IDindividu FROM tabindividus where Nom='$nom' and Prenom='$prenom'") or die('echec récupération du numero de l individu');
    	//Sauvegarde du résultat de la requête dans une variable en vue du prochain affichage
    	$numindividu=mysql_fetch_array($querynum);
    .
    Je coince au moment de l'insertion de l'entrée dans la seconde table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO tabinscriptions VALUES('', '0', '0', '0', '0', '0', '0', '0','0','0','$numindividu['IDindividu']')") or die(mysql_error());
    Le message d'erreur annoncé quand je génère la page est:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\traitement_formulaire.php on line 70

    Comment dois-je passer le dernier paramètre de l'insertion?
    Quand je spécifie directement la valeur de la clé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO tabinscriptions VALUES('', '0', '0', '0', '0', '0', '0', '0','0','0','000000021')") or die(mysql_error());
    , j'obtiens ceci:
    Cannot add or update a child row: a foreign key constraint fails (`bd/tabinscriptions`, CONSTRAINT `tabinscriptions_ibfk_1` FOREIGN KEY (`IDindividu`) REFERENCES `tabindividus` (`IDindividu`) ON DELETE CASCADE ON UPDATE CASCADE)

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    je pense que c'est mieux d'écrire ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO tabinscriptions VALUES('', '0', '0', '0', '0', '0', '0', '0','0','0','".$numindividu['IDindividu']."')") or die(mysql_error());
    Pour ma part j'utilise rarement les doubles quotes. Le double quote coûte généralement plus cher au serveur, car il doit à chaque fois faire la recherche de variables. De plus c'est visiblement le fait que tu utilises un tableau qui le dérange.


Discussions similaires

  1. Ajout d'une entrée dans une table Access
    Par Blade76 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/12/2009, 15h36
  2. Réponses: 1
    Dernier message: 20/08/2007, 10h43
  3. [Tableaux] Comment ajouter/supprimer une entrée d'un array
    Par dessinateurttuyen dans le forum Langage
    Réponses: 7
    Dernier message: 09/08/2006, 16h05
  4. Ajout d'une entrée dans un menu contextuel
    Par olive_le_malin dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 08/06/2006, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo