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

Langage PHP Discussion :

Checkbox et insertion dans la base de donnée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut Checkbox et insertion dans la base de donnée
    Bonjour,
    dans le cadre de mon stage je dois crée une checkboxe qui afficherai contiendrai l' id produit d'une dizaine de produit, ensuite récuperer l'id de ces produit pour les envoyer dans une table.
    Mon problème est que malheureusement mon code n'envoie que le premier id_produit sélectionner et j'aimerai qu'il m'en envoi 1 a 10 selon le nombre de produit selectionner.

    voici le code
    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
    35
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <body>
    <?php
    include('Connexion.php');
      require('includes/application_top.php');
    $rp_query = tep_db_query("select products_id from " . TABLE_PRODUCTS . " limit 10 ");
    	    while ($random_product = tep_db_fetch_array($rp_query)) {
    ?>
    <form action="checkbox.php">
    <input type="hidden" name="envoi" value="yes">
    <input type="checkbox" name="options[]" value="<?php echo $random_product['products_id']; ?>"><?php echo $random_product['products_id']; ?><br>
     <?php
     }
     ?>
     <input type="submit">
    </form>
     <?php
    $envoi = $_GET['envoi'];                //aiguilleur
    $options = $_GET['options'];         //Contenu des cases à cocher
             if ($envoi == 'yes') {
                 $options_text = implode($options);
     
     
    while($myquestion = array_shift($options)) {
    echo $myquestion;
    $sql="insert into boxe values('test',".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.")";
    mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
       }
    	   }
    	   ?>
     </body>
    </html>
    J'espère avoir été clair.
    Merci d'avance pour vos réponse !

  2. #2
    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
    Bonjour,

    Ton while, il doit être dans la <form> et non le contraire ....

    Edit: dans la form, il faut comprendre pour encadrer les input checkbox pas les hidden et submit

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut
    Malheureusement cela ne change rien, il m'envoie toujours le même id dans les différents champs de ma table.

    Pourtant si j'ai bien compris t'as remarque sa devrais donner sa ?!
    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
    35
    36
    37
    38
    39
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <body>
    <form action="checkbox.php">
    <input type="hidden" name="envoi" value="yes">
    <?php
    include('Connexion.php');
      require('includes/application_top.php');
    $rp_query = tep_db_query("select products_id from " . TABLE_PRODUCTS . " limit 10 ");
    	    while ($random_product = tep_db_fetch_array($rp_query)) {
    ?>
     
    <input type="checkbox" name="options[]" value="<?php echo $random_product['products_id']; ?>"><?php echo $random_product['products_id']; ?><br>
     <?php
     
     ?>
     <input type="submit">
     
     <?php
     
    $envoi = $_GET['envoi'];                //aiguilleur
    $options = $_GET['options'];         //Contenu des cases à cocher
             if ($envoi == 'yes') {
                 $options_text = implode($options);
     
     }			 
    while($myquestion = array_shift($options)) {
    echo $myquestion;
    $sql="insert into boxe values('ahah',".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.")";
    mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
       }
     
     
    	   ?>
    	   </form>
     </body>
    </html>

  4. #4
    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
    Non, non, non et non ... ça va pas du tout ....

    Je t'explique, le formulaire sert à collecter des informations (sous les formes d'input, select, checkbox, etc) et de les envoyer par POST ou GET à une page php (en locurrence la même pour toi) pour le traitement.

    D'après ton code tu mets tout dans le formulaire (les includes, ouverture base etc ...).

    Ton code serait donc:
    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
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    //// LES BASES, HTML, connexion et la requête
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <body>
    <?php
    include('Connexion.php');
    require('includes/application_top.php');
    $rp_query = tep_db_query("select products_id from " . TABLE_PRODUCTS . " limit 10 ");
    ?>
     
    //// TON FORM de saisies de données
    <form action="checkbox.php">
    <?php
         while ($random_product = tep_db_fetch_array($rp_query))
    ?>
               <input type="checkbox" name="options[]" value="<?php echo
                      $random_product['products_id']; ?>"><?php echo
                      $random_product['products_id']; ?><br>
     
              <input type="hidden" name="envoi" value="yes">
              <input type="submit">
    </form>
     
     
    //// LE TRAITEMENT
     <?php
    $envoi = $_GET['envoi'];                //aiguilleur
    $options = $_GET['options'];         //Contenu des cases à cocher
    if ($envoi == 'yes') $options_text = implode($options);
    while($myquestion = array_shift($options)) {
        echo $myquestion;
        $sql="insert into boxe values
    ('ahah',".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$my question.",".$myquestion.",".$myquestion.")";
    mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
    }
    ?>
     
     </body>
    </html>
    As tu des questions, ou c Ok ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut
    Déjà merci pour ton aide, mais malheureusement le problème persiste.
    D'une part j'ai re-modifier le code puisque je ne peux pas mettre le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <input type="submit">
    </form>
    dans la boucle while, car cela afficherai un bouton par produit.

    Voila donc le code re re modifier :p
    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
    35
    36
    37
    38
    39
    40
    41
    42
     
    //// LES BASES, HTML, connexion et la requête
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <body>
    <?php
    include('Connexion.php');
    require('includes/application_top.php');
    $rp_query = tep_db_query("select products_id from " . TABLE_PRODUCTS . " limit 10 ");
    ?>
     
    // TON FORM de saisies de données
     
    <form action="checkbox2.php">
    <?php
         while ($random_product = tep_db_fetch_array($rp_query)){
    ?>
               <input type="checkbox" name="options[]" value="<?php echo $random_product['products_id']; ?>">
    		   <?php echo $random_product['products_id']; ?><br>
     
              <input type="hidden" name="envoi" value="yes">
     
     
     <?php } ?> 
     <input type="submit">
    </form>
    //// LE TRAITEMENT
     <?php
    $envoi = $_GET['envoi'];                //aiguilleur
    $options = $_GET['options'];         //Contenu des cases à cocher
    if ($envoi == 'yes') $options_text = implode($options);
    while($myquestion = array_shift($options)) {
        echo $myquestion;
    $sql="insert into boxe values('ahah',".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.")";
    mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
    }
    ?>
     
     </body>
    </html>
    Mais comme je te le disais le problème persiste, lorsque j'envoi les id dans la base de donnée, si je sélectionne par exemple le produit ayant pour id 5,6,7,8 cela m'enverra sa dans la bdd : insert into boxe values('ahah',5,5,5,5,5,5,5) alors que je voudrais que ca envoi insert into boxe values('ahah',5,6,7,8).

    edite: je viens de me rendre compte que j'ai aussi une erreur "Warning: array_shift(): The argument should be an array in d:\apache\www\1webdu1\checkbox2.php on line 33", se doit être un probleme au niveau de la fonction implode je suppose ?

  6. #6
    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 le while, j'avais pas mis de {} donc il prennait uniquement l'input cb et non le submit, tu aurait pu laisser comme celà ...
    Maintenant il faut que enlève aussi de ton while le:
    <input type="hidden" name="envoi" value="yes">
    Je sais pas ce que tu veux faire avec cette valeur, mais je pense qu'il faudra revoir celà à la fin.

    Bon passons maintenant au traitement (que j'avais pas regardé avant )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //// LE TRAITEMENT
     <?php
    $envoi = $_GET['envoi'];                //aiguilleur
    $options = $_GET['options'];         //Contenu des cases à cocher
    if ($envoi == 'yes') $options_text = implode($options);
    while($myquestion = array_shift($options)) {
        echo $myquestion;
    $sql="insert into boxe values('ahah',".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.",".$myquestion.")";
    mysql_query($sql) or die ('erreur sur '.$sql.'<br/>'.mysql_error());
    }
    ?>
    D'après ça tu auras forcement 'values('ahah',5,5,5,5,5,5,5)' qui correspond à ta première valeur '5'.

    ALORS: première erreur, ta table box ne peut pas être variable au nombre de cd cochés, donc tu ne peut pas avoir des insert suivant une liste telle que:
    'values('ahah',5,6,7,8)'
    'values('ahah',5,5,5,5,5,5)'
    'values('ahah',5,6)'
    ....
    ou alors le format est fixe dans ce cas, il faut lire toutes tes valeurs de $_GET['options']; pour faire un insert, comprends tu?
    Donnes moi plus d'info sur le nombre de cd, le format de ta table, ce que tu veux sur plusieurs insert ???

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

Discussions similaires

  1. Parcours d'un fichier et insertion dans une base de données !
    Par condor_01 dans le forum Général Java
    Réponses: 2
    Dernier message: 24/04/2008, 09h24
  2. [paradox7] Problème d'insertion dans la base de données
    Par mouna201 dans le forum Bases de données
    Réponses: 4
    Dernier message: 01/02/2006, 09h47
  3. problème d'insertion dans une base de données
    Par belmansour tidjani dans le forum JDBC
    Réponses: 7
    Dernier message: 18/01/2006, 22h13
  4. [Hibernate] problème d'insertion dans la base de données
    Par Willy7901 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 18/08/2005, 13h19
  5. Probleme d'insertion dans la base de données
    Par PrinceMaster77 dans le forum ASP
    Réponses: 5
    Dernier message: 11/06/2004, 16h21

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