Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2695 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  mettre à jour une table à partir d'un dragdrop YUI

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mettre à jour une table à partir d'un dragdrop YUI

n°1703251
kifouillou
Posté le 17-03-2008 à 09:52:32  profilanswer
 

Bonjour,
 
j'ai réalisé un draganddrop avec YUI qui est très utile de div dans un formulaire.
 
Maintenant ce que je voudrais faire c'est faire une mise à jour de ma table.
Mais comme c'est quelque chose de visuel je ne vois pas trp comment faire. A part peut-être en retrouvant l'id de la div.
 
Voilà mon html avec les champs à mettre à jour.En fait comme c'est un drag and drop c'est l'ordre des enregistrements  que je dois mettre à jour.
 

Code :
  1. <div class=ddentry id="bb$i">
  2.             Type : <input type="text" name="type_$i" id="type_$i" value= "$R[struct_type_stream]" ><br />
  3.             Nom : <input type="text" name="nom_$i" id="nom_$i" value= "$R[struct_nom]"><br />
  4.             Libelle : <input type="text" name="libelle_$i" id="libelle_$i" value= "$R[struct_libelle]" ><br />
  5.             Type des données : <input type="text" name="datatype_$i" id="datatype_$i" value="$R[struct_datatype]" >
  6.             <input type=hidden name="sturct_id_$i" id="sturct_id_$i" value="$sturct_id">
  7.          </div>


 
 
et voilà le début de ma fonction php qui récupère cela et dois mettre à jour la table. Je sais même pas si mon update est juste. :
 

Code :
  1. function pimpValiderStructureDocument($html)
  2. {
  3.  $sturct_id = $_POST['sturct_id'];
  4.  $struct_type = $_POST['type'];
  5.  $struct_nom = $_POST['nom'];
  6.  $struct_libelle = $_POST['libelle'];
  7.  $struct_datatype = $_POST['datatype'];
  8.  foreach($_REQUEST as $k => $v)
  9.  {
  10.   $k = split ("_", $sturct_id, 7);
  11.   $sql = "update stream_structure_2
  12.     set struct_type_stream='" . $struct_type . "', struct_nom='" . $struct_nom . "', struct_libelle='" . $struct_libelle . "', struct_datatype='" . $struct_datatype . "'
  13.     where sturct_id='" . $sturct_id . "'" ;
  14.  }
  15. }


 
Avez-vous une idée de comment faire?  
Merci d'avance

mood
Publicité
Posté le 17-03-2008 à 09:52:32  profilanswer
 

n°1704441
kifouillou
Posté le 19-03-2008 à 10:41:16  profilanswer
 

bonjour à tous,
 
sa y es j'ai résolu mon problème. J'ai appris un truc très utile en php, c'est les regex. Et encore je trouve que celle que j'ai utilisé est pas compliqué. Je vous donne donc ma solution commentée, si quelqu'un à l'avenir à le même souci.
 
Le formulaire :
 

Code :
  1. <div class=ddentry id="bb$R[sturct_id]">
  2.             Type : <input type="text" name="type_$R[sturct_id]" id="type_$R[sturct_id]" value= "$R[struct_type_stream]" ><br />
  3.             Nom : <input type="text" name="nom_$R[sturct_id]" id="nom_$R[sturct_id]" value= "$R[struct_nom]"><br />
  4.             Libelle : <input type="text" name="libelle_$R[sturct_id]" id="libelle_$R[sturct_id]" value= "$R[struct_libelle]" ><br />
  5.             Type des données : <input type="text" name="datatype_$R[sturct_id]" id="datatype_$R[sturct_id]" value="$R[struct_datatype]" >
  6.             <input name="lst_sturct_id$R[sturct_id]" id="lst_sturct_id$R[sturct_id]" type="hidden" value="$R[sturct_id]"/>
  7.          </div>
  8.         $struct_type = $R['struct_type_stream'];
  9.         $struct_nom = $R['struct_nom'];
  10.         $struct_libelle = $R['struct_libelle'];
  11.         $struct_datatype = $R['struct_datatype'];
  12.         $sturct_id = $R['sturct_id'];
  13. }
  14.     <style type=text/css>
  15.     div.ddentry { border:1px solid #999; border-left:20px solid #999;margin-bottom:4px; padding:4px; }
  16.     </style>
  17.     <h1>Gestion des documents de type $type</h1>
  18.     <form name="form" id="form" method=post action='$_SERVER[PHP_SELF]'>
  19.     <input type=hidden name=Action value='$_REQUEST[Action]'>
  20.     <input type=hidden name=Etape value='valider'>
  21.     $html
  22.     <input type=submit  >
  23.     </form>


 
 
et le code permettant de valider avec la regex :  
 

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

n°1704966
CyberDenix
Posté le 19-03-2008 à 21:13:07  profilanswer
 

Bien, mais je te conseille plutot les fontions preg_* (preg_match, preg_replace...etc.), elles sont plus rapides et plus mieux  :o

Message cité 1 fois
Message édité par CyberDenix le 19-03-2008 à 21:13:23

---------------
Directeur Technique (CTO)
n°1706056
kifouillou
Posté le 21-03-2008 à 14:12:12  profilanswer
 

CyberDenix a écrit :

Bien, mais je te conseille plutot les fontions preg_* (preg_match, preg_replace...etc.), elles sont plus rapides et plus mieux  :o


 
bonjour,
 
ok. Je tiendrai compte pour les preg_*. Bon pour le moment je suis toujours en ereg, mais j'ai un autre petit souci. Je récupère avec du javascript l'ordre de mes div. Je les mets dans un champs hidden appelé div_order que j'explode ensuite. Donc le code de ma validation de draganddrop donne ceci.

Code :
  1. function pimpValiderStructureDocument($html)
  2. {
  3. $ordre=1;
  4.     $div_ordre = $_POST['div_order'];
  5.    
  6.     $tab_structure = explode(',', $div_ordre, -1);
  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.         $Data['struct_ordre'] = $ordre;
  26.      
  27.         if ($id)
  28.         { // Si un id est dispo => enregistrement existant à modifier, sinon enregistrement à créer   
  29.             dbiUpdateBDArray('stream_structure_2', 'sturct_id', $id, $Data);
  30.             $ordre++;   
  31.         }
  32.         else
  33.         {
  34.             dbiInsertBDArray('stream_structure_2', $Data);
  35.         }
  36.     }
  37.     print_r ($tab_structure);
  38. }


 
et le print_r me renvoie quelque chose du type : Array ( [0] => bb13 [1] => bb9 [2] => bb11 [3] => bb1 [4] => bb3 [5] => bb12 [6] => bb10 [7] => bb4 [8] => bb7 [9] => bb17 [10] => bb14 [11] => bb8 [12] => bb2 [13] => bb16 [14] => bb6 [15] => bb15 [16] => )
 
bb c'est l'id des div.
 
C'est bien joli. Mais le problème c'est que je ne sais pas comment exploiter ce résultat dans ce que j'ai fais. Pourriez-vous me donner un petit coup de pouce?
 
Merci d'avance.


Message édité par kifouillou le 21-03-2008 à 14:18:47

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  mettre à jour une table à partir d'un dragdrop YUI

 

Sujets relatifs
Mettre une image en miniature a partir d'un scriptDe l'aide pour créer un MCD à partir d'une base de données
Implementer YUI SimpleDialogPb mise à jour serveur
[Webservice] Serveur Xfire & génération d'un client à partir d'un WSDL[Résolu][HTML/CSS] Selecteur d'elements pere-fils + table
[AIDE] Mettre son logo sur plusieurs photos en même temps ?Réparer une table
extraction d'adresse mail à partir d'un URL 
Plus de sujets relatifs à : mettre à jour une table à partir d'un dragdrop YUI


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR