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 :

Insertion checkbox dans bdd mysql


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Insertion checkbox dans bdd mysql
    Salut à tous,
    je suis nouveau dans ce forum et débutant dans la programmation php.Il est certainement simple pour bcp d'entre vous.S'il l'était aussi pour moi je ne me tournerais pas vers vous.Alors voiçi mon pb:
    je souhaite inserer des checkbox cochées dans ma bdd mysql.Je travaille sous php.
    j'ai vraiment besoin de votre.
    Cordialement

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Points : 366
    Points
    366
    Par défaut
    bonjour,
    commencez par mettre un bout de code de ce que vous avez fait

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Faire des recherche ce n'est pas mal non plus, et dans ce domaine, il y en a des tonnes, c'est peut être le domaine où il y a le plus d'informations, de code, tutos, faq, forums, sites spécialisés, etc ...

    Ne serait ce que par ici : sources
    Et particulièrement : Sommaire > Formulaires et Sommaire > Bases de données

    Ne pas oublier les autres médias, comme les livres/bouquins, et selon son niveau et celui que l'on veux atteindre, il sera difficile (ou très long) de faire sans.
    Internet, les forums, tutos, c'est bien car gratuit, mais c'est la jungle aussi.

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    tout d'abord merci pour votre disponibilité.je vais essayer de vous orienter
    Formulaire(la partie qui m'interesse)

    <html>
    <body>
    ...
    avec famille:<input type="checkbox" name="option" value="AF">
    sans famille:<input type="checkbox" name="option" value="SF">
    avec hospitalisation:<input type="checkbox" name="option" value="AH">
    sans hospitalisation:<input type="checkbox" name="option" value="SH">
    ...
    </body>
    </html>

    script php
    pas de pb de connexion à ma bdd
    <?php
    ...
    $taboptions = (isset($_POST['option']))?$_POST['option']:null;

    if (!empty($taboptions)) {
    foreach($taboptions as $option => $valeur)
    $reqCl='insert into adherent values("'.$_POST['codemsg'].'","'.$_POST['nom'].'","'.$_POST['prenom'].'","'.$valeur.'","'.$valeur.'")';
    mysql_query($reqCl) or die ('erreur SQL!'.$reqCl.'<br />'.mysql_error());
    ...
    ?>

    il y a 4 checkbox mais deux sont choisies et envoyées dans les champs option1 et option2 de ma bdd.serait-il possible de stocker ses 2 valeurs dans un seul champ?option1?ou option2?
    avec ce bout de code j'ai juste une valeur qui apparaît dans les 2 champs la deuxième étant inexistante.
    Merci pour vos réactions

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    il y a 4 checkbox mais deux sont choisies et envoyées dans les champs option1 et option2 de ma bdd.serait-il possible de stocker ses 2 valeurs dans un seul champ?option1?ou option2?
    A mon sens, ce n'est pas des checkbox qu'il faudrait, mais des boutons radios, 2 groupes de boutons radios.
    - groupe famille, avec 2 propositions : AF et SF mais 1 seul choix parmis les 2.
    - groupe hospitalisation, avec 2 propositions : AH et SH (idem)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    avec famille:<input type="radio" name="famille" value="AF">
    sans famille:<input type="radio" name="famille" value="SF">
    avec hospitalisation:<input type="radio" name="hospitalisation" value="AH">
    sans hospitalisation:<input type="radio" name="hospitalisation" value="SH">
    Au bout, tu les récupère avec $_POST['famille'] et $_POST['hospitalisation']


    Petite parenthèse au passage.
    Si on opte pour des checkbox, ils ne doivent pas avoir le même noms, car ils sont individuels, ils n'ont aucun rapport entre eux, au même titre qu'un champ de type text. C'est pour cette raison qu'une seule valeur t'es retournée (et c'est la dernière théoriquement).

    Ceci contrairement au bouton radios, où il y a une notion de groupe, du fait qu'1 seul choix sera fait parmi le groupe (1 seule valeur sera retournée)


    Pour faire du Php et SQL, il faut au moins que les bases HTML soient acquises, sinon ça va être galère.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    c'est effectivement la dernière valeur qui est envoyée dans la bdd.je vais exploiter ta proposition qui me paraît plus simple et raisonnable.Pour les bases du html j'en ai et j'en découvre jour après jour.mais les checkbox me posent de gros pb.
    sinon merci pour ta contribution

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    e vais exploiter ta proposition qui me paraît plus simple et raisonnable.
    Disons que ce n'est que c'est plus simple, et même raisonnable, c'est que les checkbox répondent à un besoin, et les boutons radios à un tout autre besoin.
    Les fonctionnalités ne sont pas du tout les mêmes, au même titre qu'un champ de texte, qu'un select, textarea, etc ...
    Chacun ont leur spécificités. autant dire qu'ils n'ont aucun rapport entre eux.

    C'est à toi de faire le bon choix, d'utiliser les contrôles adaptés au besoin.
    C'est pour cela qu'il faut savoir ce que fait tel ou tel contrôle HTML, sinon, tu ne peux pas savoir lequel utiliser selon la situation.

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    quelqu'un peut m'expliquer comment manipuler les checkbox avec php?je vais être plus clair.
    j'ai une liste d'option sous forme de checkbox et l'utilisateur doit cocher suivant son choix.mon pb est que je ne sais comment ranger les checkbox selectionner dans ma table.
    Prière de me venir en aide avec un petit exemple de 3 ou 4 checkbox svp.
    Je pourrais m'en sortir après.
    Merci pour votre aide.

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Prière de me venir en aide avec un petit exemple de 3 ou 4 checkbox
    Je t'ai pourtant donné les explications, et par conséquent la solution : Donner des noms différents à chaque checkbox (et nom pas tous avec "option").

    Vu qu'il auront des noms différents, suffit de les vérifier comme tu l'as fait (2ème post), mais avec autant de vérifs qu'il y a de noms différents (ou de checkbox).
    Si tu en mets 4, tu auras 4 valeurs. Soit celles retournées car cochées, soit nulles.

    En somme, c'est presque pareil que des champs de type texte (je dis bien presque).


    Une fois obtenu tes 4 valeurs (quelle soient nulles ou pas) tu pourras faire ta requête.
    Où est le problème ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    mon pb est que je n'arrive pas à m'en sortir avec les checkbox.Je veux effectuer des choix à partir des checkbox et envoyer les valeur sélectionner dans ma bdd.j'ai juste besoin d'un exemple assez concret pour que je fasse le reste.Pour plus d'infos:
    j'ai une table avec plus de 12 champs dont 12 font référence à 12 événements différents.alors je ne sais comment m'y prendre avec les checkbox.la difficulté réside dans l'insertion dans ma bdd des checkbox cochées.Raison pour laquelle je souhaite juste avoir un exemple avec une liste de 4 checkbox et dont 3 seront sélectionner par exemple.
    Toutes mes sincères excuses pour le dérangement et merci pour votre soutien.

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    C'est peut être au niveau de ta Bdd ou ça ne va pas, ou du moins, le code que tu donne me parais douteux, où tu as fais une erreur.

    Donc avant de te proposer je ne sais quel code foireux, il serait bon de préciser un peu plus à ce niveau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($taboptions as $option => $valeur)
    $reqCl='insert into adherent values("'.$_POST['codemsg'].'","'.$_POST['nom'].'","'.$_POST['prenom'].'","'.$valeur.'","'.$valeur.'")';
    mysql_query($reqCl) or die ('erreur SQL!'.$reqCl.'<br />'.mysql_error());
    Je vois une boucle sur $taboptions.
    Mais après tu mets 2 fois $valeur ? C'est ça qui m'interpelle.

    Pour mieux expliquer, donne un exemple avec des valeurs attendues, et aussi le nom des champs :
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO adherent (champ1, champ2, etc ...) VALUES ('valeur1', 'valeur2', etc ...)
    Et toutes autres explications qui pourrait être utiles, qui ôterait toute ambiguïté

  12. #12
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Encore merci pour ton intervention.Le code donné plus a déjà trouvé sa solution grace à la proposition que tu m'a faite.et je t'en suis reconnaissant.
    voici mon pb:
    <html>
    <body>
    .... on se passe de tout autre déclaration de mon formualire ....
    déclaration des checkbox
    Mois 01:<input type="checkbox" name="recouvrement[]" value="Règler" border="2">
    Mois 02:<input type="checkbox" name="recouvrement[]" value="Règler" border="2">
    Mois 03:<input type="checkbox" name="recouvrement[]" value="Règler" border="2">
    Mois 04:<input type="checkbox" name="recouvrement[]" value="Règler" border="2">
    Mois 05:<input type="checkbox" name="recouvrement[]" value="Règler" border="2">

    au bas du formulaire

    <input type="submit" value="Entrer">&nbsp;&nbsp;<input type="reset" value="Effacer"> <br />
    </body>
    </html>

    code php:
    <?php
    ....
    $tabmodalites = (isset($_POST['recouvrement']))?$_POST['recouvrement']:null;
    if (!empty($tabmodalites)) {
    foreach($tabmodalites as $modalite => $valeur2)
    {
    echo $modalite.' : '.$valeur2.'<br>'; // (j'ai bel et bien les valeurs cochées à l'écran)
    }
    }
    ...
    ?>


    mon pb est que je ne parviens pas à écrire la requête d'insertion des valeurs cochées dans ma Table le premier champ étant auto_increment.Pour plus de précision c'est en fait une table qui gère les recouvrements des adhérents.Lors de l'adhésion l'adhérent effectue des paiements sur une modalité qu'il aura choisie.on cochera donc 1 si c'est mensuel,3 si c'est trimestriel et le tout si c'est annuel.Je vais améliorer le système plus tard.Entendu qu'après il y aura des mises à faire chaque qu'il viendra effectuer un réglèment d'où "Régler" comme value.
    Encore merci pour tout.

  13. #13
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    on cochera donc 1 si c'est mensuel,3 si c'est trimestriel et le tout si c'est annuel
    Et si la personne coche le 1 et 3 seulement, c'est possible ou pas ?

    Aussi, tu ne donne rien concernant la Bdd, on ne sait pas ce qu'il devrait être fait.

    Pour la requête, et bien si le 1er champ est un auto_increment, il ne faut ni renseigner le nom du champ, ni aucune valeur, la Bdd va lui accorder une valeur unique automatiquement.
    On ne renseigne que les autres champs.
    Exemple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table (champ2, champ3) VALUES ('valeur2', 'valeur3')

  14. #14
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Encore merci à RunCodePHP pour sa disponibilité et sa contribution.Voici les infos concernant la table ds laquelle sera stockée les valeurs cochées:
    CREATE TABLE `recouvrement` (
    `numRec` int(5) NOT NULL AUTO_INCREMENT,
    `codemsg` varchar(16) NOT NULL,
    `DateAdhesion` date NOT NULL,
    `Montant` int(7) NOT NULL,
    `mois01` varchar(10) DEFAULT NULL,
    `mois02` varchar(10) DEFAULT NULL,
    `mois03` varchar(10) DEFAULT NULL,
    `mois04` varchar(10) DEFAULT NULL,
    `mois05` varchar(10) DEFAULT NULL,
    `mois06` varchar(10) DEFAULT NULL,
    `mois07` varchar(10) DEFAULT NULL,
    `mois08` varchar(10) DEFAULT NULL,
    `mois09` varchar(10) DEFAULT NULL,
    `mois10` varchar(10) DEFAULT NULL,
    `mois11` varchar(10) DEFAULT NULL,
    `mois12` varchar(10) DEFAULT NULL,
    PRIMARY KEY (`numRec`,`codemsg`),
    KEY `codemsg` (`codemsg`)
    ) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=latin1

    je tiens à préciser que je n'ai pas de pb pour l'insertion dans les 4 premiers champs de ma table.C'est plutôt l'insertion dans les champs mois01,...,mois12 qui me pose de gros pb.Pour être plus simple,on ne peut cocher le mois05 sans avoir coché le mois04 par exemple.donc qd un adhérent souscrit une adhésion on devra coché mois01,mois02 et mois03 s'il opte pour un réglement trimestriel.on cochera mois01 s'il a choisi de régler mensuellement.Donc suivant les options choisies,les opérateurs de saisies procéderont à des mises à jours chaque que l'adhérent reviendra payer ses cotisations.
    j'espère que ces quelques explications sauraient mieux vous orienter.

  15. #15
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    donc qd un adhérent souscrit une adhésion on devra coché mois01,mois02 et mois03 s'il opte pour un réglement trimestriel.on cochera mois01 s'il a choisi de régler mensuellement.Donc suivant les options choisies,les opérateurs de saisies procéderont à des mises à jours chaque que l'adhérent reviendra payer ses cotisations
    Ici, tu décrit le fonctionnement d'un groupe de bouton radio, et non de checkbox, car justement, avec des checkbox, la personne aura tout le loisir de cocher n'importe lequel, voir tous, comme aucun.

    A mon avis, il faudrait 1 groupe de bouton radios avec 3 propositions :
    Mensuelle : <input type="radio" name="cotisation" value="mensuel">
    Trimestrielle<input type="radio" name="cotisation" value="trimestriel">
    Annuelle<input type="radio" name="cotisation" value="annuel">
    On demande donc ici le type de cotisation (1 choix parmi 3)

    Ensuite, suffit de récupérer la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (isset($_POST['cotisation']) && !empty($_POST['cotisation'])) {
    	$cotisation = $_POST['cotisation'];
    }
    else {
    	// Erreur !!!
    }
    Je te mets ce code, qui lui propose de faire un traitement spécifique selon chaque cas.
    Après, faut voir comment tout ceci peut être fait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //
    switch(true) {
    	case 'mensuel' :
    	// Code/traitement spécifiques à mensuel
    	break;
    	case 'trimestriel' :
    	// Code/traitement spécifiques à tri...
    	break;
    	case 'annuel' :
    	// Code/traitement spécifiques à annuel
    	break;
    }
    Ici, on peu construire en partie la requête.
    Cependant, je ne sais pas trop comment tu compte faire par la suite.

    A mon avis, (pure hypothèse), il faudrait proposer le ou les mois restant à régler pour la personne, mais selon le type de cotisations.

    - Si c'est annuel, ceci ne pourra t'être fait qu'une fois, donc au début. Si une fois réglé on revient dessus, on ne devrait plus proposer de faire une cotisation.

    - Si c'est trimestriel, si c'est le début, faudrait proposer que les 3 1er mois (et non tous)
    Si on se trouve en milieu d'année, faudrait proposer les 3 mois suivant.

    - Si c'est mensuel, uniquement le 1er, ou le mois suivant.


    En faite, il me semble nécessaire d'anticiper les choix, car si on reçois des infos incohérentes, il sera difficile de faire une mise à jour, comme mettre NULL alors que ça été réglé.

    Quel est ton avis la dessus ?
    Aussi, je vois un champ "montant", du coup, quelle est la valeur qui sera mise dans les mois ? Le terme réglé peut être ?


    Par contre, le fait de mettre tous les mois de l'années dans une table, ca complique les choses en faite.
    Théoriquement, il aurait fallu une table qui accepterait le montant de la cotisation, et un champ avec la date de la cotisation, c'est tout.
    La date suffit pour savoir où on en est des cotisations.

    Ici, tu ne pourras pas par exemple mettre la date du règlement, ou alors, il faut rajouter autant de champs date qu'il y a de mois. Ceci suffit pour dire qu'il y a un truc qui ne va pas dans la conception.

    Aussi, ça suppose qu'il faudra créer une nouvelle table à chaque nouvelle années si on veut conserver un historique.
    Ce genre de concept rend très difficile dans le cas ou on souhaite ressortir certaines données.

    Un dernier truc. C'est que je ne vois pas vraiment ce que vient faire la date d'adhésion dans cette table recouvrement. Celle ci devrait plutôt trouver sa place dans une table adhérents, non ?


    Je ne veux pas t'influencer, ni te mettre mal alaise, mais il me semble bon de souligner ces points là, ils me semble louchent

    Maintenant, peut être que le besoin est très simple, voir basique, se qui peu justifier la création d'une Bdd très simple, quitte à transgresser certaines règles.

  16. #16
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Bonjour à tout.
    je tiens tout d'abord à m'excuser pour mon absence due à des pb de santé.j'ai été malade toute la semaine dernière et ce n'est que ce matin que j'effectue mon retour.
    Je voudrais remercier RunCodePHP pour son soutien.Je vois que tu as parfaitement compris ma préoccupation et ne t'inquiète pas pour les remarques objectives je suis là pour apprendre.Tu peux modifier comme tu l'entends car je vois que tu sais de quoi je parle.
    tout ce que tu as dit carde très bien avec ce que je veux faire.La table adhérent existe déjà.j'avais déjà créé un champ relatif à la date d'adhésion mais je vais simplement le réintroduire dans la table.
    Alors peux-tu me proposer un code pour chaque choix effectuer?entendons par là les différents traitements entre Case'x' et break;
    encore merci pour ta contribution grace à laquelle j'apprend petit à petit

  17. #17
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    En faite, il me semble nécessaire d'anticiper les choix, car si on reçois des infos incohérentes, il sera difficile de faire une mise à jour, comme mettre NULL alors que ça été réglé.

    Quel est ton avis la dessus ?
    Aussi, je vois un champ "montant", du coup, quelle est la valeur qui sera mise dans les mois ? Le terme réglé peut être ?

    Ta proposition est très bonne mais je ne suis qu'un débutant en php alors çà me ferait plaisir si tu me proposes des bouts de codes.Mon but n'est pas que tu fasses le boulot à ma place mais à partir de tes exemples je pourrais faire mieux plus tard.Le champ "montant" renvoie au montant du versement de l'adhérent.Tu conviendras avec moi qu'ils ne paieront pas le même montant je compte envoyer ce champ dans la table adhérent.Qu'en penses-tu?
    Par contre, le fait de mettre tous les mois de l'années dans une table, ca complique les choses en faite.
    Théoriquement, il aurait fallu une table qui accepterait le montant de la cotisation, et un champ avec la date de la cotisation, c'est tout.
    La date suffit pour savoir où on en est des cotisations.

    peux-tu me proposer un exemple stp?
    tu as très bien compris ma préoccupation çà te dirait de me proposer un code de traitement que je pourrais adapter à mon besoin que tu maitrise bien?
    excuses moi mais peux-tu m'en dire plus sur la proposition de la table avec comme champ "montant de la cotisation" et "date de la cotisation"?
    merci d'avance

  18. #18
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    J'espère que ça mieux aujourd'hui

    Pour poursuivre, et comme tu débute, à mon avis il faudrait commencer par faire simple.
    Peut être mettre de coté cette histoire de 3 choix, mais éventuellement en proposer que 2. Le cas trimestrielle demande de faire beaucoup plus de traitements/vérification, à cause de ces périodes qui peuvent être avant, ou après.

    Proposer juste de mettre à jour mois par mois ou tous les mois d'1 coup est vraiment plus simple.

    Mais avant toute chose, revoir la Bdd, sa conception me semble utile, voir indispensable.
    Si c'est mal goupillé au départ, c'est la grosse galère par la suite.

    A mon avis, il faudrait au moins 2 tables : adherents, cotisations.
    1/ Table : adherents
    adh_id, adh_num (ou adh_ref peu importe le nom) | adh_nom | adh_prenom | etc ...
    Des données propre aux adhérents

    2/ Table cotisations
    cot_id | adh_id | cot_montant | cot_date |


    Ensuite, coté interface, pour les cotisations, il faut au moins qu'une identification de l'adhérent soit faite, pour savoir à qui on aura à faire.
    Ce qui fait, qu'on pourra faire une requête selon la date en court, qui récupérera toutes les cotisations de l'année, celles effectuées.
    Par la suite, il devrait être facile de ne proposer que les mois suivants, ceux qui n'auront pas été réglées.

    Une requête pour sélectionner les cotisations de l'année en court, et selon les 2 tables "adherents" / "cotisations" ci dessus :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT cot_id, cot_montant, cot_date, MONTH(c.cot_date) AS cot_mois
    FROM adherents a
    JOIN cotisations c ON c.adh_id = a.adh_id
    AND c.adh_id = ".(int)$adh_id."
    WHERE DATE_FORMAT(cot_date, '%Y') = DATE_FORMAT(CURDATE(), '%Y')
    ORDER BY c.cot_date ASC
    Théoriquement cette requête est bonne, mais faut essayer
    On pourrait aussi passer comme paramètre l'année, au lieu de celle en court, lié au système, ceci permettant de visualiser l'année d'avant par exemple.

    Vu qu'on obtient donc tous les mois réglés, on pourrait faire la différence entre les ces mois et celles restantes.
    J'ai rajouté un champ cot_mois qui pourrait facilité cette tache.

Discussions similaires

  1. [MySQL] Insertion de données xml dans bdd mysql
    Par mathcanto dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/01/2010, 10h56
  2. [MySQL] Insertion multiple dans BDD MySQL
    Par popovitch130 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/08/2008, 13h38
  3. Formatage de chaine avant insertion dans BDD MySQL
    Par kdson dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 18/01/2008, 01h01
  4. [SGBD] Parser une variable pour mettre données dans bdd MySQL
    Par winnie82 dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 15/03/2006, 17h20
  5. [SGBD] FPDF+enregistrer le pdf généré dans BDD MySQL
    Par Flushovsky dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 29/11/2005, 16h22

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