PHP-MYSQL fonction insert entre 2 tables

Fermé
Serzo Messages postés 3 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 16 juin 2015 - 15 juin 2015 à 17:19
jordane45 Messages postés 38243 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 octobre 2024 - 16 juin 2015 à 16:42
Bonjour,
Je voudrais pouvoir récupérer l'id d'une table LIST et l'insérer dans une ligne LIST_ID d'une table PRICE.

En gros je veux que list_id de la table PRICE soit égal à l'id de la table LIST

Voici ma fonction insert :

public function insert(){
$bdd = Database::getInstance();
$sql = 'INSERT INTO price (description, single_price, list_id, user_id)
VALUES ("'.$this->description.'", "'.$this->single_price.'", "'.$this->list_id.'", '.$_SESSION['id'].')';
$bdd->exec($sql);
return true;
}

Le problème est que je n'appelle pas la table list, j'ai essayé de faire des jointures, mais rien ne marche.
Je n'ai pas l'impression que ce soit si compliqué mais je bloque vraiment :/

SI vous pouviez m'aider ça me serait très utile, merci
A voir également:

4 réponses

jordane45 Messages postés 38243 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 octobre 2024 4 689
16 juin 2015 à 09:34
Bonjour,

pouvoir récupérer l'id d'une table LIST et l'insérer dans une ligne LIST_ID d'une table PRICE

Pourquoi ne fais tu pas simplement une requête SELECT pour aller chercher l'ID qui t'intéresse ?
Une fois récupéré.. tu pourras le mettre dans ta requête d'insertion...

0
Serzo Messages postés 3 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 16 juin 2015
Modifié par jordane45 le 16/06/2015 à 15:43
Bonjour Jordan,

Merci pour ta réponse!
J'ai donc fait des modifications, mais list_id est toujours égal à 0 et donc ne possède toujours pas l'id de la table liste :(

J'ai rajouté le SELECT mais je suis pas sûr de sa bonne forme, et je me demande quoi mettre à la place de "'.$this->list_id.'"
public function insert(){
     $bdd = Database::getInstance();

     $sql = 'INSERT INTO price (description, single_price, list_id, user_id)
                 SELECT id FROM list WHERE list.id = list_id
               VALUES ("'.$this->description.'", "'.$this->single_price.'", <bold>"'.$this->list_id.'"</bold>, '.$_SESSION['id'].')';


     $bdd->exec($sql);
     return true;
}


Si vous pouviez m'aider ça me serait très utile merci!


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.
0
jordane45 Messages postés 38243 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 octobre 2024 4 689
16 juin 2015 à 15:44
Je ne t'ai pas dit de faire un SELECT .... DANS ta requete INSERT ....

Je t'ai dit :
1 - TU FAIS UN SELECT
2 - Tu FAIS TON INSERT en y mettant le résultat de ton select.
0
Serzo Messages postés 3 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 16 juin 2015
Modifié par jordane45 le 16/06/2015 à 16:14
Ah ok!

Alors là j'ai testé ça mais je mets comment le résultat de mon select dans l'insert into?

public function insert(){
    $bdd = Database::getInstance();
    $sql = 'SELECT id FROM list
            INSERT INTO price (description, single_price, list_id, user_id)
            VALUES ("'.$this->description.'", "'.$this->single_price.'", "'.$this->list_id.'", '.$_SESSION['id'].')';
    $bdd->exec($sql);
    return true;
}
0
jordane45 Messages postés 38243 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 octobre 2024 4 689
Modifié par jordane45 le 16/06/2015 à 16:43
.... toujours pas !

bon.. je vais te macher le travaille .....


public function insert(){
    $id = isset($_SESSION['id'])?$_SESSION['id']:NULL;
    $bdd = Database::getInstance();
  $list_id = $this->getIdList($var);
  
    $sql = "INSERT INTO price (description, single_price, list_id, user_id)
            VALUES  (:description,:single_price,:list_id,:id)";

   $params=array(":description"=>$this->description,":single_price"=>$this->single_price,":list_id"=>$list_id,":id"=>$id);
  
  $prepare = $bdd->prepare($sql);
  $prepare->execute($params);
  
    return true;
}

public function getIdList($var){
    $bdd = Database::getInstance();
    $sql = "SELECT id 
         FROM list
      WHERE tonchamp = :tavariable";
  
  $params=array(":tavariable"=>$var);
           
    $prepare = $bdd->prepare($sql);
  $prepare->execute($params);
  
  //on stocke le résultat dans un array
  $result = $prepare->fetchall();
  if($result){
    //on en récupère l' ID
    $id = $result[0]['id'];
  }else{
    $id=NULL;
  } 
  return $id;
}



NB .. bien entendu .. il te faut modifier le WHERE de la requete .. pour y mettre le champ qui te permet de savoir quel id tu veux récupérer.
0