[RESOLU] Cacher un résultat s'il a déjà été obtenu

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Cacher un résultat s'il a déjà été obtenu

Re: Cacher un résultat s'il a déjà été obtenu

par Gadwin » 22 févr. 2013, 02:38

En fait ça serait plutôt :
Quels sont vos aliments préférés sans connaitre le plat qui va arriver ? (notez de 1 à 5, vos préférences)
* tartine
* confiture
* beurre
* céréales
* café

Un repas aléatoire arrive avec une liste d'ingrédients aléatoires.

- Quels sont les membres qui ont choisi 1 pour aliment 1 ou aliment 2 = Groupe 1
- Quels sont les membres qui ont choisi 2 pour aliment 1 ou aliment 2 = Groupe 2
- Quels sont les membres qui ont choisi 3 pour aliment 1 ou aliment 2 = Groupe 3
- Quels sont les membres qui ont choisi 4 pour aliment 1 ou aliment 2 = Groupe 4
- Quels sont les membres qui ont choisi 5 pour aliment 1 ou aliment 2 = Groupe 5

EDIT : J'ai trouvé la solution en changeant mes requêtes par quelque chose comme
SELECT
        id_membre,
        nom,
        tartine,
        biscotte,
        confiture
FROM
        Table_membre
WHERE
        (tartine > 1 OR biscotte > 1)
AND
        (tartine < 3 OR biscotte = < 3)
ORDER BY
        nom
Dans cette exemple, je vais avoir les résultats pour mon groupe 2 en étant sur de ne pas avoir les doublons prenant du groupe 1 :P
Je n'ai qu'a faire la même chose pour les autres requêtes en changeant les numéros et le tour est joué \o/

Re: Cacher un résultat s'il a déjà été obtenu

par Gadwin » 21 févr. 2013, 12:54

En fait ça serait plutôt :
Quels sont vos aliments préférés sans connaitre le plat qui va arriver ? (notez de 1 à 5, vos préférences)
* tartine
* confiture
* beurre
* céréales
* café

Un repas aléatoire arrive avec une liste d'ingrédients aléatoires.

- Quels sont les membres qui ont choisi 1 pour aliment 1 ou aliment 2 = Groupe 1
- Quels sont les membres qui ont choisi 2 pour aliment 1 ou aliment 2 = Groupe 2
- Quels sont les membres qui ont choisi 3 pour aliment 1 ou aliment 2 = Groupe 3
- Quels sont les membres qui ont choisi 4 pour aliment 1 ou aliment 2 = Groupe 4
- Quels sont les membres qui ont choisi 5 pour aliment 1 ou aliment 2 = Groupe 5
Mais vu que le choix des aliments est indépendant des autres aliments, je peux choisir de mettre 1 pour l'aliment 1 et 5 pour l'aliment 2 du coup lorsque je constitue mes groupes, je me retrouve listé pour le groupe 1 et pour le groupe 5 (dans mon exemple).


Il me faudrait donc un moyen pour garder une trace quelque part des noms qui sont sortis de la 1ère requête, puis lorsque la 2e requête arrive, afficher tous les noms sauf ceux qui ont été tiré par la 1ère requête (et bien sur j'applique la même chose aux requêtes suivantes).

Mais sinon ce n'est pas possible, lorsque l'on a 2 chaines, de supprimer les éléments de la 2e chaine qui sont dans la 1ère ?

Re: Cacher un résultat s'il a déjà été obtenu

par niuxe » 21 févr. 2013, 10:16

Salut,

J''ai pas saisi ce que tu cherches exactement. Peux tu nous dire ce que tu es en train de faire comme application. Apparemment, c'est un questionnaire ? Dans ce questionnaire, il y a un ordre de préférence ?
Pour votre petit déj, qu'est ce que vous préférez ? (notez de 1 à 5, vos préférences)
* tartine
* confiture
* beurre
* céréales
* café
J'ai l'impression que ta table ne soit pas bien modélisée (donnée redondantes).

Re: Cacher un résultat s'il a déjà été obtenu

par Gadwin » 21 févr. 2013, 02:12

J'ai édité mon message précédent pendant que vous répondiez, je le remets au cas ou :
Un exemple en image sera ptet plus parlant (cf le fichier joint) :
- 1 et 2 représentent les préférences. Dans mon exemple j'avais 1 pour tartine et 2 pour biscotte. Kazuma a mis 1 pour un autre ingrédient et 2 pour tartine.
- La personne qui est dans le groupe 1 a la priorité sur l'objet par rapport a la personne se trouvant dans le groupe 2 (c'est pourquoi j'aimerais éviter d'avoir un même nom dans les 2 groupes).
- La 1ère ligne de nom est le résultat de la 1ère requête tandis que la 2e ligne est le résultat de la 2e requête.

Image
---------------------------

@niuxe : Avec une seule requête, je ne peux plus différencier mes groupes :cry:

@damien_55 : Le soucis c'est que les valeurs de tartine et de biscotte ne sont pas liées. Dans mon exemple en image, j'ai déterminé pour mon compte que tartine était en 1 et biscotte en 2 (ou le contraire mais peu importe), du coup avec la modification de la requête que vous proposez, j'ai toujours mon nom qui apparait dans le 2e groupe car l'une des conditions est remplie (à savoir tartine ou biscotte égale à 2). et bien sur, dans ma requête, je suis obligé d'associer la même valeur aux éléments variables (car ils correspondent au numéro du "groupe" (par rapport a mon image) dont je veux afficher les informations.




edit : je ne l'ai pas ou mal expliqué plus haut donc je le mets ici : Chaque personne associe un ordre de préférence sur une liste d'objet.
Disons par exemple que je fais les choix suivants : tartine 1, biscotte 2, chocolat 3, pain d'épice 4, confiture 5 (sachant qu'on ne peut pas mettre 2 numéro pareil). Un 2e participant choisir confiture en 1, chocolat en 2, pain d'épice en 5, biscotte en 4 et tartine en 5.

Un objet est a gagner pour celui qui préfère le plus l'un des ingrédients (qui sont aléatoires). Mettons que les ingrédients de l'objet sont tartine et chocolat. Mon nom apparaitra dans le groupe 1, car j'ai mis tartine en 1(1ère requête) et dans le groupe 3, car j'ai mis chocolat en 3 (2e requête).
Le nom de la 2e personne apparaitra dans le groupe 2 a cause du chocolat (1ère requête) et dans le groupe 5 a cause de la tartine (2e requête).

Sachant que le groupe 1 est prioritaire sur le groupe 2 qui lui même est prioritaire sur le 3, qui est prioritaire sur le 4, qui est prioritaire sur le 5, c'est moi qui va manger la tartine au chocolat car mon nom est mieux classé par rapport a celui de la 2e personne, mais j'aimerais virer les doublons pour ne pas afficher dans un groupe, un nom qui a déjà été affiché dans un précédent groupe.

Voila j'espère que c'est un peu plus clair, j'ai volontairement changé les noms pour que ça parle plus aux gens mais au final c'est pas beaucoup plus évident #-o

Re: Cacher un résultat s'il a déjà été obtenu

par damien_55 » 21 févr. 2013, 01:45

SELECT 
        id_membre, 
        nom, 
        tartine, 
        biscotte, 
        confiture 
FROM 
        Table_membre 
WHERE
        (tartine != 1 OR biscotte != 1) 
AND
        (tartine = 2 OR biscotte = 2) 
ORDER BY 
        nom
dans ta deuxieme requete, tu elimines les conditions de la premiere. (mieux comme ça)

Re: Cacher un résultat s'il a déjà été obtenu

par niuxe » 21 févr. 2013, 01:28

un seule requete suffit normalement :
SELECT 
	id_membre, 
	nom, 
	tartine, 
	biscotte, 
	confiture 
FROM 
	Table_membre 
WHERE
	(tartine = 1 OR biscotte = 1) 
AND
	(tartine = 2 OR biscotte = 2) 
ORDER BY 
	nom

Re: Cacher un résultat s'il a déjà été obtenu

par Gadwin » 21 févr. 2013, 01:19

Par exemple pour $condition1
WHERE tartine = 1 OR biscotte = 1
et pour $condition2
WHERE tartine = 2 OR biscotte = 2
Un exemple en image sera ptet plus parlant (cf le fichier joint) :
- 1 et 2 représentent les préférences. Dans mon exemple j'avais 1 pour tartine et 2 pour biscotte. Kazuma a mis 1 pour un autre ingrédient et 2 pour tartine.
- La personne qui est dans le groupe 1 a la priorité sur l'objet par rapport a la personne se trouvant dans le groupe 2 (c'est pourquoi j'aimerais éviter d'avoir un même nom dans les 2 groupes).
- La 1ère ligne de nom est le résultat de la 1ère requête tandis que la 2e ligne est le résultat de la 2e requête.

Re: Cacher un résultat s'il a déjà été obtenu

par damien_55 » 21 févr. 2013, 01:03

A quoi ressemble tes $condition1 et $condition2 ?

Cacher un résultat s'il a déjà été obtenu

par Gadwin » 20 févr. 2013, 23:04

Bonsoir ^_^


J'utilise un petit script comme ceci :
$sql = "SELECT id_membre, nom, tartine, biscotte, confiture FROM Table_membre $condition1 ORDER BY nom";
if ( !($result1 = $db->sql_query($sql)) )
{
	die('Impossible de se connecter : ' . mysqli_error());
}
		
while( $row1 = $db->sql_fetchrow($result1) )
{
	$maliste1 .= ( $maliste1 != '' ) ? ', ' . $row1['nom'] : $row1['nom'];
}
$db->sql_freeresult($result1);


$sql = "SELECT id_membre, nom, tartine, biscotte, confiture FROM Table_membre $condition2 ORDER BY nom";
if ( !($result2 = $db->sql_query($sql)) )
{
	die('Impossible de se connecter : ' . mysqli_error());
}
		
while( $row2 = $db->sql_fetchrow($result2) )
{
	$maliste2 .= ( $maliste2 != '' ) ? ', ' . $row2['nom'] : $row2['nom'];
}
$db->sql_freeresult($result2);
$maliste1 et $maliste2 m'affichent une série de nom, mais comment faire pour qu'un nom provenant de $maliste1 ne soit pas dans $maliste2 ? :oops:


Merci .