Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/08/2007, 02h14   #1
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
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 :
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
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2007, 02h32   #2
Membre éprouvé
 
Avatar de AL1986
 
Inscription : juillet 2007
Messages : 434
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2007
Messages : 434
Points : 401
Points : 401
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 ?
__________________
Citation:
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 ).
AL1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2007, 14h00   #3
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
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 :
1
2
3
 
Resource id #6
Warning: pg_query(): Query failed: ERREUR: Syntaxe en entrée invalide pour l'entier : "Resource id #6" in
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2007, 14h11   #4
Membre éprouvé
 
Avatar de AL1986
 
Inscription : juillet 2007
Messages : 434
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2007
Messages : 434
Points : 401
Points : 401
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 ?
__________________
Citation:
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 ).
AL1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2007, 22h58   #5
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
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
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 00h32   #6
Membre éprouvé
 
Avatar de AL1986
 
Inscription : juillet 2007
Messages : 434
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2007
Messages : 434
Points : 401
Points : 401
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 ?
__________________
Citation:
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 ).
AL1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 13h39   #7
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
c'est marrant car si je fais ça c'est pareil il me balance toujours le meme id
Code :
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.
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 14h17   #8
Membre éprouvé
 
Avatar de AL1986
 
Inscription : juillet 2007
Messages : 434
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2007
Messages : 434
Points : 401
Points : 401
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 :
1
2
3
4
 
pg_last_oid($sql1);
$oid=$sql1;
echo "le dernier ".$oid;
qu'est ce qu'il y a dans $sql1 ?
__________________
Citation:
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 ).
AL1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 18h52   #9
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
le sql1 c'est mon insertion dans la première table.
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 19h05   #10
Membre éprouvé
 
Avatar de AL1986
 
Inscription : juillet 2007
Messages : 434
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2007
Messages : 434
Points : 401
Points : 401
t'as essayé de mettre $n°membre sans quotes ?
__________________
Citation:
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 ).
AL1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 21h07   #11
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
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 :
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
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 21h31   #12
Membre éprouvé
 
Avatar de AL1986
 
Inscription : juillet 2007
Messages : 434
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2007
Messages : 434
Points : 401
Points : 401
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 ?
__________________
Citation:
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 ).
AL1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 22h26   #13
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
Citation:
Envoyé par AL1986 Voir le message
ça a donné quoi ?
j'ai ce test

Code :
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.
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 22h41   #14
Membre éprouvé
 
Avatar de AL1986
 
Inscription : juillet 2007
Messages : 434
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2007
Messages : 434
Points : 401
Points : 401
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).
__________________
Citation:
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 ).
AL1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 23h00   #15
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
ce que je pige pas c'est pourquoi le ne renvoit pas le bon id, ma requet select MAX
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 23h32   #16
Membre éprouvé
 
Avatar de AL1986
 
Inscription : juillet 2007
Messages : 434
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2007
Messages : 434
Points : 401
Points : 401
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.
__________________
Citation:
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 ).
AL1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 09h03   #17
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
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.
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 21h21   #18
Futur Membre du Club
 
Inscription : septembre 2003
Messages : 122
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 122
Points : 18
Points : 18
Envoyer un message via AIM à Burinho
Voilà je viens de trouvé comment faire la réponse était toute bête,

Code :
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].
Burinho est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h00.


 
 
 
 
Partenaires

Hébergement Web