Checkbox dans mysql?? [Résolu]

ashron54
Messages postés
39
Date d'inscription
mardi 19 mai 2009
Dernière intervention
26 juin 2009
- 16 juin 2009 à 16:43 - Dernière réponse : kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 17 juin 2009 à 22:51
Bonjour,
d'abord je remercie les personnes qui prendrons le temps de lire mon message et d'y répondre :)

Donc je m'explique, j'ai un petit formulaire sous forme de table sur une page, dans celui-ci figure des zone de saisi et des checkbox.
j'aimerais savoir comment enregistré la valeur de mes checkbox dans ma base de donnée mysql, je ne sais pas trop quoi donner comme type à mes champs.

voici un extrait de mon formulaire :

<table border= "1">
        <tr>
            <td> Accessoires fournis : </td>
            <td></td>
            <td>Alimentation</td>
            <td>---------------------------------------</td>
            <td></td>
            <td>Sacoche</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td>CD/DVD</td>
            <td>---------------------------------------</td>
            <td></td>
            <td>Identifiant FAI</td>
        </tr>

Et j'aimerais aussi pouvoir consulter ces formulaires qui serait enregistré dans la base de donnée, les recréer dans le meme schéma de tableau que celui que j'ai fais précédemment. Je vais vous montrer mon code pour que vous compreniez, en faite il y a une partie du formulaire qui est généré en php, car cette partie peut etre modifiable via la base de donnée, son contenu peut évoluer.

<?php
                $connexion = mysql_connect("MySQL","MonUtilisateur","MonMDP")
                    or die("Connexion au serveur impossible");
                $db=mysql_select_db("MaBase",$connexion)
                    or die("Non connexion à la base de donnée");
                   
                $requete ="SELECT * FROM MaBase;";
                $req = mysql_query($requete) or die('Erreur SQL !'.$sql.'
'.mysql_error());
               
                while($res = mysql_fetch_assoc($req))
                    {
                    print '<tr><td></td><td>'.$res['installation'].'</td>
                        <td></td><td>'.$res['MaJ'].'</td>
                        <td></td><td>'.$res['Analyse'].'<td></td></td>
                        <td>'.$res['Pieces'].'</td><td>€</td>';
                        }
            mysql_close();
            ?>

J'ai peut etre fait des erreur dans les noms mais je suis encore débutant, je ne sais pas comment faire pour donner un nom différent à chacune des checkbox qui va être générée.
Et donc apres, lorsque ce formulaire sera enregistré, j'aimerais pouvoir le regénéré, mais je ne sais pas si les valeurs des checkbox que j'ai enregistré seront correct ou même attribué correctement.
Je ne sais pas si je suis très clair mais demandez moi si vous avez besoin d'autres explications, j'essayerais de vous éclairer du mieu que je peux.

Merci
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 17 juin 2009 à 17:49
3
Merci
Quelques remarques en vrac "en allant" :
Ton formulaire et la structure de ta DB me paraissent bien trop basique. Même si il s'agit d'une PME tu as tout à gagner à le rendre plus conséquent. Tu y passera plus de temps dans la conception mais tu y gagnera énormément par la suite lors de modifs, de saisies, d'extension, de recherches, ....

Par exemple tu aurais tout à gagner à créer une table clients et d'écrire 2/3 autres pages qui permettent d'ajouter, modifier, supprimer un client. Tu ajoutes alors un champ type select (ou autre) qui permet de choisir le client dans le formulaire (et les champs nom, prénom, etc sont remplis automatiquement).
En faisant cela tu évites au technicien de retaper toutes les coordonnées, avec tous les risques que ça comporte. Par exemple une erreur de frappe sur le tel, et hop, impossible de contacter le client sans rechercher un num valide dans la DB.

Les exemples sont multiples, ainsi il faut toujours :
- faciliter au max la saisie
- verrouiller au max toute erreur, en proposant des listes déjà existantes.
- découper intelligemment les données afin d'optimiser les recherches, update, etc ...

Toi seul peux déterminer efficacement la structure de ta DB en fonction de tes besoins et de tes attentes; une table "techniciens" peut être nécessaire si tu as 200 CDI et 400 interims et que tu souhaites avoir des données les concernant (domaines de compétences, tel interne à la boîte, ...) ... s'ils ne sont que 4 ça ne sert à rien.
Ce n'est qu'un exemple, j'imagine bien que vous n'êtes pas 500

Il est également nécessaire que tu créé des index sur tes tables (je te laisse te renseigner) et que tu les choisisse avec soin.

Sans y réfléchir trop voilà un schéma :
table client :
ID_CLIENT (index)
nom, prénom, tel, etc ...

table intervention :
ID_CLIENT (index)
NUM_FACTURE (index)
technicien
description_du_pb
autres

table accesoires :
NUM_FACTURE (index)
alimentation, sacoche, etc ...

table installation :
NUM_FACTURE (index)
windows XP, linux, Vista, ...

tables maj, analyse, pieces sur le même schéma que installation. Ces données évolueront à coup sur, c'est donc une bonne idée de les isoler par table.

Ce schéma demande sans doute à être amélioré (et il y a surement des erreurs), le but étant de te donner des pistes. Pense que demain tu voudras peut être mettre en place des promotions pour tes clients qui ont fait X fois appel à tes services, ou ont déboursés plus de X euros, ou encore proposer des migrations vers windows 7 aux seuls clients windows, tout ça par mailing. Avec ta structure actuelle tu vas galèrer et ce sera lourd pour le serveur.

je file, j'ai trop parlé

Cordialement,

Kohntark -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de kohntark
syndrael
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
- 16 juin 2009 à 16:54
0
Merci
Tu leur donne la valeur que tu veux sachant que le boolèen n'existe pas en tant que tel dans MySQL. Perso je prends un TINYINT(1).
S.
Commenter la réponse de syndrael
ashron54
Messages postés
39
Date d'inscription
mardi 19 mai 2009
Dernière intervention
26 juin 2009
- 16 juin 2009 à 17:05
0
Merci
Ok ca c'est ce que j'ai fais dans ma base de donnée, seulement quand j'enregistre mon formulaire, les valeurs des champs correspond aux checkbox sont à 0, meme si une checkbox est coché lors de la validation.
Commenter la réponse de ashron54
syndrael
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
- 16 juin 2009 à 18:20
0
Merci
Ok.. alors dans ton insert il ne faut pas mettre "$_POST[nom de ton checkbox]" mais isset($_POST[nom de ton checkbox])?1:0
Tu comprends cette notation ??
S.
Commenter la réponse de syndrael
ashron54
Messages postés
39
Date d'inscription
mardi 19 mai 2009
Dernière intervention
26 juin 2009
- 16 juin 2009 à 18:26
0
Merci
isset c'est pour vérifier si une valeur existe oui je connais, mais comme tu me l'écris pour mettre dans une base de donnée je ne voie pas du tout

moi j'ai quelquechose du genre

$req="insert into table (alimentation, sacoche)
VALUES ('".$_REQUEST['Alim']."','".$_REQUEST['sacoche']."')

et il faudrait que j'ai quoi à la place?

$req="insert into table (alimentation, sacoche)
values (isset($_request['Alim'])?1:0, isset($_request['sacoche'])?1:0);"

ou alors j'ai pas bien compris ^^"
Commenter la réponse de ashron54
kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 16 juin 2009 à 18:52
0
Merci
Salut,

Je pense qu'il serait bien d'avoir la structure de ta base et surtout ce que tu comptes réellement faire : les alim, sacoches, ... sont associés à un produit ? une commande utilisateur ? autre ?, etc ...

Cordialement,

Kohntark -
Commenter la réponse de kohntark
syndrael
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
- 16 juin 2009 à 19:32
0
Merci
Je suis d'accord avec Kohntark.. hélas je te conseillerai de revenir en arrière sur la conception de ta base avant de travailler sur les checkbox.. en espérant que tu ne le prendras pas mal.
S.
Commenter la réponse de syndrael
ashron54
Messages postés
39
Date d'inscription
mardi 19 mai 2009
Dernière intervention
26 juin 2009
- 17 juin 2009 à 09:14
0
Merci
Merci de vos réponses, je vais vous montrer quelques images de l'organisation de ma base de données pour vous expliquer,
donc dans un premier temps, je dois m'en tenir a ce type de formulaire de gestion de la maintenance d'un PC, sachant que la partie dans l'incolade rouge doit etre modifiable dans son contenu :

http://img530.imageshack.us/img530/5003/formulairez.jpg

Donc ici ma table principal qui récupère les informations de la première partie "fixe" du formulaire :

http://img530.imageshack.us/img530/6402/tablemaintenance.jpg

et ici l'autre table qui correspond a la partie du bas du formulaire, qui elle est donc modifiable lors de la saisi du formulaire, ou dans la base de données :

http://img44.imageshack.us/img44/1378/tablesav.jpg

Voila, je ne sais pas si j'ai choisi la meilleure solution, surement que non, mais pour l'instant c'est la seule que j'ai sous la main ^^"
Commenter la réponse de ashron54
ashron54
Messages postés
39
Date d'inscription
mardi 19 mai 2009
Dernière intervention
26 juin 2009
- 17 juin 2009 à 18:11
0
Merci
D'accord, je vais essayer de réaliser ca.
j'avais aussi dans l'idée de créer une table pour chaque catégorie (installation, mise a jour, etc..)
Je vais donc me lancer dans la conception de ces superbes tables ^^

Par contre, je ne sais toujours pas comment stocker et restituer la valeur d'une checkbox de mon formulaire.
Commenter la réponse de ashron54
kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
- 17 juin 2009 à 22:51
0
Merci
j'avais aussi dans l'idée de créer une table pour chaque catégorie (installation, mise a jour, etc..)

= >
je parle de ces tables là quand je dis :
"table installation :
NUM_FACTURE (index)
windows XP, linux, Vista, ...

tables maj, analyse, pieces sur le même schéma que installation. Ces
données évolueront à coup sur, c'est donc une bonne idée de les isoler
par table."

Par contre, je ne sais toujours pas comment stocker et restituer la valeur d'une checkbox de mon formulaire.
=>
Syndrael t'a répondu là dessus (isset)
La requête que tu as écrit sur le insert est erronée, il faudra de toute façon la ré écrire avec la nouvelle structure et elle n'aura plus grand chose à voir.

Kohntark -
Commenter la réponse de kohntark

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.