SQL ( un 'select' dans un 'value' ? )

Résolu/Fermé
Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 - 10 avril 2012 à 10:54
Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 - 10 avril 2012 à 17:57
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 ;)

2 réponses

maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
10 avril 2012 à 11:40
1
Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
10 avril 2012 à 12:27
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 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
10 avril 2012 à 13:58
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 mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
10 avril 2012 à 17:57
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 mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
10 avril 2012 à 13:02
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