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 :

Récupérer la clé primaire d'une table et l'insérer dans une autre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut Récupérer la clé primaire d'une table et l'insérer dans une autre
    Bonjour,

    Voici mon probleme :
    soit une table identite :
    soit une table ville :
    Je veux donc récuperer le cle primaire du champ ville et l'inserer dans la table identite lors de la selection de la ville grace une liste deroulante

    si je fais un echo sur $id_ville il est bien recupere mais dans insert into il ne l'insert pas ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    <?
     
        include("./include/common_inc.php");
     
        require('connexion.php');
     
    ?>
     
    <?php
     
    // On récupére les champs
     
    if(isset($_POST['nom_ide']))      $nom=$_POST['nom_ide'];
     
    else      $nom="";
     
     
     
    if(isset($_POST['prenom_ide']))      $prenom=$_POST['prenom_ide'];
     
    else      $prenom="";
     
     
     
    if(isset($_POST['date_naissance_ide']))      $date_naissance=$_POST['date_naissance_ide'];
     
    else      $date_naissance="";
     
     
     
    if(isset($_POST['lieu_naissance_ide']))      $lieu_naissance=$_POST['lieu_naissance_ide'];
     
    else      $lieu_naissance="";
     
     
     
    if(isset($_POST['adresse_ide']))      $adresse=$_POST['adresse_ide'];
     
    else      $adresse="";
     
     
     
    if(isset($_POST['nom_ville']))      $ville=$_POST['nom_ville'];
     
    else      $ville="";
     
     
     
    $req = "SELECT id_ville FROM ville WHERE nom_ville='$ville'";
    $result = mysql_query($req) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
    $id_ville = mysql_fetch_array($id_ville);
     
    // On vérifie si les champs sont vides
     
    if(empty($nom) OR empty($prenom)OR empty($ville))
     
        {
     
        echo '<font color="red">Attention, seul les champs <b>date naissance, lieu naissance, adresse</b> peuvent rester vide !</font>';
     
        }
     
            // Aucun champ n'est vide, on peut enregistrer dans la table
     
    else     
     
        {
     
     
     
        // on écrit la requête sql
     
        $sql = "INSERT INTO identite(id_ide, nom_ide, prenom_ide, date_naissance_ide, lieu_naissance_ide, adresse_ide, id_ville) VALUES('','$nom','$prenom','$date_naissance','$lieu_naissance','$adresse','$id_ville')";
     
     
     
        // on insère les informations du formulaire dans la table
     
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
     
     
        // on affiche le résultat pour le visiteur
     
        echo ' Infos sont sauvegardées.';
     
     
     
        mysql_close();  // on ferme la connexion
     
        } 
     
    ?>

  2. #2
    Membre régulier
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 86
    Points
    86
    Par défaut
    Ton problème vient du code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $req = "SELECT id_ville FROM ville WHERE nom_ville='$ville'";
    $result = mysql_query($req) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
    $id_ville = mysql_fetch_array($id_ville);
    qui devrait plutôt ressembler à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $req = "SELECT id_ville FROM ville WHERE nom_ville='" . $ville . "'";
    $result = mysql_query($req) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
    if ($result_ville = mysql_fetch_array($result)) // $result, pas $id_ville qui ne correspond à rien
      $id_ville = $result_ville['id_ville']; // récèpure id_ville dans le tableau résultat
    Normalement, tu aurais du avoir des messages d'erreur pour ce type de problème.
    Je te conseille vivement de commencer ton code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ini_set('display_errors', 'On'); // ou '1' ?
    error_reporting(E_ALL);

  3. #3
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    y a un soucis, tu mets

    $id_ville = mysql_fetch_array($id_ville);

    faut mettre

    $record = mysql_fetch_array($result);
    $id_ville = $record['id_ville'];

    c'est bizarre que mysql_fetch_array ait pas gueulé pasque c'est pas une ressource correcte




    edit : grillé
    Dia [ Page DVP ] [ Site pro ]

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup cela fonctionne maintenant, je vais pouvoir faire la suite.

    Cependant j'aurais souhaité avoir une explication sur
    WHERE nom_ville='" . $ville . "'";
    et non pas WHERE nom_ville='$ville'";

    Merci d'une lumière car j'avais pris exemple dans un livre !

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par dorian67
    Cependant j'aurais souhaité avoir une explication sur
    WHERE nom_ville='" . $ville . "'";
    et non pas WHERE nom_ville='$ville'";
    Le résultat sera le même puisque les variables situées dans une chaîne délimitée par des doubles quotes sont interpolées (remplacées par leur valeur). Donc ici la concaténation n'est pas vraiment utile. Je vous renvoie au tutoriel intitulé Apostrophes ou guillemets : lesquels choisir ? qui vous permettra de bien comprendre ces différences.


    Julp.

  6. #6
    Membre régulier
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par dorian67
    Cependant j'aurais souhaité avoir une explication sur
    WHERE nom_ville='" . $ville . "'";
    et non pas WHERE nom_ville='$ville'";
    Fais un tour du côté de la FAQ

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Merci pour tous ces informations !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche dans une chaîne des codes contenus dans une table
    Par funkyjul dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/07/2011, 08h28
  2. Réponses: 4
    Dernier message: 05/05/2011, 13h46
  3. Réponses: 2
    Dernier message: 03/04/2010, 22h32
  4. Réponses: 3
    Dernier message: 07/08/2009, 11h59
  5. Réponses: 4
    Dernier message: 22/05/2007, 14h42

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