Fork me on GitHub






plusieurs requêtes en une ?
Newbie
Inscrit: 02/05/2006 14:19
Messages: 3
Bonjour,
actuellement je crée un module pour xoops, dans celui ci on peut ordonner plusieurs articles, puis en suite on clique sur sauvegarder l'ordre, et là le fichier php crée une requête du type :

UPDATE `f7cph_ateliers_articlesSET `ordre` = '0' WHERE `id` =4 LIMIT 1 ;
UPDATE `f7cph_ateliers_articlesSET `ordre` = '2' WHERE `id` =5 LIMIT 1 ;
UPDATE `f7cph_ateliers_articlesSET `ordre` = '3' WHERE `id` =8 LIMIT 1 ;
...


La requête est valide, et fonctionne quand je la fait à la main dans phpmyadmin ...

Quand je procède ainsi : ça marche
foreach ($articles as $ordre => $id) {
        
$sql "";
        
$sql .= "UPDATE ".$xoopsDB->prefix("ateliers_articles");
        
$sql .= " SET `ordre` =$ordre WHERE `id` =$id LIMIT 1;n";
        
$xoopsDB->queryF($sql);
    }

seulement ça fait autant de requete que d'article trié ... c loins d'être optimisé comme code

et quand je procède ainsi :
$sql "";
    foreach (
$articles as $ordre => $id) {
        
$sql .= "UPDATE ".$xoopsDB->prefix("ateliers_articles");
        
$sql .= " SET `ordre` =$ordre WHERE `id` =$id;n";
    }
    
$xoopsDB->queryF($sql);

ça marche plus :(

COmment faire pour exécuter plusieurs requête en une seule ?

Posté le : 02/05/2006 14:27
Partager Twitter Partagez cette article sur GG+
Re: plusieurs requêtes en une ?
Newbie
Inscrit: 02/05/2006 14:19
Messages: 3
? personne ne sait
même pas une piste ?

Posté le : 03/05/2006 09:43
Partager Twitter Partagez cette article sur GG+
Re: plusieurs requêtes en une ?
Aspirant
Inscrit: 28/02/2005 14:19
De Vercors
Messages: 37
Citation :

COmment faire pour exécuter plusieurs requête en une seule ?

Séparer les requete par un ";" . C'est ce que tu as fait.
Je pense que dans ta reque, ce qui ne marche pas c'est que tu a coller le ";" avec l'id... mais un exspace

$sql .= " SET `ordre` =$ordre WHERE `id` =$id ;\n";

au lieu de

$sql .= " SET `ordre` =$ordre WHERE `id` =$id;\n";

Pour moi, il n'y a aucune optimisation à faire puisque les données à mettre à jour ne sont pas les mêmes (et sont "aléatoire") pour chacun de tes occurences. Il y aura aucun de requet de mise à jour que d'occurence sauf si tu arrives à trouver une regle de gestion liant une (ou plusieurs) des données de la table avec ta mise à jour.
Tu pourrais alors avoir un truc du style
UPDATE `f7cph_ateliers_articlesSET `ordre` = fonction(...) WHERE `id` =and id '4' and id '5';

Posté le : 03/05/2006 10:14
Partager Twitter Partagez cette article sur GG+
re
Newbie
Inscrit: 02/05/2006 14:19
Messages: 3
non visiblement l'histoire des espaces n'a rien changé ...

En surfant un peu, j'ai cru comprendre que php n'est pas apte a effectuer de tel requete.

pour celà, il faut :
- soit utiliser mysqli, (doit etre installé sur le serveur -> compilier php avec ...) donc en gros c pas pour les hébergement de bases
- soit faire comme j'avais fait au début : une boucle qui exécute une à une les requête ... bref je suis déçu... enfin merci quand même pour ton aide oryxvet

Posté le : 03/05/2006 16:11
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

112 Personne(s) en ligne (105 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 112 | Plus ...