begin process at 2012 05 31 12:14:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

problème avec un update à partir d'un tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème avec un update à partir d'un tableau

vendredi 14 mars 2008 à 10:29:41 | problème avec un update à partir d'un tableau

kifouillou

bonjour,

j'ai un petit problème de mise à jour d'une base. J'ai une fonction qui permet d'afficher des champs puis une autre fonction qui met à jour la base lorsque ces champs sont modifiés.

Dans ma fonction de validation je parcours mon tableau de champs avec un foreach et ensuite je fais un update.

function pimpValiderStructureDocument($html)
{
   

       
        // boucle pour parcourir le tableau contenant les enregistrements
       
       
       
        foreach($_REQUEST as $k => $v)
        {
               
                $k = split ("_", $sturct_id, 7);
               

$sql = "UPDATE stream_structure_2
set struct_type_stream='" . $struct_type . "', struct_nom='" .  $struct_nom   . "', struct_libelle='" . $struct_libelle . "', struct_datatype='" . $struct_datatype . "'
where sturct_id='" . $_POST['sturct_id'] . "'" ;

}

Lorsque je fais un echo de $v il m'affiche bien tous les champs donc c'est bien le update qui n'est pas bon. Merci de votre aide.



olivier
vendredi 14 mars 2008 à 17:20:10 | Re : problème avec un update à partir d'un tableau

kifouillou

Désolé d'avoir créer mon message en double, c 'est une erreur de ma part. Par contre pour mon update j'ai un peu réfléchi sans toutefois trouver de solution car niveau code y a pas d'erreur donc il doit y avoir un oubli de ma part.

$k est un tableau et c'est les valeurs de $k que je veux mettre à jour. Mon update n'a pas d'erreur(enfin je pense) mais il ne met ien à jour donc je pense qu'il faut utiliser le $v mais je ne maitrise pas les tableaux donc pouvez vous me dire comment je peux mettre ma base à jour à partir du tableau?
Si c'est possible bien sur.

Merci d'avance.

olivier
samedi 15 mars 2008 à 07:16:55 | Re : problème avec un update à partir d'un tableau

malalam

Administrateur CodeS-SourceS
Hello,

je ne pige rien à ce que tu racontes. Mets ton code d'update en entier, parce que là il manque des trucs (j'espère!).

PS : c'est normal le "sturct_id" au lieu de "struct_id" ?

lundi 17 mars 2008 à 10:46:44 | Re : problème avec un update à partir d'un tableau

kifouillou

Bonjour,

Oui oui le sturct-id est normal. C'est parce que mon champ s'appelle comme cela. Donc comme cela sa me permet de m'en souvenir en mettant le même nom de variable.

En fait le problème a un petit peu changé. L'update doit se faire à partir d'un draganddrop réalisé avec l'API YUI en javascript. Donc ce que je veux mettre à jour c'est l'ordre des enregistrements que j'a réalisé avec le draganddrop.

voilà le code html de mes champs contenues dans une div :

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




et voilà la fonction pour mettre à jour :

$sturct_id = $_POST['sturct_id'];
        $struct_type = $_POST['type'];
        $struct_nom = $_POST['nom'];
        $struct_libelle = $_POST['libelle'];
        $struct_datatype = $_POST['datatype'];
       
        // boucle pour parcourir le tableau contenant les enregistrements
       
       
       
        foreach($_REQUEST as $k => $v)
        {
               
            $k = split ("_", $sturct_id, 7);
            $iniContent .= $key.' = "'.$value   

            $sql = "update stream_structure_2
                    set struct_type_stream='" . $struct_type . "', struct_nom='" . $struct_nom . "', struct_libelle='" . $struct_libelle . "', struct_datatype='" . $struct_datatype . "'
                    where sturct_id='" . $sturct_id . "'" ;
               
        }   

Voilà, j'espère que c'est un peu plus clair.
Merci encore.




olivier
lundi 17 mars 2008 à 19:28:33 | Re : problème avec un update à partir d'un tableau

malalam

Administrateur CodeS-SourceS
et ta requête, tu l'exécutes où?
lundi 17 mars 2008 à 19:42:14 | Re : problème avec un update à partir d'un tableau

kifouillou

Lorsque j'appuie sur le bouton valider de mon formulaire sa m'envoie vers une fonction qui valide le changement.  C'est dans cette fonction valider que j'exécute la requète que tu vois plus haut.

olivier
mercredi 19 mars 2008 à 10:34:37 | Re : problème avec un update à partir d'un tableau

kifouillou

Réponse acceptée !
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 :


<div class=ddentry id="bb$R[sturct_id]">
            Type : <input type="text" name="type_$R[sturct_id]" id="type_$R[sturct_id]" value= "$R[struct_type_stream]" ><br />
            Nom : <input type="text" name="nom_$R[sturct_id]" id="nom_$R[sturct_id]" value= "$R[struct_nom]"><br />
            Libelle : <input type="text" name="libelle_$R[sturct_id]" id="libelle_$R[sturct_id]" value= "$R[struct_libelle]" ><br />
            Type des données : <input type="text" name="datatype_$R[sturct_id]" id="datatype_$R[sturct_id]" value="$R[struct_datatype]" >
               <input name="lst_sturct_id$R[sturct_id]" id="lst_sturct_id$R[sturct_id]" type="hidden" value="$R[sturct_id]"/>

         </div>


        $struct_type = $R['struct_type_stream'];
        $struct_nom = $R['struct_nom'];
        $struct_libelle = $R['struct_libelle'];
        $struct_datatype = $R['struct_datatype'];
        $sturct_id = $R['sturct_id'];
    }

    <style type=text/css>
    div.ddentry { border:1px solid #999; border-left:20px solid #999;margin-bottom:4px; padding:4px; }
    </style>
    <h1>Gestion des documents de type $type</h1>
    <form name="form" id="form" method=post action='$_SERVER[PHP_SELF]'>
    <input type=hidden name=Action value='$_REQUEST[Action]'>
    <input type=hidden name=Etape value='valider'>
    $html
    <input type=submit  >
    </form>



et le code permettant de valider avec la regex :


function pimpValiderStructureDocument($html)
{
   
   



    // Parcours des champs du formulaire pour enregister chaque ligne
    $struct_ordre=1;
    foreach ($_POST as $k => $v)
    {
        if (! ereg("^lst_sturct_id([0-9]+)$",$k,$o)) continue; // On ne recherche que les champs hidden embarquant l'id de la bdd
       
        $ligne = $o[1]; // numéro de la ligne en cours de traitement
        $id = $v;       // L'id de l'enregistrement est la valeur de ce champs

        $Data = array(); // Créer un tableau vide pour stoker les valeurs à enregistrer
        $Data['struct_type_stream'] = $_POST['type_'.$ligne];
        $Data['struct_nom'] = $_POST['nom_'.$ligne];
        $Data['struct_libelle'] = $_POST['libelle_'.$ligne];
        $Data['struct_datatype'] = $_POST['datatype_'.$ligne];
        $Data['struct_ordre'] = $ordre;

        if ($id){ // Si un id est dispo => enregistrement existant à modifier, sinon enregistrement à créer
            dbiUpdateBDArray('stream_structure_2', 'sturct_id', $id,  $Data);
           $struct_ordre++;
        }
        else
            dbiInsertBDArray('stream_structure_2', $Data);
    }

        
}


olivier


Cette discussion est classée dans : problème, tableau, champs, update, struct


Répondre à ce message

Sujets en rapport avec ce message

Problème dans UPDATE [ par begueradj ] Bonjour, J'ai un formulaire à 4 champs de saisie et une photo. Il me sert à faite une mise à jour. Le problème est qu'il se peut que l'utilisateur d Problème requête SELECT avec champs vides [ par morninglive182 ] Bonjour à tous, Je suis actuellement confronté à un problème avec une requête SQL. Je vais essayer d'expliquer le plus précis possible. Sur une page Problème créer un tableau avec des valeurs récupérer par post puis rajouter la même ligne à mon formulaire [ par cds0671 ] Bonjour voici mon problème!! J'ai un formulaire à accès libre sans session, ou on rentre NOM, PRENOM, FONCTION, LIEU. Jusque là pas de souci. Là ou Requette SQL => UPDATE problème [ par Nodoka ] Bonjours, Voilà mon problème, ma fonction UPDATE ne fonctionne pas, j'essaye de comprendre mais je ne vois pas d'ou viens le soucis. Mon cas est simp Problème comparaison des clés de deux tableaux [ par riyuhou ] Bonjours à tous. Depuis le temps que je suis inscrit ici enfin mon premier message. Ma question est je pense assez simple, j'aimerais savoir si il est Problème affichage donnée dans champs formulaire [ par syl62 ] Bonjour, je me permet de vous contacter afin d'avoir une piste concernant mon problème... Mon but est de faire un update dans une base mysql à partir Ne pas insérer un champ vide [ par lolowar ] Bonjour,Je viens chercher un peu d'aide pour un problème qui me semble facile, mais peut être à trop chercher je bloque depuis deux jours...Voila, j'a tableau [ par travailmichel ] bonjour à tousvoila je suis nul en php mais je voudrais créer un tableau dynamique et je trouve rien dans le forum.......ou du moins je n'arrive pas à identification [ par recobaks ] Bonjour j'ai un tableau "user" qui contient trois champs 1 user_iduser 2 user_user 3 user_motpasse je une page contient une formulaire (2 champs texte


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales