Jump to content

[Résolu] Requête sql multiple - update


Recommended Posts

Bonjour,

 

Je suis débutant en php et mysql ;-)

 

J'ai créé un formulaire afin de mettre à jour l'envoi de catalogues publicitaires aux clients.

 

J'aimerai que les résultats de ce formulaire update 2 tables en même temps mais j'ai un problème avec ma requête :

 

 

$sql = "UPDATE `ps_orders` SET `catalogue` = '$catalogue', `validite` = '$dateval', `nbcat` = '$nbcat'  WHERE `id_order` = '$idpart'";

return (!Db::getInstance()->execute($sql));

 

$sql2 = "UPDATE `ps_cat_history` SET `catalogue` = '$catalogue', `validite` = '$dateval' WHERE `id_order` = '$idpart'";
return (!Db::getInstance()->execute($sql2));

 

Quand j'exécute ceci il n'y a que la première requête qui s'exécute, je suppose qu'il y a moyen de faire qu'une requête qui mettrait à jour les 2 tables d'un coup??

 

Merci pour votre aide  :)

Edited by schoumi26 (see edit history)
Link to comment
Share on other sites

J'essaie de faire comme ceci alors mais ça fonctionne toujours pas, seule la première requête s'exécute :

 

 

$sql = "UPDATE `ps_orders` SET `catalogue` = '$catalogue', `validite` = '$dateval', `nbcat` = '$nbcat'  WHERE `id_order` = '$idpart'";

$sql2 = "UPDATE `ps_cat_history` SET `catalogue` = '$catalogue', `validite` = '$dateval' WHERE `id_order` = '$idpart'";

 

return (!Db::getInstance()->execute($sql,$sql2));

 

Merci pour votre aide  :unsure:

Link to comment
Share on other sites

Ah oui, non non...

 

En fait, le code précédent (je parle pour qu'il s'éxécute, pas au niveau du respect des standards) était correct hormis le premier return.

 

Dans l'idée, ceci peut se faire:

$return = true;
$sql = "UPDATE `ps_orders` SET `catalogue` = '$catalogue', `validite` = '$dateval', `nbcat` = '$nbcat'  WHERE `id_order` = '$idpart'";
if(!Db::getInstance()->execute($sql))
 $return = false;
$sql = "UPDATE `ps_cat_history` SET `catalogue` = '$catalogue', `validite` = '$dateval' WHERE `id_order` = '$idpart'";
if(!Db::getInstance()->execute($sql))
 $return = false;
 
return $return;
Link to comment
Share on other sites

Avec plaisir.

 

Ce que j'espère, mais il est possible que non vu que je n'ai pas détaillé, c'est que vous ayez compris le pourquoi du comment. Ou, du moins, que vous preniez le temps d'aller voir l'effet de "return".

 

En effet, j'apprécie (encore plus que de vous aidez) que cela vous serve sur du long terme, en apprenant le pourquoi du comment ! ;-)

Link to comment
Share on other sites

Return à pour effet d'arrêter la fonction si je comprends bien donc vous mettez 

 

 

 

if(!Db::getInstance()->execute($sql))
$return = false;

 

Pour dire de ne pas s'arrêter à la première requête, donc il passe à la suivante où on retrouve cette logique ?

 

Puis tout s'est exécuté donc on stoppe la fonction avec :

 

 

 

return $return;

$return = true;

Suis-je dans le bon raisonnement ? Aie aie aie faut déjà un fameux esprit logique pour comprendre un langage de programmation...

 

Je vous remercie

Link to comment
Share on other sites

En effet, la programmation est avant tout de la logique. Il est possible de concevoir une "logique" sur papier, sans savoir l'implémenter par manque de connaissances techniques.

 

En réalité, le mot-clé "return" demande de renvoyer quelque chose. Ici, il s'agit du contenu d'une variable qui sera true/false (vrai/faux ou encore ok/non ok).

 

Analogie tout à fait bizarre qui émane de ma tête:

- Vous allez au magasin et vous avez une liste de courses qui comportent: pommes, eau.

- Vous allez donc dans un premier rayon et exécute la tâche de prendre les pommes (peu importe la manière).

- Dans l'idée, vous allez rayé sur votre liste le fait que cette tâche est bien exécutée. Et il vous restera donc à vous pencher sur votre seconde et ultime tâche que de prendre l'eau.

 

Mais, en fait... Voici ce que vous réalisez à ce moment là: un return.

 

En d'autres termes, vous avez dit: c'est bon, j'ai pris les pommes. Je peux passer à la caisse et retourner à la maison.

 

Une fois à la maison, il vous manque quelque chose, n'est-ce pas ? Mais bien sur ! L'eau !

 

On pourrait donc dire que de mettre dans notre variable $return un true/false lorsque qu'une requête est exécutée s'apparente à rayée sur notre liste de courses le produit que l'on a précédemment pris.

 

Une fois fait, on peut passer à la caisse et retourner à la maison, le tout en annonçant à sa femme que l'on a bien pris les pommes ET l'eau (celle-ci fera un regard étonnée, il est tellement rare que son compagnon n'oublie pas ne fut-ce qu'une chose ! :P) au magasin.

 

Bon. Je m'emballe. Mais voilà donc l'idée. J'espère ne pas vous avoir embrouiller ! ;-)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...