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

Résolu
Youra87 Messages postés 66 Statut Membre -  
Youra87 Messages postés 66 Statut Membre -
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

  1. maka54 Messages postés 721 Statut Membre 80
     
    1
    1. Youra87 Messages postés 66 Statut Membre 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
    2. maka54 Messages postés 721 Statut Membre 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
    3. Youra87 Messages postés 66 Statut Membre 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
  2. Youra87 Messages postés 66 Statut Membre 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