Bonjour à tous,
Actuellement en poste en tant que dev web, je suis face à une requête SQL qui me donne du fil à retordre.
Je m'explique. Le contexte, c'est un questionnaire sur les préférences des utilisateurs pour connaître les produits qui leur correspond le mieux (je préfère un ultraportable original et coloré / fin / esthétique ; je compte stocker toutes mes données / quelques données de temps en temps ; etc.).
Je dispose de deux tables :
| cab_cabine |
--------------
ID
IdProduit
IdQuestionnaire
Et
| cab_essayage |
-----------------
IdCabine
IdQuestion
IdReponse
C'est la table 'cab_essayage' liée avec la table 'cab_cabine' ON cab_cabine.ID = cab_essayage.IdCabine qui me fournit les données.
En gros, en fonction des réponses, je dois restreindre les résultats pour ne sélectionner que les résultats qui correspondent aux réponses de chaque question.
Je ne sais absolument pas par où prendre le problème. Pour l'instant je dispose d'une requête générée telle qui suit : "SELECT DISTINCT * FROM cab_essayage WHERE IdReponse IN (1,2) ORDER BY IdCabine ASC" qui marche pour la première question mais je ne sais pas comment faire pour "restreindre" les résultats trouvés. Je ne sais même pas si je peux faire ça en une seule requête où si je dois stocker les résultats dans un tableau temporaire pour l'utiliser sur une requête SQL supplémentaire.
Voici le code de la page qui reçoit le formulaire :
Code :
- <?php
- require_once('../../config/config.inc.php');
- echo '$_POST = ';
- var_dump($_POST);
- echo '------------------------------------<br/>';
- $sql = 'SELECT DISTINCT * FROM cab_essayage WHERE IdReponse IN (';
- foreach($_POST AS $question => $value) { // Boucle qui lit chaque question
- if($question != 'questionnaire') {
- $IdQuestion = substr($question, 1, 1);
- echo $IdQuestion;
- foreach($value AS $reponse) { // Boucle qui lit chaque réponse
- if($reponse == end($value))
- $sql .= $reponse;
- else
- $sql .= $reponse.',';
- }
- }
- }
- $sql .= ') ORDER BY IdCabine ASC';
- echo($sql);
- echo '<br/>------------------------------------';
- $i = NULL;
- $posts = getData($sql);
- echo '<br/>Nombre de posts : '.count($posts).'<br/>';
- foreach($posts AS $d)
- {
- $i++;
- echo $i.' : '.$d['IdCabine'].', '.$d['IdQuestion'].', '.$d['IdReponse'].'<br/>';
- }
- ?>
|
PS : navré pour le titre du post, je n'ai pas trouvé mieux.
Merci encore pour votre aide.
Bien à vous.
Message édité par DeStROY dA WoRld le 15-06-2013 à 14:01:37