afficher les plus grande valeur de facon 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 : afficher les plus grande valeur de facon aléatoire

Re: afficher les plus grande valeur de facon aléatoire

par wwwbillgates » 04 mars 2010, 12:13

ma ma ma truc de ouf c'est exactement pile poil ça que jvoulais faire Angus666 , j'ai essayé de le placer partout ce rand() mais sans succès..... mmmmh il allait là le ptit malin. Merci à tous de votre aide bonne journée :wink:

Re: afficher les plus grande valeur de facon aléatoire

par angus666 » 04 mars 2010, 10:57

Bonjour à toi,

Il y a la fonction RAND de mysql que tu peux coupler à l'ordre de tri ORDER BY:
SELECT photo, nom
                                                FROM description_celebrite
                                                ORDER BY clic_image DESC, RAND()
                                                LIMIT 0, 2

Re: afficher les plus grande valeur de facon aléatoire

par AB » 04 mars 2010, 00:33

Et bien, en reprenant ton code, pourquoi ne fait tu pas simplement un tableau avec le résultat de ta requête initiale, et ensuite tu mélange les éléments du tableau ?
$reponse = mysql_query("
                                                SELECT photo, nom
                                                FROM description_celebrite
                                                ORDER BY clic_image DESC
                                                LIMIT 0, 2
                                           ");

//Initialisation du tableau

$tab_result = array();

//Crée un tableau avec le nom de la photo comme index et l'adresse de la photo comme valeur

while ($donnees = mysql_fetch_array($reponse) )
{
$tab_result[$donnees['nom']] = $donnees['photo'];
}

//on mélange les éléments du tableau
shuffle($tab_result);

// Et maintenant tu liste ton tableau pour afficher tes images
foreach ($tab_result as $nom => $adresse)
{ ?>
<p><img src="thumb/<?php  echo $adresse; ?>" /></p>
<span class="nom_au_hasard"><?php echo $nom; ?></span>
<?php } ?>
A chaque rafraichissement de la page tu devrais avoir tes trois images (puisque tu fait un limit 0,2) qui s'affiche dans un ordre différent. Encore que pour trois images le hasard peut faire qu'elle s'affichent deux fois de suite dans le même ordre mais cela devrait être peu fréquent.

J'ai pas testé le code ci dessus mais c'est le principe.

Re: afficher les plus grande valeur de facon aléatoire

par wwwbillgates » 03 mars 2010, 15:27

j'ai fais comme tu ma dit mais maintenant ca n'affiche que l'image ayant le plus grand score de ma base de donnée, arf!!! :? alors comme je suis débutant je n'sais pas si j'ai fais comme il faut mais en fait sque jvoudrais faire serait d'afficher comme mon code un ORDER BY clic_image DESC mais avec en plus un classement alléatoire style rand() pour les images cliqué le même nombre de fois. Comme ca ca permet aussi quand je remet tout les compteurs à zéro à ce que toutes les images soit affichés de façon alléatoire car actuellement malgré quelles soit toutes à zéro on a toujours les même images qui sont affichés en premier. :( merci quand meme de ton aide :wink:

Re: afficher les plus grande valeur de facon aléatoire

par macgawel » 02 mars 2010, 14:59

C'est plus un problème de requête, je pense.
SELECT photo, nom
FROM description_celebrite
WHERE clic_image = (SELECT MAX(clic_image) FROM description_celebrite)
Devrait te sortir la liste des photos ayant eu le plus de clics.
Eventuellement, tu peux trier (sur autre chose que le nombre de clics :roll: ).
Tu peux aussi mettre une LIMIT. En fait, suivant le nombre de photos ce serait même conseillé : en début de semaine tu auras forcément un moment où toutes les photos auront zéro clic.

Ensuite, il te reste à créer dans PHP un tableau contenant les valeurs retournées, et à faire un array_rand($Tableau, $nombre_d_images) dessus...

afficher les plus grande valeur de facon aléatoire

par wwwbillgates » 02 mars 2010, 14:18

Bonjour à tous, alors là je sèche...arf!
J'ai créé un systeme de clic sur image pour ensuite afficher en page d'accueil celles qui ont été le plus cliquées dans la semaine. J'ai donc dans ma base de donnée un champ clic_image qui indique la quantité de clic de la semaine. Mais lorsque plusieur images ont la même quantité de clic je n'arrive pas a réaliser un affichage alléatoir. En effet si plusieur images on recu le meme nombre de clics alors mon SELECT ayant un LIMIT de 0, 2 affiche toujours les meme images... j'ai pensé que la fonction getrandmax() serait parfaite pour résoudre le problème puisque quelle retourne apparement la plus grande valeur aléatoire possible, mais j'arrive a rien avec la doc, arf!!! #-o

voici un extrais de mon tit bou de code :
$reponse = mysql_query("
						SELECT photo, nom
						FROM description_celebrite
						ORDER BY clic_image DESC
						LIMIT 0, 2
					   "); 



while ($donnees = mysql_fetch_array($reponse) )
{
	?>
	<div class="vignettes_au_hasard">
		<a href="javascript:PopupImage('images/<?php echo $donnees['photo']; ?>')"><img src="thumb/<?php echo $donnees['photo']; ?>"></a>
		<span class="nom_au_hasard"><?php echo $donnees['nom']; ?></span>
	</div>
	<?php  
}