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 :

Vérifier un champ radio


Sujet :

Langage PHP

  1. #41
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    après réflexion, je pense que je vais choisir de lister dans un seul champ les sélections comme ceci :

    Nom : phpMyAdmin.png
Affichages : 76
Taille : 13,7 Ko

    Plus ergonomique et plus pratique.

    et puis pour la partie recherche (select) j'ai pensé à FIND_IN_SET ? comme tu le suggères dans un post jreaux62.

    oops, question supplémentaire : Je peux supprimer le champ "id" ? car dans la table, une seule ligne par membre (idmbr déjà unique).. ? par contre je place quel index sur le champ idmbr ?

  2. #42
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    je te déconseille fortement ce design de table. C'est plus que fermé, carrément gravé dans le marbre. Si à chaque évolution du questionnaire, t'es obligé de modifier la structure de la table, t'es pas sorti de l'auberge. C'est voué à terminer dans le mur.
    Sans compter que les critères avec IN ou FIND_IN_SET() sont appréhendés séquentiellement par le moteur d'où des performances dégradées.

    Reprends le design de ta base en privilégiant l'approche ensembliste.

  3. #43
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Un truc vite fait sur le coin du clavier :
    Nom : 2016-05-16_185745-75%.png
Affichages : 79
Taille : 60,3 Ko

  4. #44
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Merci mais je ne comprends pas, vous me dites que ce n'est pas la bonne méthode (ok j'ai compris..) mais sans m'indiquer la bonne..

    enfin.. des solutions farfelue à mon gout..
    jreaux62 > Une table pour chaque question (critère de recherche).
    Franchement moyen.. et très usine à gaz

    rawsrc > je te conseille de passer sur PostgreSql avec le type de donnée HStore (ça fait de merveilles)
    donc impossible avec php/mysql ?
    Je préfère rester en php/mysql. Je me considère comme débutant et pour le moment pas trop envie de changer, je me concentre sur le php/mysql.

    Sincèrement, je trouve cela bizarre que ce soit impossible de faire une telle chose.. ou alors j'explique mal.

  5. #45
    Invité
    Invité(e)
    Par défaut
    Personne ne te dis que c'est impossible.

    Fais comme tu le sens.
    Tu verras bien à l'usage.

  6. #46
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    non je fais pas comme je le sens, vous êtes plus fort que moi en prog donc je prends en compte vos avis.

    Personne ne te dis que c'est impossible.
    En clair si.. ou alors 3 super solutions d’après vos posts :

    1 : la solution que personne ne me recommande : 5,7,6,4,6 / FIND_IN_SET
    2 : la solution de l'usine à gaz de tables... pas formidable.
    3 : PostgreSql avec le type de donnée HStore (d’après rawsrc) chose que je ne connais pas du tout !

    BREF.. Je me tire une balle ?

  7. #47
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Il faudrait lire quand même un peu les réponses...

    Tu as dit que tu préférais rester sur MySQL, ok pourquoi pas.
    Quand je t'ai parlé d'une architecture EAV, est-ce que t'es allé voir de quoi il en retournait ?
    Dans mon message 43, tu as une structure de type EAV adapté à MySQL. Est-ce que t'as vu dedans une colonne HStore ?

    Bref, tu as largement de quoi pondre une solution adaptée à ta problématique sans t'enfermer dans une voie sans issue.

  8. #48
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par bndd24 Voir le message
    jreaux62 > Une table pour chaque question (critère de recherche).
    Franchement moyen.. et très usine à gaz
    Parce que tu crois que te trimbaler des arrays d'une page à l'autre est plus ergonomique ?

    J'ai eu la même réflexion (par manque d'expérience) autrefois.

    Je me suis trimbalé un champ "critere_list" (de la forme : 1,3,6,7,12) dans une TABLE,
    et j'ai été coincé dès qu'il fallait faire une recherche sur un critère en particulier ( "IN (...)" ne convient pas dans ce cas).
    J'ai donc exclu ces critères du formulaire de recherche.

    Ce n'est que bien plus tard que j'ai découvert FIND_IN_SET, qui m'a permis de "mettre un pansement sur une jambe de bois".
    Et je ne l'ai utilisé... qu'une seule fois, dans un seul site (que j'ai retrouvé par hasard le mois dernier, et que je ne retrouve plus depuis !)

    Bref, depuis, je fais des "usines à gaz" à base de TABLES et JOINTURES.
    Ce qui me permet de réaliser des recherches multi-critères et des sélections précises sans la moindre difficulté.

    Quant à savoir si IN fait perdre en performance....
    Un requête de recherche n'est exécutée dans la page qu'une seule fois (ce n'est pas comme si on devais l'exécuter 1000 fois).
    D'ailleur, on n'est pas obligé d'utiliser "IN". Il suffit d'un :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ... WHERE (critere = ... OR critere = ... OR ...) ..."

    CONCLUSION : "à chacun de se faire sa propre expérience."


    IMPORTANT : je ne dis PAS que c'est la "meilleure" méthode.
    Car je ne connais pas celle proposée par rawsrc, et je ne suis pas non plus un spécialiste/administrateur de BdD (c'est tout un métier... ).
    Dernière modification par Invité ; 17/05/2016 à 11h38.

  9. #49
    Invité
    Invité(e)
    Par défaut
    Je comprends qu'on t'ait mis dans la confusion.

    1/ Si on reprend ton cas particulier :
    ce ne sont pas forcément les QUESTIONS qu'il faut mettre dans des TABLES (ou du moins, pas autant que tu penses) !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    // array
    $array_origine = array('Européenne', 'Africaine', 'Asiatique', 'Arabe', 'Indienne', 'Hispanique', 'Autre');
    $array_religion = array('Protestante', 'Catholique', 'Musulmane', 'Juive', 'Bouddhiste', 'Orthodoxe', 'Autre', 'Croyant, non pratiquant', 'Ni croyant, ni pratiquant');
    $array_consommation_tabac = array('Jamais', 'Plusieurs fois dans l\'année', 'Environ une fois par semaine', 'Plusieurs fois par semaine', 'Plusieurs fois par jour');
    $array_consommation_alcool = array('Jamais', 'Plusieurs fois dans l\'année', 'Environ une fois par semaine', 'Plusieurs fois par semaine', 'Plusieurs fois par jour');
    $array_nombre_enfants = array('Aucun enfant', 'Un enfant', 'Deux enfants', 'Trois enfants et plus');
    $array_enfants_desires = array('Oui, bien sûr', 'Peut-être', 'Non, en aucun cas');
    • $array_consommation_tabac et $array_consommation_alcool sont identiques.
      Il est fort possible que tu aies d'autres questions réclamant les mêmes "réponses-type". Donc, à priori, 1 seul array (ou 1e seule table) suffit !
    • $array_enfants_desires : idem, d'autres questions pourraient réclamer les mêmes choix de réponses.
    • Quant à "origine" et "religion", ce sont typiquement le genre de données que je mets en BdD (+ gestion via panel Admin, pour plus de flexibilité)


    2/ Où déclarer ces array ?
    (car j'utilise, ne t'en déplaise, moi aussi ce type d'array de "question-réponse" !)
    Sachant qu'il seront utiles pour :
    • formulaire de critères du user/membre (1 choix -> bouton radio)
    • formulaire de critères recherchés par le user/membre (plusieurs choix -> checkbox)
    • formulaire de recherches multi-critères (plusieurs choix -> checkbox)
    • ... (admin ?)

    La réponse : un fichier de config, où on déclare une fois (et une seule) les array (ce qui facilite leur maintenance, et modification éventuelle).


    BREF : A TOI de bien réfléchir AVANT de coder, et d'OPTIMISER la CONCEPTION pour, au final, te faciliter la vie.
    Dernière modification par Invité ; 17/05/2016 à 10h35.

  10. #50
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Je pense que cette partie de la réalisation est encore un peu difficile pour moi, je vais donc attendre d’être mieux armé avant de continuer. En attendant, je bosse sur une autre partie.

    Je vais prendre du recul et bien réfléchir les amis merci pour vos messages et votre aide toujours rapide et précise ici

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [Mail] Comment vérifier un champs obligatoire ?
    Par casier dans le forum Langage
    Réponses: 25
    Dernier message: 17/11/2006, 09h34
  2. Champ radio vides
    Par allstar dans le forum Struts 1
    Réponses: 2
    Dernier message: 18/08/2006, 11h37
  3. controle champ radio
    Par clara2005 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/12/2005, 21h30
  4. [Formulaire] vérifier les champs avant enregistrement
    Par julien_t_m dans le forum Access
    Réponses: 5
    Dernier message: 16/10/2005, 20h53
  5. vérifier deux champs vides
    Par mikky dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/06/2005, 14h04

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