Extraire 4 éléments de ma bd avec une condition et en aléatoire

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 : Extraire 4 éléments de ma bd avec une condition et en aléatoire

Re: Extraire 4 éléments de ma bd avec une condition et en aléatoire

par yule » 12 août 2015, 10:00

Hello,

Merci à vous deux pour votre aide

Comme je pateauge un peu beaucoup... je devrais écrire la requête ainsi ou c'est grossier et faux ?

<?php

$query = " (SELECT * FROM $tablerfx1 WHERE valid='1' AND idc = 1 ORDER BY RAND() LIMIT 1)
UNION
(SELECT * FROM $tablerfx1 WHERE valid='1' AND idc = 2 ORDER BY RAND() LIMIT 1)
UNION
(SELECT * FROM $tablerfx1 WHERE valid='1' AND idc = 3 ORDER BY RAND() LIMIT 1)
UNION
(SELECT * FROM $tablerfx1 WHERE valid='1' AND idc = 4 ORDER BY RAND() LIMIT 1)";


    $succes = mysql_query($query) or die ('requete =>'.$query.'<br> error->'.mysql_error());;
    $result = mysql_num_rows ($succes);	
 
    $p=0;
 
    while ($annuaireData=mysql_fetch_array($succes)) { 	
    extract($annuaireData);
 
   etc.....
   
?>

id idc titre
1 1 crème dessert
2 4 pizza
3 2 Crème de gruyère
4 2 20 2012-11-14
5 3 160 2012-12-03
3 1 tarte aux pommes
3 2 Tartes aux poires
3 3 Crème double
3 2 tresse et croissant

il m'affichera 4 id au hasard mais avec 4 idc différend , on est d'accord ?

D'avance merci

Re: Extraire 4 éléments de ma bd avec une condition et en aléatoire

par ynx » 12 août 2015, 09:28

Salut,

Moins joli mais aussi efficace avec UNION :
(SELECT * FROM $tablerfx1 WHERE valid='1' AND idc = 1 ORDER BY RAND() LIMIT 1)
UNION
(SELECT * FROM $tablerfx1 WHERE valid='1' AND idc = 2 ORDER BY RAND() LIMIT 1)
UNION
(SELECT * FROM $tablerfx1 WHERE valid='1' AND idc = 3 ORDER BY RAND() LIMIT 1)
UNION
(SELECT * FROM $tablerfx1 WHERE valid='1' AND idc = 4 ORDER BY RAND() LIMIT 1)
Bonne journée

Re: Extraire 4 éléments de ma bd avec une condition et en aléatoire

par Elie » 12 août 2015, 09:16

un petit SELECT DISTINCT `categorie`, * devrait fais l'affaire je pense

Extraire 4 éléments de ma bd avec une condition et en aléatoire

par yule » 12 août 2015, 08:35

Bonjour,
Je souhaite afficher 4 éléments de ma bd au hasard mais avec la condition qu'il s'agisse d'un élément par catégorie (il y a 4 catégories).

Mon code ci-dessous ou je reste bloqué.. L'affichage aléatoire se fait bien, mais il peut afficher 3 éléments d'une même catégorie et c'est pas le but et je ne souhaite pas faire une requête par catégorie...

<?php	mysql_query('SET NAMES utf8');
		// +------ Requête pour extraire -------+
 
		/*Récupérer 4 éléments avec 4 catégories différentes ( un seul choix par catégorie => $idc)
 
		$idc =1; => apéros
		$idc =2; => plats
		$idc =3; => desserts
		$idc =4; => huiles
		*/
 
		// => comment indiquer dans mon query qu'il doit prendre qu'un élément par catégorie ($idc)
 
		$query = "SELECT * FROM $tablerfx1 WHERE valid='1' order  by RAND() LIMIT 0,4";
		$succes = mysql_query($query) or die ('requete =>'.$query.'<br> error->'.mysql_error());;
		$result = mysql_num_rows ($succes);	
 
		$p=0;
 
		while ($annuaireData=mysql_fetch_array($succes)) { 	
		extract($annuaireData);
 
		$titre = nl2br($titre); 
		$desch = nl2br($desch);
                $prix = nl2br($prix);
 
 
	?>	
 
			<p>...ma partie html...</p>
 
				<?php $p++;	}	?>
D'avance merci pour votre aide
Yule