Insérer les valeurs d'un formulaire dans une base de données [Résolu]

maguidi 17 Messages postés mardi 14 avril 2009Date d'inscription 13 mai 2009 Dernière intervention - 5 mai 2009 à 12:12 - Dernière réponse : alexflex25 106 Messages postés vendredi 29 septembre 2006Date d'inscription 6 mars 2012 Dernière intervention
- 7 mai 2009 à 10:24
Bonjour,
J'ai un formulaire avec un champ par défaut et des champs dynamiques dynamique que l'utilisateur peut ajouter avec un bouton ajout
Alors j'ai fais ce code pour insérer les valeurs dans ma base de données
foreach($_POST as $cle=>$value)
{
if(substr($cle,0,7)=="article")
{
$array_article[]=$value;
}
}
for ($i=0; $i<sizeof($array_article); $i++)
{
$select_artticle = mysql_query("SELECT KArticles, Designations FROM articles WHERE
Designations='$array_article[$i]'");
$res_article = mysql_fetch_array($select_artticle);
$num_article = $res_article['KArticles'];
$select_sortie = mysql_query("INSERT INTO sorties (FKArticles, DateSorties) VALUES('$num_article',
now())");
}
Mais quand je regarde ma base de données j constate que la valeur du champ dynamique n'est pas insérée. Alors pour voir si j'arrive à récupérer les valeurs des champs dynamiques j'ai fait
print_r($_POST) et j'ai obtenu ça
Array ( [article1] => A3 [article] => Array ( [0] => A2 ) ) (ce qui est en gras est la valeur du champ dynamique)
et dans ma boucle for quand je fais un echo $array_article[$i] ça m'affiche
A3 Array
Si quelqu'un comprend où se trouve le probléme son aide me sera bien utile.
Je rapelle que ce que je veux c'est insérer toutes les valeurs récupérées de mon formulaire dans ma base de données
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
alexflex25 106 Messages postés vendredi 29 septembre 2006Date d'inscription 6 mars 2012 Dernière intervention - 7 mai 2009 à 09:37
3
Merci
//Voila comme j'aurais fais



    foreach($_POST as $cle => $valeur){
        if($cle == "article"){
            foreach($valeur as $article){
                $select_artticle = mysql_query('SELECT KArticles, Designations FROM articles WHERE Designations="'.$article.'"');
                $res_article = mysql_fetch_array($select_artticle);
                $num_article = $res_article['KArticles'];
                $select_sortie = mysql_query('INSERT INTO sorties (FKArticles, DateSorties) VALUES("'.$num_article.'",now())');
            }
        }else{


            //traitement avec ta valeur par defaut avec un acces à cette valeur comme ceci
            //$valeur


        }
    }

    
    //Dans l'exemple tu n'as qu'un seul article donc pas de probleme
    //Mais si cette liste grossi c un peu dommage de stocké 2 fois la meme chose à deux endroits différents
    //Le but etant l'économie...

Merci alexflex25 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de alexflex25
alexflex25 106 Messages postés vendredi 29 septembre 2006Date d'inscription 6 mars 2012 Dernière intervention - 5 mai 2009 à 17:01
0
Merci
Perso je ferrais comme ceci, je ne sais pas si cela peut convenir...

<?php
    //A declarer ici a cause de la portée des variables
    $array_article = array();
    $compteur = 0;
   
    foreach($_POST as $cle => $valeur){
        if(substr($cle,0,7)=="article"){
            $array_article[compteur++]=$valeur;
        }
    }
   
    foreach($array_article as $cle => $valeur){
        $select_artticle = mysql_query('SELECT KArticles, Designations FROM articles WHERE Designations="'.$valeur.'"');
        $res_article = mysql_fetch_array($select_artticle);
        $num_article = $res_article['KArticles'];
        $select_sortie = mysql_query('INSERT INTO sorties (FKArticles, DateSorties) VALUES("'.$num_article.'",now())');
    }
?>
Commenter la réponse de alexflex25
maguidi 17 Messages postés mardi 14 avril 2009Date d'inscription 13 mai 2009 Dernière intervention - 6 mai 2009 à 08:33
0
Merci
slt alexflex25
j'ai essayé ce que t'a dit mais ça marche toujours pas ça donne le même résultat que mon code. Je sais où se trouve le problème le truc c'est que les données du champ dynamique sont dans un tableau. comme j'ai fait 
foreach($_POST as $cle = > $valeur)

pour récupérer les données sous forme de tableau avec une clé et valeur les données du champ dynamique se retouve encore dans un autre tableau. C'est pour ça que quand je fais
print_r($_POST) et j'ai obtenu ça
Array ( [article1] => A3 [article] => Array ( [0] => A2 ) (ce qui est en gras est la valeur du champ dynamique)
et la quand je fais
if(substr($cle,0,7) =="article")
{
$array_article[]=$value;
}
article1 est la clé et sa valeur est  A3
par contre article2 est aussi une clé mais pour sa valeur c'est juste le  Array qui est récupérer alors que moi j'ai besoin de ce qui est dans le array de article.
C'est pour ça que dans ma boucle for quand je fais un echo $array_article[$i] ça m'affiche
A3 Array .
Voila mon problème mais je sais pas comment y remédier, si quelqu'un peu m'aider je sais plus quoi faire.
Commenter la réponse de maguidi
alexflex25 106 Messages postés vendredi 29 septembre 2006Date d'inscription 6 mars 2012 Dernière intervention - 6 mai 2009 à 13:28
0
Merci
<?php

    //A declarer ici a cause de la portée des variables
    $array_article = array();
    $compteur = 0;
   
    foreach($_POST as $cle => $valeur){
        if( $cle == "article"){
            $array_article = $valeur;
        }
    }
   
    foreach($array_article as $cle => $valeur){
        $select_artticle = mysql_query('SELECT KArticles, Designations FROM articles WHERE Designations="'.$valeur.'"');
        $res_article = mysql_fetch_array($select_artticle);
        $num_article = $res_article['KArticles'];
        $select_sortie = mysql_query('INSERT INTO sorties (FKArticles, DateSorties) VALUES("'.$num_article.'",now())');
    }
?>

Il me semblait bien que y'avait un problème d'algo ceci devrai corriger ton probleme
Commenter la réponse de alexflex25
maguidi 17 Messages postés mardi 14 avril 2009Date d'inscription 13 mai 2009 Dernière intervention - 7 mai 2009 à 08:17
0
Merci
wé la j'arrive à insérer les valeur des champs dynamiques mé par contre je n'arrive plus à insérer celle du champ par défaut.
Est ce que tu peux m'expliquer à quoi sert chacun des foreach utilisés. Je sais à quoi ça sert mais par rapport à mon code. 
Commenter la réponse de maguidi
alexflex25 106 Messages postés vendredi 29 septembre 2006Date d'inscription 6 mars 2012 Dernière intervention - 7 mai 2009 à 08:54
0
Merci
<?php

    //Prenons  un exemple
    print_r($_POST);
    //Donne ceci
    //Array (
    //    [article1] => A3
    //    [article] => Array (
    //                    [0] => A2
    //                )
    //)
   
    //A declarer ici a cause de la portée des variables
    $array_article = array();
      
    //Cette premiere boucle recherche dans le tableau $_POST la clé "article"
    //qui contient les valeurs de tes champs dynamiques (à ce que j'ai compris).
    //Pour la stocker dans un autre tableau...
    //Personnellement je ne trouve pas cela nécessaire...
    //mais c'est une solution qui peut de défendre suivant le reste du code
    foreach($_POST as $cle => $valeur){
        if( $cle == "article"){
            $array_article = $valeur;
        }
    }
    //apres cela si je fais
    print_r($array_article);
    //j'obtiens
    //Array (
    //    [0] => A2
    //)
   
    //Ce qui correspond à la liste des valeurs des champs dynamique.
   
    //Dans cette deuxieme boucle tu parcour la liste de tes articles
    //exemple dans la premiere itération $cle=0 et $valeur = A2
    //et tu insere des données dans une table
    foreach($array_article as $cle => $valeur){
        $select_artticle = mysql_query('SELECT KArticles, Designations FROM articles WHERE Designations="'.$valeur.'"');
        $res_article = mysql_fetch_array($select_artticle);
        $num_article = $res_article['KArticles'];
        $select_sortie = mysql_query('INSERT INTO sorties (FKArticles, DateSorties) VALUES("'.$num_article.'",now())');
    }
   
    //Si tu veux ensuite récupérer "la valeur du champ par defaut" (a supposé que ce soit [articles1] => A3)
    //Il suffit d'utiliser le tableau $_POST.
    //ta valeur de champ pas defaut et donc dans cette exemple $_POST['articles1'];
   
    //Si je ne repond pas vraiment à ta question c'est parceque je n'ai pas compris ce que tu veut dire par "celle du champ par défaut."
    ?>
Commenter la réponse de alexflex25
maguidi 17 Messages postés mardi 14 avril 2009Date d'inscription 13 mai 2009 Dernière intervention - 7 mai 2009 à 09:20
0
Merci
si si ta très bien répondu à mes deux questions j compren mieu maintenant, tout est claire. Vraiment merci je sais pas ce que j'aurai fait sans toi.
Commenter la réponse de maguidi
maguidi 17 Messages postés mardi 14 avril 2009Date d'inscription 13 mai 2009 Dernière intervention - 7 mai 2009 à 09:23
0
Merci
Excuz j'ai une autre question ce que tu dis que c'est pas nécessaire j'aurai pu faire comment
Commenter la réponse de maguidi
maguidi 17 Messages postés mardi 14 avril 2009Date d'inscription 13 mai 2009 Dernière intervention - 7 mai 2009 à 09:57
0
Merci
Je l'ai testée c'est parfait, j'opte pour ta solution.
Encore une fois merci pour tout
Commenter la réponse de maguidi
alexflex25 106 Messages postés vendredi 29 septembre 2006Date d'inscription 6 mars 2012 Dernière intervention - 7 mai 2009 à 10:24
0
Merci
Pense à accepter la réponse pour les prochains
Commenter la réponse de alexflex25

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.