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

PostgreSQL Discussion :

inserrer un id dans une autre table


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut inserrer un id dans une autre table
    Bonjour,

    je souhaite récuperer l'id d'une table afin de l'inserrer dans une autre table.

    j'ai essayé ça mais sans trop de succes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql2=pg_query($conn,"Select MAX(n°_membre) from membres");
    $n°_membre=$sql2;
    $sql3= pg_query($conn, "INSERT INTO profil(n°_membre ,login, password, profil)
    VALUES('$n°_membre','$login', '$password', '$profil')");

    merci de votre aide

  2. #2
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par Burinho Voir le message
    j'ai essayé ça mais sans trop de succes
    Est-ce que t'as une erreur, laquelle ?
    Est-ce que les autres champs (à part n°membre) sont insérés ou pas ?
    Qu'est ce qui se passe exactement ?
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par AL1986 Voir le message
    Est-ce que t'as une erreur, laquelle ?
    Est-ce que les autres champs (à part n°membre) sont insérés ou pas ?
    Qu'est ce qui se passe exactement ?
    il me dit ceci exactement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Resource id #6
    Warning: pg_query(): Query failed: ERREUR: Syntaxe en entrée invalide pour l'entier : "Resource id #6" in

  4. #4
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    As tu essayé de n'éxecuter que la prmière requête ?
    D'afficher la valeur de n°membre après l'éxecution de la première ?
    De n'exécuter que la deuxième en spécifiant explicitement la valeur de n°membre ?
    De faire un test booléen sur l'égalité de la valeur contenu dans n°membre avec celle qu'il devrait normalement contenir ?
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par AL1986 Voir le message
    As tu essayé de n'éxecuter que la prmière requête ?
    de toute manière les requete s'éxecute les une aprèes les autre, je vois pas trop.]
    Citation Envoyé par AL1986 Voir le message
    D'afficher la valeur de n°membre après l'éxecution de la première ?
    oui il m'affiche bien est résultat mais qui ne correspond pas au numeros de l'insertion.

    en faisant le test plusieur fois il m'affiche toujours le meme id.


    De n'exécuter que la deuxième en spécifiant explicitement la valeur de n°membre ?
    De faire un test booléen sur l'égalité de la valeur contenu dans n°membre avec celle qu'il devrait normalement contenir ?[/QUOTE]

    ça j'ai pas fais, mais je vais le tester

  6. #6
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par Burinho
    oui il m'affiche bien est résultat mais qui ne correspond pas au numeros de l'insertion.
    Cela veut-il dire que la valeur retournée par la première requête est erronée ?
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut
    c'est marrant car si je fais ça c'est pareil il me balance toujours le meme id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pg_last_oid($sql1);
    $oid=$sql1;
    echo "le dernier ".$oid;
    je me demande si c'est pa le fait que j'ai supprimer des enregistrement sur la table via pgadmin, qui fous le bordel.

    est ce qu'il y a un moyen de remettre le compteur id à 0.

  8. #8
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par Burinho Voir le message
    c'est marrant car si je fais ça
    ça quoi ?
    Citation Envoyé par Burinho Voir le message
    c'est pareil il me balance toujours le meme id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pg_last_oid($sql1);
    $oid=$sql1;
    echo "le dernier ".$oid;
    qu'est ce qu'il y a dans $sql1 ?
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut
    le sql1 c'est mon insertion dans la première table.

  10. #10
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    t'as essayé de mettre $n°membre sans quotes ?
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par AL1986 Voir le message
    Est-ce que t'as une erreur, laquelle ?
    Est-ce que les autres champs (à part n°membre) sont insérés ou pas ?
    Qu'est ce qui se passe exactement ?
    tu veux dire comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql3= pg_query($conn, "INSERT INTO profil(n°_membre ,login, password, profil) VALUES($n°_membre,'$login', '$password', '$profil')");
    car là j'ai ce super message Warning: pg_query(): Query failed: ERREUR: syntax error sur ou près de «id» at character 72 in

  12. #12
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par Burinho Voir le message
    Citation Envoyé par AL1986
    De n'exécuter que la deuxième en spécifiant explicitement la valeur de n°membre ?
    De faire un test booléen sur l'égalité de la valeur contenu dans n°membre avec celle qu'il devrait normalement contenir ?
    ça j'ai pas fais, mais je vais le tester
    ça a donné quoi ?
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par AL1986 Voir le message
    ça a donné quoi ?
    j'ai ce test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql3= pg_query($conn, "INSERT INTO profil(n°_membre ,login, password, profil) VALUES(54,'$login', '$password', '$profil')");
    if(n°_membre==54){
    echo "n°_membre vaut  54";
    }else { echo "echec". $n°_membre;}
    l'insertion se fait correctement, par contre le test booléen ne fonctionne pas mais après réflexion c'est normal car n°membres est une colonne du insert into et non une variable php.

  14. #14
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Je ne vois pas trop où la requête pourrait coincée. Sinon peut être qu'après chaque requête il faut fermer la connection puis la réouvrir (je sais pas trop).
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut
    ce que je pige pas c'est pourquoi le ne renvoit pas le bon id, ma requet select MAX

  16. #16
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par Burinho Voir le message
    ce que je pige pas c'est pourquoi le ne renvoit pas le bon id, ma requet select MAX
    Qu'est cencé faire cette fonction : pg_last_oid
    Il renvoie quoi à la place.
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 143
    Points
    143
    Par défaut
    pg_last_oid renvoit l'OID de la dernière ligne insérée dans la table. L'OID est un identifiant système qui ne devrait pas être utilisé lors d'une utilisation courante. D'ailleurs, cet OID n'est plus généré par défaut dans les tables utilisateurs. Voir http://fr.php.net/manual/fr/function.pg-last-oid.php pour plus d'infos.

    Le fait d'avoir supprimé des lignes à partir de pgAdmin ne peut pas avoir « foutu le bordel ».

    Ton code à la base était celui-ci :

    $sql2=pg_query($conn,"Select MAX(n°_membre) from membres");
    $n°_membre=$sql2;
    $sql3= pg_query($conn, "INSERT INTO profil(n°_membre ,login, password, profil)
    VALUES('$n°_membre','$login', '$password', '$profil')");

    pg_query ne fait qu'exécuter la requête et te renvoyer un identifiant de résultat. Il te faut utiliser cet identifiant avec d'autres fonctions, comme pg_fetch_row pour récupérer les résultats. Voir la page http://fr.php.net/manual/fr/function.pg-query.php pour un exemple.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Points : 44
    Points
    44
    Par défaut
    Voilà je viens de trouvé comment faire la réponse était toute bête,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    / On recupère l' ID generer auto par le SGBD
    $sql2=pg_query($conn,"Select MAX(n°_membre) from membres");
    $oid=pg_fetch_array($sql2);
    après il suffit d'inserrer dans un inert into la variable $oid[0].

Discussions similaires

  1. [ODBC] Récupération d'une donnée pour insertion dans une autre table
    Par rom950 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 17h13
  2. Selection d'une valeur dans une autre table
    Par beurnoir dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 12h02
  3. order by "un-champ-dans-une-autre-table"
    Par SnakeBoudoir dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/03/2005, 10h55
  4. Numero non present dans une autre table
    Par AlphonseBrown dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/02/2005, 12h37
  5. copier une ligne dans une autre table
    Par BoeufBrocoli dans le forum SQL
    Réponses: 5
    Dernier message: 24/10/2003, 22h59

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