IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Remplir base avec données d'un tableau [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut Remplir base avec données d'un tableau
    bonjour,

    j'ai ces checkboxs (maximum 3) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="champ[]" value="'.$valeur3.'" onclick="limite_check(this.name, 3);" />
    Je souhaite recuperer ces données donc je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $champ = $_POST['champ'];
    foreach ($champ as $cle => $valeur){
    $etat = $champ[$cle];
    }
    Je souhaite mettre ces trois valeur dans une meme row

    par exemple les valeur 6 , 8 , 9 ==> id(1), val1(6), val2(8), val3(9)

    Comment faire pour cela ?

    merci

  2. #2
    Membre confirmé Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Par défaut
    uhhh, j'ai pas vraiment compris.

    tu peux préciser ?

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    J'ai au maxumum trois données provenant de checkbox (12 au total).

    Je veux recuperer les trois valeurs de ces checkboxs et les mettre dans une table, dans la meme ligne...

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    Je m'explique mieux :

    3 checkboxs cochés + 3 textes

    Je souhaite recuperer ses valeurs pour les mettre dans une base de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $champ = $_POST['champ'];
    $texte = $_POST['texte'];
    $value = array();
    $i = 0;
     
    foreach ($champ as $cle => $valeur){
    $etat = $champ[$cle];
    $text = $texte[$cle];
    $value[] = '(\'' . $etat . ',' .$text. '\')';
    $i ++;
    }
    Je souhaite en sortie faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table_temp (c1, t1, c2, t2, c3, t3) VALUES ' . $value
    ou value aura comme données :

    ('checkbox1', 'texte1', 'checkbox2', 'texte2', 'checkbox3', 'texte3')

    Si vous pouvez m'aider car je coince.

  5. #5
    Membre confirmé Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $champ = $_POST['champ'];
    $texte = $_POST['texte'];
    $value = '(';
     
    foreach ($champ as $cle => $valeur)
    {
    $etat = $champ[$cle];
    $text = $texte[$cle];
    $value  .= " $etat , $text ";
    }
    $value. = ')';
    Ca te convient ?

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    mince ca y est presque, j'ai bien le $champ = $_POST['champ']; mais pas le texte

    Resultat :


    il y a une , en trop en plus ....

  7. #7
    Membre confirmé Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Par défaut
    Apparemment ca n'affiche pas $_POST['texte'], il faudrait vérifier qu'il existe bien. Point de vue sécurité ce serait ptet bien de "préparer" la requête avant de l'exécuter. http://php.net/manual/en/pdo.prepared-statements.php ou autre.

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    je ne pense pas que ca soit si compliqué. Faire un foreach pour $texte mais comment l'inclure dans l'autre ?

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    personne pour m'aider ?

  10. #10
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Salut,

    Dans les trois textes, le dernier n'a pas été saisi !

    Il faudrait que tu ajoutes dans ton foreach le cas ou un(voir tous) texte n'est pas saisi ....

  11. #11
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    Le texte sera forcement saisie (c'est la partie admin d'un site).
    Je ne sais pas pourquoi le texte ne s'affiche pas.

  12. #12
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Quand tu fais un print_r de $texte, tu as quoi ?

    De même dans ton formulaire qui contient les trois textes, c fait comment ?
    (Es tu sûr d'avoir un bon tableau en retour $_POST['texte'])

    Attention aussi que dans ton foreach, tu utilises les mêmes clés pour les deux tableaux, est ce vrai que les checkbox et les input texte possédent les mêmes clés ?

  13. #13
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    Ca c'est mon formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="checkbox" name="champ[]" value="'.$valeur3.'" onclick="limite_check(this.name, 3);/>
    <input name="texte[]" type="text" size="20" maxlength="80">
    et ca le code recuperant les donnees :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $champ = $_POST['champ'];
    $texte = $_POST['texte'];
    $value = '(';
     
    foreach ($champ as $cle => $valeur)
    {
    $etat = $champ[$cle];
    $text = $texte[$cle];
    $value.= " $etat , $text ";
    }
    $value.= ')';
    Je souhaite ce resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table_temp (c1, t1, c2, t2, c3, t3) VALUES ' . $value

    Quand je fais un print_r de $texte, j'obtient ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => toto [9] => tata [10] => titi )
    Pour la cle, tu dois avoir raison mais je ne sais pas comment imbriquer un autre foreach pour le texte

  14. #14
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Moi, je simplifierais la chose

    Comme tu sais que tu n'as que trois Cb et trois Input, dans ton formulaire, tu déclares les trois input text par des noms comme texte1, texte2 et texte3 ...

    Et alors pour ton foreach tu fais le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $champ = $_POST['champ'];
    $value = '(';
    $i = 1;
    foreach ($champ as $cle => $valeur)
    {
         $value.= " $champ[$cle] , $_POST['texte$i'] ";
         $i++
    }
    $value.= ')';
    En pensant que $i sera évaluée, sinon tu passes par une variable intermédiaire

  15. #15
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    ca donnera quoi coté formulaire ?

    actuellement il est comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="checkbox" name="champ[]" value="'.$valeur3.'" onclick="limite_check(this.name, 3);/>
    <input name="texte[]" type="text" size="20" maxlength="80">
    Une chose que je n'ai pas dites : J'ai trois cb et 3 textes , mais en fait il peut y a voir jusqu'a 12 choix. 12 bc 12 champs texte, je choisis trois cb et je met le texte correspndant.

  16. #16
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Pour bien faire il faudrait me donner tout le formulaire

    Sinon trois fois le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input name="texte1" type="text" size="20" maxlength="80">
    <input name="texte2" type="text" size="20" maxlength="80">
    <input name="texte3" type="text" size="20" maxlength="80">

  17. #17
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <form name="form_profil" action="ajout_pub.php" method="post"><table width="70%" border="0"><input name="idannonce" type="hidden" value="5" />11<tr><td><img src='../files/0301042037_rent_v141_s.jpg' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="4" onclick="limite_check(this.name, 3);affCache('toto4')" /><div id="toto4" style="display:none;">
              <input name="texte1" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042111_rent_v141n_j1.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="5" onclick="limite_check(this.name, 3);affCache('toto5')" /><div id="toto5" style="display:none;">
              <input name="texte2" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042130_rent_v141n_c.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="6" onclick="limite_check(this.name, 3);affCache('toto6')" /><div id="toto6" style="display:none;">
              <input name="texte3" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042155_rent_v141n_s2.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="7" onclick="limite_check(this.name, 3);affCache('toto7')" /><div id="toto7" style="display:none;">
              <input name="texte4" type="text" size="20" maxlength="80">
          </div>
    </td></tr><tr><td><img src='../files/0301042220_rent_v141n_s1.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="8" onclick="limite_check(this.name, 3);affCache('toto8')" /><div id="toto8" style="display:none;">
              <input name="texte5" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042249_rent_v141n_t.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="9" onclick="limite_check(this.name, 3);affCache('toto9')" /><div id="toto9" style="display:none;">
              <input name="texte6" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042309_rent_v141n_j.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="10" onclick="limite_check(this.name, 3);affCache('toto10')" /><div id="toto10" style="display:none;">
              <input name="texte7" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042328_rent_v141n_ch1.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="11" onclick="limite_check(this.name, 3);affCache('toto11')" /><div id="toto11" style="display:none;">
              <input name="texte8" type="text" size="20" maxlength="80">
          </div>
    </td></tr><tr><td><img src='../files/0301042353_rent_v141n_ch2.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="12" onclick="limite_check(this.name, 3);affCache('toto12')" /><div id="toto12" style="display:none;">
              <input name="texte9" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042442_rent_v141_p2.jpg' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="13" onclick="limite_check(this.name, 3);affCache('toto13')" /><div id="toto13" style="display:none;">
              <input name="texte10" type="text" size="20" maxlength="80">
          </div>
    </td><td><img src='../files/0301042457_rent_v141_vt.JPG' border='0' alt='Votre Image' width='166' height='106' /></a><br/> <input type="checkbox" name="champ[]" value="14" onclick="limite_check(this.name, 3);affCache('toto14')" /><div id="toto14" style="display:none;">
              <input name="texte11" type="text" size="20" maxlength="80">
          </div>
    </td></table><input name="sub" type="submit" value="Valider ces choix" /></form>
    Voila le formulaire avec le changement de name : texte1, texte2....

    Du coup je pense que le code que tu as fait ne conviendrait pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $champ = $_POST['champ'];
    $value = '(';
    $i = 1;
    foreach ($champ as $cle => $valeur)
    {
         $value.= " $champ[$cle] , $_POST['texte$i'] ";
         $i++
    }
    $value.= ')';

  18. #18
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    En fait, tu parlais de trois et là j'en vois 11

    Sinon, si tu peut pas les faire en boucle dans le formulaire pour la récuppération tu fais ton code comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $champ = $_POST['champ'];
    $value = '(';
    $i = 1;
    foreach ($champ as $cle => $valeur)
    {
         $Ptexte = 'texte'.$i;
         $value.= ' $champ[$cle] , $_POST[$Ptexte] ';
         $i++
    }
    $value.= ')';
    Ou directement $_POST['texte'.$i] (à essayer puisque nous utilisons les
    simple quotes

  19. #19
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (4 , corse , 5 , tete , 6 , gfrea , )
    Tu as un moyen pour faire sauter la derniere virgule ?

  20. #20
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    Ca marche, j'ai un peu modifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $champ=$_POST['champ'];
    $value=array();
    $i=1;
    foreach ($champ as $cle => $valeur){
         $value[]= $champ[$cle].' , '.$_POST['texte'.$i];
         $i++;
    }
    $val= implode(', ',$value);
    echo '('.$val.')';
    J'ai bien en sortie : (4 , toto, 5 , tata, 6 , titi)

    Merci a tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplir une base de données via un tableau dynamique
    Par tikigod dans le forum Langage
    Réponses: 6
    Dernier message: 13/05/2013, 13h45
  2. remplir base de données avec fichier csv
    Par Xeuch dans le forum Langage
    Réponses: 8
    Dernier message: 03/04/2013, 09h11
  3. [XL-2007] Remplir base de donnée avec incrémentation
    Par fredoud dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 27/06/2011, 19h40
  4. Remplir DataGridView avec données .txt
    Par House MD dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/02/2008, 12h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo