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   -
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 ;)
A voir également:

2 réponses

maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
1
Youra87 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   11
 
Merci de ta réponse mais mysql_insert_id() me retourne 0 citation cours '"0 si la dernière requête n'a pas généré de valeur AUTO_INCREMENT" alors je ne comprend pas, je peux faire une déclaration de variable au milieu d'une requête comme je viens de faire, ai-je bien utilisé la fonction ? Merci d'avance maka54
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."',' ',' ')";
0
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
tu fais n'importe quoi ...

fais les unes après l'autre tes requetes
$req =mysql_query( "insert into reservation values(' ','".$this->com_orga."',
'".$this->com_datedeb."','".$this->com_datefin."',' ',' ') ");


là tu as inséré un enrgistrement donc tu peux récupéré le dernier id

$NumIncr =mysql_insert_id();


et ensuite faire ta requete suivante

$req =mysql_query( "insert into quantite values('".$this->com_objet."',
'".$NumIncr."','".$this->com_quantite."',' ',' ')");
0
Youra87 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   11
 
Ah ouais ... tu vois c'est la première fois que j'écris plus d'une requête ça fais seulement depuis mi-janvier que j'suis en formation informatique alors dsl pour le "n'importe quoi" XD

ça marche merci ;)
0
Youra87 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   11
 
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";
}
}
0