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

SQL Procédural MySQL Discussion :

probleme checkbox et mysql


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Par défaut probleme checkbox et mysql
    bonsoir voila j'ai fais un formulaire en html et il y a des checkbox dont la valeur est stocké dans une base de donnée, enfin c'est ce que je voudrais faire car je n'y arrive pas voici mon code:

    <input type="checkbox" name="interets" value="Tracteur" />Tracteur<select name="quantite">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>


    <input type="checkbox" name="interets" value="Camion" />Camion<select name="quantite2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>

    <input type="checkbox" name="interets" value="Voiture" />Voiture<select name="">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>

  2. #2
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Par défaut
    Tes cases à cocher portent toutes le même nom (attribut name). Une "checkbox" ne fonctionne pas comme un "radio", il faut que tu donnes un nom différent à chacune d'elle :
    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
    <input type="checkbox" name="interets_tracteur" value="Tracteur" />Tracteur<select name="quantite">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    
    <input type="checkbox" name="interets_camion" value="Camion" />Camion<select name="quantite2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    
    <input type="checkbox" name="interets_voiture" value="Voiture" />Voiture<select name="">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    Le champ value te permet uniquement de redéfinir la valeur envoyée à la page cible (par défaut "on"). Si la case n'est pas cochée, le champ ne sera pas envoyée.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Par défaut
    merci pour ta réponse mais j'avais essayé cette version mais lorsque que par exemple je cliquais sur 2 catégorie et pas la 3emes alors mysql me retournais une erreur du style qu'une variable n'avait pas été renseignée du coup je suis obligé de cocher les trois cases sinon je n'accede pas à ma page de réponse savez vous pourquoi ce phénomene? je rappel que mon formulaire enregistre les données en mysql et puis elles sont transmises dans un pdf grace à fpdf, voila merci d'avance pour votre réponse.

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Par défaut
    Dans ta page qui réceptionne les données, il faut que tu fasses le test pour savoir si la variable a été postée ou non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if (isset($_POST['interets_voiture']) && $_POST['interets_voiture'] == "Voiture") {
       // La case a été cochée
       ...
    } else {
       // La case n'a pas été cochée
       ...
    }
    ?>
    Il faut que tu répètes ce test pour chaque case à cocher.
    Si ton nombre de cases est dynamique, le plus simple est de les données sous forme de tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <input type="checkbox" name="interets[tracteur]" />
    ...
    <input type="checkbox" name="interets[camion]" />
    ...
    <input type="checkbox" name="interets[voiture]" />
    Du coup ton le code PHP de réception des informations, tu boucles sur les éléments de la variable POST "interets" qui est un tableau.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Par défaut
    merci pour cette réponse mais faut que j'utilise les deux script ou juste un des deux?

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Par défaut
    Ca dépend de tes besoins.

    Pour la première solution, chaque checkbox a un nom, et tu codes le test que je t'ai mis dans mon post précédent pour chaque checkbox. C'est facile à faire mais un peu répétitif, et surtout pas très évolutif.

    La deuxième solution (avec un tableau) est un poil plus embêtante à mettre en place, mais au moins tu pourras ajouter des centres d'intérêts sans avoir à coder le test correspondant dans la page de traitement. Ce sera fait de façon dynamique puisque tu traiteras un tableau de centres d'intérêts.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Par défaut
    dans mon fichier formulaire j'ais mis ca:
    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
    <input type="checkbox" name="interets_tracteur" value="Tracteur" />Tracteur<select name="quantite">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
     
    <input type="checkbox" name="interets_camion" value="Camion" />Camion<select name="quantite2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
     
    <input type="checkbox" name="interets_voiture" value="Voiture" />Voiture<select name="">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    dans mon fichier qui récupere les données j'ai mis comme ca je sais que j'ai mal placé votre code mais en vrai je ne sais pas ou le placer car de tte facon j'ai une erreur:
    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
    <?php 
    session_start(); 
     
    include('connection.inc.php'); 
    $query = "INSERT INTO contact
     
    (idcontact,adress_client,code_postal,civilite,ville,pays,interets_tracteur,nom,quantite,quantite2,inter
     
    ets_camion,date,interets_voiture) VALUES('','".$_POST['adress_client']."','".$_POST
     
    ['code_postal']."','".$_POST['civilite']."','".$_POST['ville']."','".$_POST['pays']."','".$_POST
     
    ['interets_tracteur']."','".$_POST['nom']."','".$_POST['quantite']."','".$_POST
     
    ['quantite2']."','".$_POST['interets_camion']."','".$_POST['date']."','".$_POST
     
    ['interets_voiture']."')";
     
    IF (isset($_POST['interets_tracteur']) && $_POST['interets_tracteur'] == "tracteur") {
       // La case a été cochée
    IF (isset($_POST['interets_camion']) && $_POST['interets_camion'] == "camion") {
       // La case a été cochée
    IF (isset($_POST['interets_voiture']) && $_POST['interets_voiture'] == "Voiture") {
       // La case a été cochée
       ...
    } else {
       // La case n'a pas été cochée
       ...
     
     
    $result = mysql_query($query) or die ('Erreur SQL !<br>'.mysql_error()); 
     
    $sql="SELECT idcontact FROM contact WHERE nom = '".$_POST['nom']."'"; 
     
    $soluce = mysql_query($sql); 
    $row = mysql_fetch_array($soluce); 
     
    $_SESSION['idcontact'] = $row['idcontact']; 
     
    header('location: test.php'); 
     
    ?>
    voila merci

  8. #8
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Par défaut
    Par rapport à ce que tu as fait, il faut que tu mettes les tests avant l'insertion. Dans ce que tu as fait, tu fais le test après l'insertion, donc ça plante.

    isset($variable) te permet de savoir si une variable existe ou non.

    Voici ton code corrigé :
    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
    <?php
    session_start();
     
    include('connection.inc.php');
     
    // Test si les variables existent
    if (isset($_POST['interets_tracteur']) && $_POST['interets_tracteur'] == "Tracteur") {
       $tracteur = $_POST['interets_tracteur'];
    } else {
       $tracteur = "";
    }
    if (isset($_POST['interets_voiture']) && $_POST['interets_voiture'] == "Voiture") {
       $voiture = $_POST['interets_voiture'];
    } else {
       $voiture = "";
    }
    if (isset($_POST['interets_camion']) && $_POST['interets_camion'] == "Camion") {
       $camion = $_POST['interets_camion'];
    } else {
       $camion = "";
    }
     
    $query = "INSERT INTO contact (idcontact,adress_client,code_postal,civilite,ville,pays,interets_tracteur,nom,quantite,quantite2,interets_camion,date,interets_voiture) VALUES('','".$_POST['adress_client']."','".$_POST['code_postal']."','".$_POST['civilite']."','".$_POST['ville']."','".$_POST['pays']."','".$tracteur."','".$_POST['nom']."','".$_POST['quantite']."','".$_POST['quantite2']."','".$camion."','".$_POST['date']."','".$voiture."')";
     
    $result = mysql_query($query) or die ('Erreur SQL !<br>'.mysql_error()); 
     
    $sql="SELECT idcontact FROM contact WHERE nom = '".$_POST['nom']."'"; 
     
    $soluce = mysql_query($sql); 
    $row = mysql_fetch_array($soluce); 
     
    $_SESSION['idcontact'] = $row['idcontact']; 
     
    header('location: test.php'); 
     
    ?>

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Par défaut
    j'ai essayer l'autre version avec les tableau mais ma la valeur que je récuperer est "array" et non tracteur ou voiture ou camion: voici comment j'ai mis:
    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
    <input type="checkbox" name="interets[tracteur]" />
    Tracteur<select name="quantite">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
     
    <input type="checkbox" name="interets[camion]" />Camion<select name="quantite2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
     
    <input type="checkbox" name="interets[voiture]" />Voiture<select name="">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    après dans mon traitemen j'ai mis:
    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
    <?php 
    session_start(); 
     
    include('connection.inc.php'); 
    $query = "INSERT INTO contact
     
    (idcontact,adress_client,code_postal,civilite,ville,pays,nom,quantite,quantite2,date,interets) VALUES
     
    ('','".$_POST['adress_client']."','".$_POST['code_postal']."','".$_POST['civilite']."','".$_POST
     
    ['ville']."','".$_POST['pays']."','".$_POST['nom']."','".$_POST['quantite']."','".$_POST
     
    ['quantite2']."','".$_POST['date']."','".$_POST['interets']."')";
     
     
    $result = mysql_query($query) or die ('Erreur SQL !<br>'.mysql_error()); 
     
    $sql="SELECT idcontact FROM contact WHERE nom = '".$_POST['nom']."'"; 
     
    $soluce = mysql_query($sql); 
    $row = mysql_fetch_array($soluce); 
     
    $_SESSION['idcontact'] = $row['idcontact']; 
     
    header('location: test.php'); 
     
    ?>
    et puis dans mon code fpdf:
    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
    <?php
    ob_start(); 
    session_start();
    // (c) Xavier Nicolay
    // Exemple de génération de devis/facture PDF
     
    define('FPDF_FONTPATH','font/');
    include("connection.inc.php");
    require('invoice.php');
     
    //Select the Products you want to show in your PDF file 
    $result=mysql_query("select 
     
    adress_client,code_postal,civilite,ville,pays,nom,quantite,quantite2,date,interets from contact WHERE 
     
    idcontact='".$_SESSION['idcontact']."' ORDER BY nom"); 
    $number_of_contact = mysql_numrows($result); 
     
     
     
     
    //For each row, add the field to the corresponding column 
    while($row = mysql_fetch_array($result)) 
    { 
        $adress_client = $row["adress_client"];
        $code_postal 
    = $row["code_postal"];
        $civilite 
    = $row["civilite"];
        $ville = $row["ville"];
        $pays 
    = $row["pays"];
        $nom = $row["nom"];
        $quantite = $row["quantite"];
        $quantite2 = $row["quantite2"];
        $date 
    = $row["date"];
        $interets 
    = $row["interets"];
    } 
    mysql_close(); ect...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Par défaut
    merci beaucoup, le code corrigé que vous m'avez fait fonctionne bien, le seul truc( eh oui!) c'est que les données que je récupere je voudrais qu'elles s'affichent l'une après l'autre, je m'explique:

    lorque que la personne selectionne tracteur + voiture ces données je les insere dans un colonne nommé désignation, mais mon probleme c'est comme on a pas sélectionné camion il y a un trou entre tracteur et voiture ca veut dire si l'on avait pas sélectionné tracteur ni camion il y aurait deux espace blanc au dessu ce qui n'est pas très esthetique, étant donné que ma liste définitive sera grande je n'aimerais pas qu'il y ai un trou béant, j'ai cherché mais sans réponse avez vous peut etre une idée?

  11. #11
    Membre éclairé Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Par défaut
    Citation Envoyé par faucon54
    lorque que la personne selectionne tracteur + voiture ces données je les insere dans un colonne nommé désignation, mais mon probleme c'est comme on a pas sélectionné camion il y a un trou entre tracteur et voiture ca veut dire si l'on avait pas sélectionné tracteur ni camion il y aurait deux espace blanc au dessu ce qui n'est pas très esthetique, étant donné que ma liste définitive sera grande je n'aimerais pas qu'il y ai un trou béant, j'ai cherché mais sans réponse avez vous peut etre une idée?

    Dans ton code de génération de ton fichier pdf (si c'est là qu'est le tableau récap dont tu parles ci-dessus) tu dois insérer des conditions en fonction des variables présentes ou non.

    Tu peux utiliser isset($variable) te permet de savoir si une variable existe ou non. (comme te l'a mentionné gk14fire plus haut).

    Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    If ((isset($tracteur!="") OR (isset($camion!="") OR (isset($voiture!=""))
       {
       // tu inserts la partie de ton tableau avec les valeurs à afficher
    }
    Else
    {
    // tu inserts un retour de tableau uniquement afin de ne pas afficher de ligne vide.
    }
    Tu poses ce code dans la boucle de lecture WHILE de requête SQL et tu devrais avoir un tableau propre en fonction des choix de l'utilisateur.

    Si cela ne fonctionne pas il faudra que tu me fournisses ton code d'affichage qui pose problème et je te donnerai la solution (enfin normalement)

    A plus

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

Discussions similaires

  1. Récupérer des valeurs de checkbox dans MySQL
    Par digger dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/09/2005, 14h58
  2. [MySQL]probleme LEFT JOIN Mysql
    Par tatayoyo dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/08/2005, 20h47
  3. Probleme de droit mysql sous FC3 ??
    Par syl2095 dans le forum Débuter
    Réponses: 5
    Dernier message: 08/02/2005, 11h09
  4. probleme d'installation mysql
    Par Anonymous dans le forum Installation
    Réponses: 4
    Dernier message: 17/07/2004, 22h59
  5. [VB.NET] Problème checkBox et datagrid
    Par jagdjg dans le forum ASP.NET
    Réponses: 5
    Dernier message: 23/04/2004, 08h53

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