optimisation

optimisation - PHP - Programmation

Marsh Posté le 25-03-2008 à 10:43:09    

Bonjour,
 
j'ai réalisé une fonction qui permet de valider un drag&drop. Cette fonction enregistre donc l'ordre dans une base de donnée. Cela fonctionne très bien mais j'ai deux update et je voudrais savoir si dans un souci d'optimisation il serait possible d'en faire un seul.
Voici mon code :  

Code :
  1. // Parcours des champs du formulaire pour enregistrer chaque ligne
  2.     $div_ordre = $_POST['div_order'];
  3.    
  4.     $tab_structure = explode(',', $div_ordre);
  5.    
  6.    
  7.    
  8.     foreach ($_POST as $k => $v)
  9.     {
  10.        
  11.        
  12.         if (!$v)
  13.             continue;
  14.         if (! ereg("^lst_sturct_id([0-9]+)$",$k,$o)) continue; // On ne recherche que les champs hidden embarquant l'id de la bdd
  15.             $ligne = $o[1];
  16.              // numéro de la ligne en cours de traitement
  17.         $id = $v;
  18.      
  19.                // L'id de l'enregistrement est la valeur de ce champs
  20.         $Data = array(); // Créer un tableau vide pour stoker les valeurs à enregistrer
  21.         $Data['struct_type_stream'] = $_POST['type_'.$ligne];
  22.         $Data['struct_nom'] = $_POST['nom_'.$ligne];
  23.         $Data['struct_libelle'] = $_POST['libelle_'.$ligne];
  24.         $Data['struct_datatype'] = $_POST['datatype_'.$ligne];
  25.        
  26.         //$Data['struct_ordre'] = $ordre;
  27.      
  28.         if ($id)
  29.         { // Si un id est dispo => enregistrement existant à modifier, sinon enregistrement à créer   
  30.             dbiUpdateBDArray('stream_structure_2', 'sturct_id', $id, $Data);
  31.             $ordre++;   
  32.         }
  33.         else
  34.         {
  35.             dbiInsertBDArray('stream_structure_2', $Data);
  36.         }
  37.         foreach ($tab_structure as $k =>$v)
  38.         {
  39.             $id = substr($v, 2);
  40.             $D = array();
  41.             $D['struct_ordre'] = $k + 1;
  42.        
  43.             dbiUpdateBdArray('stream_structure_2', 'sturct_id', $id, $D);
  44.         }
  45.    
  46.     }


 
Merci d'avance.

Reply

Marsh Posté le 25-03-2008 à 10:43:09   

Reply

Marsh Posté le 25-03-2008 à 14:04:02    

C'est nébuleux tout ça : tu mélanges anglais et français dans ton code, et c'est une vraie usine à gaz au passage :D

Reply

Marsh Posté le 25-03-2008 à 14:14:32    

salut,
 
oui c'est vrai que j'ai mélangé un peu français et anglais. Faudra que je  pense à changer cela. Mais sinon est-ce que le deuxième update(celui du deuxième foreach peut-être enlevé et que le premier prenne tout en compte? Car j'ai essayé de déplacer mon foreach dans le code mais bon mon champ ordre ne se mettait pas à jour. Malgré le fait que que ce soit nébuleux, est-ce compréhensible et mon problème est-il résolvable?

Reply

Marsh Posté le 25-03-2008 à 17:32:36    

Bon ben j'ai réussi à réduire à un seul update. Maintenant me reste plus qu'à optimiser au mieux cette "usine à gaz" comme l'a dit vanadium

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed