SQL ( un 'select' dans un 'value' ? )
Résolu
Youra87
Messages postés
47
Date d'inscription
Statut
Membre
Dernière intervention
-
Youra87 Messages postés 47 Date d'inscription Statut Membre Dernière intervention -
Youra87 Messages postés 47 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
La question est dans le titre je vais développer quand même ^^
Voila j'ai une table avec 2 clé primaire avec "NumReserv" pour une réservation et "codeObjet" pour l'objet concerné, cette table recensant la quantité.
Je cherche à 'insert' une nouvelle réservation (ça, ça marche!) et la quantité de l'objet concerné dans la même requête voila mon code:
ps: j'ai une classe commande.
$req = " insert into reservation values (' "/*Ici NumReserv auto-incrémenté*/" ',
' ".$this->com_orga." ',' ".$this->com_datedeb."','".$this->com_datefin."',' ',' ')
select max(NumReserv) from reservation
insert into quantite values (' ".$this->com_objet." ',
' "/*ICI le resultat de la requête select*/" ',
' ".$this->com_quantite." ',' ',' ')";
Voila c'est à partir de 'select' que ça marche pas :) si quelqu'un peut me donner uncoup de pousse merci d'avance.
Bonne journée.
ah je viens de pensé à une solution alternative sans doute plus compliqué :
creer un attribue dans ma classe appelé NumdeReserv et qui prendrai la valeur de de la requéte ' select max(NumReserv) from reservation ' + 1
comme la réservation n'ai pas encore créé. ... enfin si il y a plus direct ... merci ;)
La question est dans le titre je vais développer quand même ^^
Voila j'ai une table avec 2 clé primaire avec "NumReserv" pour une réservation et "codeObjet" pour l'objet concerné, cette table recensant la quantité.
Je cherche à 'insert' une nouvelle réservation (ça, ça marche!) et la quantité de l'objet concerné dans la même requête voila mon code:
ps: j'ai une classe commande.
$req = " insert into reservation values (' "/*Ici NumReserv auto-incrémenté*/" ',
' ".$this->com_orga." ',' ".$this->com_datedeb."','".$this->com_datefin."',' ',' ')
select max(NumReserv) from reservation
insert into quantite values (' ".$this->com_objet." ',
' "/*ICI le resultat de la requête select*/" ',
' ".$this->com_quantite." ',' ',' ')";
Voila c'est à partir de 'select' que ça marche pas :) si quelqu'un peut me donner uncoup de pousse merci d'avance.
Bonne journée.
ah je viens de pensé à une solution alternative sans doute plus compliqué :
creer un attribue dans ma classe appelé NumdeReserv et qui prendrai la valeur de de la requéte ' select max(NumReserv) from reservation ' + 1
comme la réservation n'ai pas encore créé. ... enfin si il y a plus direct ... merci ;)
A voir également:
- SQL ( un 'select' dans un 'value' ? )
- Logiciel sql - Télécharger - Bases de données
- Blob sql ✓ - Forum Webmastering
- Sql (+) - Forum Programmation
- Please select boot device - Forum Windows 7
- Sql lister les tables ✓ - Forum Programmation
2 réponses
il faut récupérer le dernier id inséré
https://www.php.net/manual/fr/function.mysql-insert-id.php
ou si tu utilises PDO
https://www.php.net/manual/fr/pdo.lastinsertid.php
https://www.php.net/manual/fr/function.mysql-insert-id.php
ou si tu utilises PDO
https://www.php.net/manual/fr/pdo.lastinsertid.php
J'ai trouvé la solution que je comprends (heureusement) mais que je trouve pas çsuper simple car j'ai fait 3 $req quelqu'un peut m'expliqué comment simplifié, genre tout faire dans un seul $req ^^ merci quand même.
Voila la fonction finale:
public function create()
{
include "connexion.php";
$req = "insert into reservation values(' #NumReserv auto incrementé# ',
' ".$this->com_orga." ',' ".$this->com_datedeb." ',
' ".$this->com_datefin." ',' ',' ')";
$pdo->exec($req);
$req = "select max(NumReserv) from reservation";
$stmt = $pdo->query($req);
$ligne = $stmt->fetch();
echo $ligne['max(NumReserv)']; //pas utile ça ^^
$req = "insert into quantite values(' ".$this->com_objet." ',
' ".$ligne['max(NumReserv)']." ',' ".$this->com_quantite." ',' ',' ')";
$nblignes=$pdo->exec($req);
if ($nblignes != 1)
{
echo "Erreur";
}
}
Voila la fonction finale:
public function create()
{
include "connexion.php";
$req = "insert into reservation values(' #NumReserv auto incrementé# ',
' ".$this->com_orga." ',' ".$this->com_datedeb." ',
' ".$this->com_datefin." ',' ',' ')";
$pdo->exec($req);
$req = "select max(NumReserv) from reservation";
$stmt = $pdo->query($req);
$ligne = $stmt->fetch();
echo $ligne['max(NumReserv)']; //pas utile ça ^^
$req = "insert into quantite values(' ".$this->com_objet." ',
' ".$ligne['max(NumReserv)']." ',' ".$this->com_quantite." ',' ',' ')";
$nblignes=$pdo->exec($req);
if ($nblignes != 1)
{
echo "Erreur";
}
}
Modif:
$req = "insert into reservation values(' ','".$this->com_orga."',
'".$this->com_datedeb."','".$this->com_datefin."',' ',' ')
".$NumIncr= mysql_insert_id()."
insert into quantite values('".$this->com_objet."',
'".$NumIncr."','".$this->com_quantite."',' ',' ')";
fais les unes après l'autre tes requetes
là tu as inséré un enrgistrement donc tu peux récupéré le dernier id
et ensuite faire ta requete suivante
ça marche merci ;)