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 :

[Conception] Aide pour une mise en place


Sujet :

PHP & Base de données

  1. #1
    Olivier636
    Invité(e)
    Par défaut [Conception] Aide pour une mise en place
    Bonsoir à tous,

    Comme je suis nouveau, je me présente :
    Olivier636, passion pour le net et la moto, j’adore créer (de tout), j’adore mes amis, mes potes, les femmes, le Hi-tech, la bouf etc.

    Bon voici mon problème et après avoir parcouru des sites/forums j’ai pas vraiment trouvé la solution à mon problème d’où mon inscription car ce Forum est fort actif.

    En soit je sens que mon problème est « simple » mais j’ai du mal à le mettre en place, car je ne suis pas un DEV pur.

    Projet perso :
    Je crée un site avec un espace membres dans lequel les membres peuvent mettre leur profil à jour. Tout fonctionne bien pour le formulaire (création et édition) sauf pour les Checkbox, mon problème est là.

    Dans mon formulaire « profil » j’ai (entre autres) 3 questions qui nécessites 10 Checkbox chacune :
    1- Côté SQL, dans la table « profil » je ne sais pas comment je dois déclarer mon champ ou mes champs Checkbox.
    Dois-je déclarer un champ en Longtext et les enregistrements des Checkbox seront enregistrés ainsi : choix01, choix02, choix03, etc.
    OU
    Dois-je créer un champ par Checkbox (soit 10x3) ?
    Tout en sachant que je vais m’en servir par la suite pour le moteur de recherche que je ferais par la suite.

    2- Dans mon formulaire je ne sais pas comment coder ceci. J’ai bien vu des exemples mais je suis largué au possible.

    3- Dois-je faire une table qui soit corrélation avec les choix, pour dire que 1=choix01, 2= choix02 etc. ?

    Bref vous voyez mon problème !

    Merci pour vos lumières car je tiens vraiment à savoir le faire mais aussi avancer sur mon projet perso.


  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut et bienvenue !

    Perso, j'ai tendance à bien aimer quand c'est tout automatisé, je vais donc te proposer une formule dans cette orientation.
    Tu vas avoir besoin de plusieurs tables dans ta BDD.
    Voici deux solutions :
    • Tu réutilises toujours les mêmes questions et réponses dans tous tes questionnaires
      questionnaire (id, titre)
      question (id, titre)
      reponse (id, titre)
      vote (#id_questionnaire, #id_question, #id_reponse, #id_membre)
    • Tu as des questions qui peuvent être identiques ou différentes selon le questionnaire et des réponses qui peuvent différer en fonction de la question
      questionnaire (id, titre)
      question (id, #id_questionnaire , titre)
      reponse (id, #id_question, titre)
      vote (#id_reponse, #id_membre)
    • Deux autres combinaisons sont possibles, il suffit de mélanger ces deux premières propositions


    Dans ton formulaire (généré par PHP), je te propose d'utiliser un tableau à plusieurs dimensions et plusieurs niveaux. Euh, ça peut faire peur comme nom mais, en fait, c'est simple à utiliser...
    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Question 1
    <input type="checkbox" name="checkboxes[1][1]"> Réponse A
    <input type="checkbox" name="checkboxes[1][2]"> Réponse B
    <input type="checkbox" name="checkboxes[1][3]"> Réponse C
     
    Question 2
    <input type="checkbox" name="checkboxes[2][4]"> Réponse A
    <input type="checkbox" name="checkboxes[2][5]"> Réponse B
    Dans ton PHP, tu récupèreras un tableau sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $checkboxes [$id_question] [$id_reponse]
    Il ne te reste plus qu'à faire deux boucles foreach imbriquées (une première pour les questions, l'autre -interne- pour les réponses aux questions) afin d'insérer dans la BDD à chaque fois que tu trouves un élément non vide (= un vote)...

    Bien entendu, cela suppose de commencer par coder un script d'administration des questionnaires avant de coder le script d'affichage de ces mêmes questionnaires.
    Cela peut paraître fastidieux mais c'est cette méthode qui est utilisée pour la quasi totalité des développements en PHP...

  3. #3
    Olivier636
    Invité(e)
    Par défaut
    Merci pour ta réponse !

    Hum mais es-tu certains que celà correspond à mon attente car là j'ai un doute.

    J'ai déjà ma table "profil" où il y a "id_membre, nom, prénom, adresse, etc" et je souhaite rajouter d'autres champs "choix01, choix02, choix03, etc. " dans cette même table.
    Les Choix en question c'est juste des Checkboxs à cocher qui auront pour valeur 0 ou 1.
    Et des Choix doivent être enregistrer dans un seul champ de type Longtext ou bien créer un champ pour chaques Checkbox ?

    Là j'ai l'impression d'avoir comme un jeu/concourt ou du même style, nan !

    Peut être que je dois recadrer ma demande ou mon attente ?

    Merci pour votre aide

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    J'ai bien commencé en disant que je te proposerais la solution la plus modulable ^^

    Si tu souhaites tout mettre dans ta table membre, libre à toi, mais je t'assure que ça va rapidement être la foire.

    Je suis convaincu d'avoir proposé une solution qui correspond à ta demande. Cela dit, je l'ai peut-être faite un peu trop flexible (+ flexile signifie : + complexe à mettre en place mais + facile à utiliser par la suite).

    Ce que je te propose te permet de créer des questionnaires, autant que tu le souhaites. Si tu es certain de ne jamais devoir mettre d'autres questionnaires, alors je t'ai en effet mal répondu.
    En ce cas, il serait plus facile de déclarer des champs différents (même si je continue à penser qu'une table distincte serait la meilleure solution) car cela t'éviterait d'utiliser explode() à chaque lecture de ta table. De mon point de vue, les deux solutions que tu proposes sont tout autant foireuses l'une que l'autre

    Je vais essayer de passer outre mon aversion et t'aider malgré tout ^^
    Pour moi, ça ressemble bien plus à un questionnaire qu'à un profil de membre.


    Si tu optes pour les champs dans la table (ce qui serait le plus adapté, je pense), alors c'est très simple à mettre en place. Tu vas avoir une requête à rallonge (plus de 30 champs) pour récupérer le profil du membre, puis un formulaire à rallonge (les mêmes 30+ champs) pour l'afficher. C'est tout.

  5. #5
    Olivier636
    Invité(e)
    Par défaut


    Ok

    J'écoute le maître et je vais voir ceci

    Je reviens une fois que j'aurais avancé etc.

    Merci encore

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    et bienvenue au club !
    Peut être que je dois recadrer ma demande ou mon attente ?
    Je pense que c'est nécessaire. Tu peux donner un exemple de choix qui va se trouver derrière ces checkbox ?

    Parce que bon la solution de Kirkis est très bien pour un sondage mais si c'est pour juste savoir si le mec il veut des mails ou pas c'est peut-etre pas forcément adéquat. plus flexible = plus facile à gérer, mais aussi = plus lent.

    Une solution proposée permet de résoudre un problème donné, mais là il nous manque des infos sur ce dit problème.

    En tout cas je te remercie pour avoir fais l'effort de te présenter (rarissime) et d'avoir expliquer en détail ce que tu veux faire (pas très courant) 8)

  7. #7
    Olivier636
    Invité(e)
    Par défaut
    Merci pour ton message Mr N.

    Si je me suis présenté c’est que de mon côté je gère également un site/Forum (voir lien) et que malgré une Charte et MP lors d’une inscription, certains ne se présentent pas et je fais la « guerre » à ceci car un Forum est comme une boutique : on entre, on dit bonjour, on dit se que l’on cherche etc., et les membres du Forum font office de « conseiller/commercial » pour router les gens etc.

    Voilà 8)


    Revenons à mon PB (qui n’a rien à voir avec mon site actuel, c’est un autre projet)

    Ok je reformule !

    J’ai un espace membre dans lequel les membres peuvent mettre leur profil à jour :
    Nom, prénom, adresse etc.

    Je souhaite ajouter à leur profil plus d’informations donc plus de détails :

    Question N°1 (cocher les cases vous correspondant) :
    Choix01 - Choix02 - Choix03 … Choix10

    Question N°2 (cocher les cases vous correspondant) :
    Choix01 - Choix02 - Choix03 … Choix10


    Actuellement j’ai une BASE avec X tables mais je donne les essentielles pour ce PB:
    Une table MEMBRE et MEMBRE_PROFIL qui sont en corrélations ; dans la table MEMBRE_PROFIL j’ai déjà X Champs et je souhaite rajouter les ChoixX (ceux des deux questions).

    Donc comment procéder pour Enregistrer les Choix dans ma table MEMBRE_PROFIL ?
    Sous SQL comment créer et déclarer le ou les Champs qui va recevoir la valeur 0 ou 1 (non coché ou coché donc) !
    Sous PHP comment créer le code !
    En sachant que plus tard je vais utiliser ces Choix pour un moteur de recherche interne.

    Et ça ne va pas plus loin que ça !

    Bien sur selon les profils des membres les questions ne seront pas les mêmes et le nombres de Choix sera aussi différents mais ça c’est la forme et non le fond de mon attente. (j'ai une autre table MEMBRE_PROFIL_2 pour les autres profils; j'ai mis "2" ici pour dire qu'elle différente)

    Allez on avance

    Merci

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par Olivier636
    Bien sur selon les profils des membres les questions ne seront pas les mêmes et le nombres de Choix sera aussi différents mais ça c’est la forme et non le fond de mon attente.
    Ben voilà. C'est la clef de ton problème et c'est ce qui me fait rejoindre l'avis de Kirkis. Tu vas devoir passer par sa solution proposée.

    Et avant de te poser les questions techniques du genre comment-qu-on-fait-en-php-?, tu ferais mieux de définir plus précisément tes besoins. Car là, si je comprends bien tu as des membres, chaque membre à un profil parmis n, chaque profil possède un formulaire, chaque formulaire est constitué de questions, chaque questions proposent des réponses, ...
    Bonne conception

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par Olivier636
    Bien sur selon les profils des membres les questions ne seront pas les mêmes et le nombres de Choix sera aussi différents mais ça c’est la forme et non le fond de mon attente. (j'ai une autre table MEMBRE_PROFIL_2 pour les autres profils; j'ai mis "2" ici pour dire qu'elle différente)
    Arf :/

    Comme le dit Mr N., cette phrase met tout par terre à elle seule :/
    Si tu ne l'avais pas écrite, j'aurais été convaincu que tu aurais pu tout ajouter dans la table profil ou faire une table rien que pour ça (quoique j'aurais recommandé une seule table plutôt que 3).
    Avec cette phrase, cela complique grandement les choses et tu te retrouves finalement avec une problématique de questionnaire et une solution comme celle proposée ci-dessus.

    Tes membres auront réellement des questions différentes ?
    Si oui, tu dois comprendre que cela signifie un nombre de questions et un nombre de réponses tous deux variables, donc une gestion flexible devient nécessaire.

Discussions similaires

  1. besoin d'aide pour la mise en place d'un MRP
    Par jp57000 dans le forum SAP
    Réponses: 3
    Dernier message: 27/07/2011, 01h06
  2. Aide pour une conception de logiciel Helpdesk
    Par GodofMerise dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 17/04/2008, 12h16
  3. Aide pour la mise en place dun réseau
    Par marilou86 dans le forum Réseau
    Réponses: 0
    Dernier message: 17/11/2007, 21h40
  4. Aide pour la mise en place d'un index fulltext
    Par bluecurve dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/11/2007, 09h47

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