PHP-MYSQL fonction insert entre 2 tables
Serzo
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
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
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:
- PHP-MYSQL fonction insert entre 2 tables
- Fonction si et - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Touche insert - Guide
- Tables des matières word - Guide
- Disk boot failure insert system disk and press enter - Guide
4 réponses
Bonjour,
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...
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...
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.'"
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.
.
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.
.
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.
Je t'ai dit :
1 - TU FAIS UN SELECT
2 - Tu FAIS TON INSERT en y mettant le résultat de ton select.
Ah ok!
Alors là j'ai testé ça mais je mets comment le résultat de mon select dans l'insert into?
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; }
.... toujours pas !
bon.. je vais te macher le travaille .....
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.
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.