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

Requêtes MySQL Discussion :

check box qu'elle type de donnée ?


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut check box qu'elle type de donnée ?
    Bonjour,
    j'ai un formulaire avec des checkbox, une quinzaine, chacune attérit dans un champs typé comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Mysql
    `arts_culture` ENUM( 'yes', 'no' ) NOT NULL ,
    `commerces` ENUM( 'yes', 'no' ) NOT NULL ,
    ########################################
    formulaire :
    <input name="arts_culture" type="checkbox" value="" />
    <input name="commerces" type="checkbox" value="" />
    ########################################
    mais quand les données sont enregistrés que sa soit cochés ou pas cochés, je n'ai rien, c.a.d que les champs ne sont pas enregistrés dans la base de donnée.
    Les autres champs de type text, fonctionne sans problème, donc je me demande comment font les autres ?
    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 84
    Points
    84
    Par défaut
    Salut,
    personnellement, je verrai plutôt un type boolean ou tinyint(1) (je crois que c'est la même chose en fait) à la place de ton enum... Quel est l'intérêt de stocker des 'yes' et 'no' alors qu'un type existe pour çà?

    Nico

  3. #3
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    je savais pas, je suis dans la découverte ?
    Tu peux me donner la syntaxe stp ?
    Mais pk tinyint 1, sa renvoie quel résultat et booléens sa donne o ou 1 en fonction de coché ou paas coché, merci

  4. #4
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 84
    Points
    84
    Par défaut
    En regardant un peu dans la doc mysql, je me suis aperçu que boolean et bool semblent être des synonymes de tinyint(1).
    Et pour la syntaxe, je pense que quelquechose dans le genre devrait marcher :
    `arts_culture` BOOLEAN NOT NULL ,

    Nico

  5. #5
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    tinyint(1) ne fonctionne pas, et booléens dasn mysql il ne présente pas ce type ?

  6. #6
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Comment ça TINYINT ne fonctionne pas ? Quelle est la requête utilisée ?

    Sans indiscrétion, à quoi correspondent ces cases à cocher ?
    Il se peut que selon l'utilisation que tu veux en faire la structure ne soit pas adaptée (si un jour tu veux rajouter quelque chose en plus de arts_cultures et commerces il va falloir modifier la table pour ajouter une colonne)...
    Pensez au bouton

  7. #7
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    Donc la requette est :
    PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $requete="insert into eprojet (pseudo, sexe, age, metier, ville, quartier, mail, leprojet, animaux, arts_culture, commerces, embellissement_du_quartier, emploi_creation_activite, enfants, espaces_verts_fetes, handicap, histoire_temoignages, loisirs, protection_environnement, solidarite, sports, transports, troisieme_age, adolescents) values
     ('$pseudo', '$sexe', '$age', '$metier', '$ville', '$quartier', '$mail', '$leprojet', '$animaux', '$arts_culture', '$commerces', '$embellissement_du_quartier', '$emploi_creation_activite', '$enfants', '$espaces_verts_fetes', '$handicap', '$histoire_temoignages', '$loisirs', '$protection_environnement', '$solidarite', '$sports', '$transports', '$troisieme_age', '$adolescents')";
     if(!mysql_query($requete, $lien)) {
    	$erreurbdd=mysql_error();
    	return false;
    	}
    	echo "inserton des données ok";
    Le script complet correspond à :
    http://creatif-web.be/projet/essai_projet.php

  8. #8
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    N'ayant pas ma boule de cristal sous la main peux-tu donner donner un exemple de valeurs réelles envoyées à MySQL (avec un echo $requete)
    Pensez au bouton

  9. #9
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    En faite j'ai besoin de savoir quand l'utilisateur à cocher.
    Le résultat est ici :
    http://creatif-web.be/projet/essai_projet.php
    Mon script est sans echo mais avec un heredoc :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    <?php
    	    print <<<EOA
    <form method="post" action="{$_SERVER['PHP_SELF']}">
    <fieldset><legend>Projet</legend><p>
    vous avez une idée ou un projet pour votre quartier ?<br />
    merci de l’exprimer ci-dessous en quelques lignes :<br />
      <textarea name="leprojet" cols="40" rows="10" onmouseover="this.className='formaOver'" onmouseout="this.className='formaOut'"></textarea>   
    </p><p>
    Nous aimerions avoir quelques informations à votre sujet :
    </p><p>
      Votre Prénom ou Pseudo :
      <input type="text" name="pseudo" onKeyUp="if(this.value!='') this.size=this.value.length" maxlength="70" minlength="30" onmouseover="this.className='formaOver'" onmouseout="this.className='formaOut'"
      />
      </p><p>
      <input name="sexe" type="radio" value="Homme" />Femme
      <input name="sexe" type="radio" value="Femme" />Homme
      </p><p>
      Votre âge :
      <input type="text" name="age" onKeyUp="if(this.value!='') this.size=this.value.length" maxlength="40" onmouseover="this.className='formaOver'" onmouseout="this.className='formaOut'"
      />
      </p>
      <p>
      Votre metier
      <input type="text" name="metier" onKeyUp="if(this.value!='') this.size=this.value.length" maxlength="70" minlength="30" onmouseover="this.className='formaOver'" onmouseout="this.className='formaOut'"
      />
      </p><p>
      Votre quartier
      <input type="text" name="quartier" onKeyUp="if(this.value!='') this.size=this.value.length" maxlength="70" minlength="30" onmouseover="this.className='formaOver'" onmouseout="this.className='formaOut'"
      />
      </p><p>
      Le ville auquel vous pensez :
      <input type="text" name="ville" onKeyUp="if(this.value!='') this.size=this.value.length" maxlength="70" minlength="30" onmouseover="this.className='formaOver'" onmouseout="this.className='formaOut'"
      />
      </p><p>
      Votre adress e-mail
      <input type="text" name="mail" onKeyUp="if(this.value!='') this.size=this.value.length" maxlength="70" minlength="30" onmouseover="this.className='formaOver'" onmouseout="this.className='formaOut'"
      />
      </p><p>
      <input type="hidden" name="date" onKeyUp="if(this.value!='') this.size=this.value.length" maxlength="70" minlength="30" onmouseover="this.className='formaOver'" onmouseout="this.className='formaOut'"
      />
      </p><p>
    ##### ICI COMMENCE LES CHECBOXS ###############
    animaux<input name="animaux" type="checkbox" value="" />
    arts & culture<input name="arts_culture" type="checkbox" value="" />
    commerces<input name="commerces" type="checkbox" value="" />
    embellissement du quartier<input name="embellissement_du_quartier" type="checkbox" value="" />
    emploi & création activité<input name="emploi_creation_activite" type="checkbox" value="" />
    enfants<input name="enfants" type="checkbox" value="" />
    espaces verts & fêtes<input name="espaces_verts_fetes" type="checkbox" value="" />
    handicap<input name="handicap" type="checkbox" value="" />
    histoire & témoignages<input name="histoire_temoignages" type="checkbox" value="" />
    loisirs<input name="loisirs" type="checkbox" value="" />
    protection & environnement<input name="protection_environnement" type="checkbox" value="" />
    solidarité<input name="solidarite" type="checkbox" value="" />
    sports<input name="sports" type="checkbox" value="" />
    transports<input name="transports" type="checkbox" value="" />
    troisieme âge<input name="troisieme_age" type="checkbox" value="" />
    adolescents<input name="adolescents" type="checkbox" value="" />
    <input type="submit" value="Envoyer !" />
    </fieldset> 
    </form>
    EOA;
     
    $pseudo=mysql_real_escape_string($pseudo); //Protège les caractères spéciaux d'une commande SQL
    $sexe=mysql_real_escape_string($sexe);
    $age=mysql_real_escape_string($age);
    $metier=mysql_real_escape_string($metier);
    $ville=mysql_real_escape_string($ville);
    $quartier=mysql_real_escape_string($quartier);
    $mail=mysql_real_escape_string($mail);
    $leprojet=mysql_real_escape_string($leprojet);
    $animaux=mysql_real_escape_string($animaux);
    $arts_culture=mysql_real_escape_string($arts_culture);
    $commerces=mysql_real_escape_string($commerces);
    $embellissement_du_quartier=mysql_real_escape_string($embellissement_du_quartier);
    $emploi_creation_activite=mysql_real_escape_string($emploi_creation_activite);
    $enfants=mysql_real_escape_string($enfants);
    $espaces_verts_fetes=mysql_real_escape_string($espaces_verts_fetes);
    $handicap=mysql_real_escape_string($handicap);
    $histoire_temoignages=mysql_real_escape_string($histoire_temoignages);
    $loisirs=mysql_real_escape_string($loisirs);
    $protection_environnement=mysql_real_escape_string($protection_environnement);
    $solidarite=mysql_real_escape_string($solidarite);
    $sports=mysql_real_escape_string($sports);
    $transports=mysql_real_escape_string($transports);
    $troisieme_age=mysql_real_escape_string($troisieme_age);
    $adolescents=mysql_real_escape_string($adolescents);
     
    require ("inc/connexion.inc.php");
    $lien=mysql_connect(SERVEUR, NOM, PASSE);
    // test de connexion au serveur
    if (!$lien) {
    	echo "Désolé, connexion à " .SERVEUR ." impossible\n"; }
    	echo "merci<br />";
    // test de connexion à la base
    if (!mysql_select_db(BASE, $lien)) {
    	echo "Acces to base denied " .BASE ." impossible\n";
    	}	else { echo "selection de la base ok<br />
    	<p>j'enregistre ton ip :<span class=\"red\">".$_SERVER["REMOTE_ADDR"]."</span>, merci</p>"; }
     
    if (!mysql_select_db(BASE, $lien)) {
    	$erreurbdd=mysql_error();
    	return false;
    }
    $requete="insert into eprojet (pseudo, sexe, age, metier, ville, quartier, mail, leprojet, animaux, arts_culture, commerces, embellissement_du_quartier, emploi_creation_activite, enfants, espaces_verts_fetes, handicap, histoire_temoignages, loisirs, protection_environnement, solidarite, sports, transports, troisieme_age, adolescents) values
     ('$pseudo', '$sexe', '$age', '$metier', '$ville', '$quartier', '$mail', '$leprojet', '$animaux', '$arts_culture', '$commerces', '$embellissement_du_quartier', '$emploi_creation_activite', '$enfants', '$espaces_verts_fetes', '$handicap', '$histoire_temoignages', '$loisirs', '$protection_environnement', '$solidarite', '$sports', '$transports', '$troisieme_age', '$adolescents')";
     if(!mysql_query($requete, $lien)) {
    	$erreurbdd=mysql_error();
    	return false;
    	}
    	echo "inserton des données ok";
    ?>

  10. #10
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Je me suis mal fait comprendre.

    Tu as une table avec des colonnes animaux, arts_culture, commerces ... de type TINYINT, ok ?

    Donc une requête du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO eprojet (pseudo, sexe, animaux, arts_culture, commerces)
    VALUES ('toto', 'M', 1, 0, 1)
    va fonctionner puisqu'on donne à MySQL des valeurs valides (1, 0, 1) pour des colonnes de type TINYINT.

    En revanche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO eprojet (pseudo, sexe, animaux, arts_culture, commerces)
    VALUES ('toto', 'M', 'yes', 'no', 'yes')
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO eprojet (pseudo, sexe, animaux, arts_culture, commerces)
    VALUES ('toto', 'M', '', '', '')
    ne fonctionneront probablement pas.

    A toi de te débrouiller pour que ton script PHP donne des valeurs valables à MySQL, à savoir des chaines de caractères quand il attend des chaines, des nombres quand il attend des nombres...
    Tu ne peux pas te contenter de construire une chaine de requête SQL improbable et de balancer le tout à MySQL en espérant qu'il saura se débrouiller avec.

    La seule façon de vérifier la validité d'une requête avant de la transmettre est d'afficher le contenu de la chaine en faisant un echo $requete.
    Pensez au bouton

  11. #11
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 497
    Points : 194
    Points
    194
    Par défaut
    De cette manière sa ne fait pas avancé la chose, puisque, il me rentre les valeurs en fonction de "values", àlors que c'est l'utilisateur qui coche et donc insère ou pas une donnée.
    J'ai trouvé une solution, qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        if (isset($data['boite1']) || $data['boite1'] <> '') echo "transports<input type='checkbox' name='boite1' value='transports' checked='checked'>";
        else echo "transports<input type='checkbox' value='transports' name='boite1'>";
    requette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $requete="insert into latable (boite0, boite1, boite2, boite3, boite4) values
     ('$boite0', '$boite1', '$boite2', '$boite3', '$boite4')";
     if(!mysql_query($requete, $lien)) {
    	$erreurbdd=mysql_error();
    	return false;
    	}
    	echo "la requete est : $requete";
    Je pense qu'on peux l'améliorer, mais sa fonctionne

    edit
    j'ai oublié de dire que le type je les mis en varchard, pour avoir le "values" comme valeur par exemple "tranport" pour ci-dessus.
    Merci Maximilius ;-))

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

Discussions similaires

  1. Récupérer des données de check box
    Par Nass42 dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2012, 15h01
  2. [MySQL] Envoi des données d'un formulaire avec une check box ?
    Par kenjiendo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 02/08/2011, 12h32
  3. Réponses: 6
    Dernier message: 14/01/2008, 12h45
  4. Réponses: 2
    Dernier message: 22/09/2003, 11h23
  5. Convertir un type de donnée sous SQL Server
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/08/2003, 15h15

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