Selectionner dans un array

Résolu/Fermé
Utilisateur anonyme - 10 janv. 2008 à 18:58
 Utilisateur anonyme - 11 janv. 2008 à 11:58
Bonjour, je souhaite creer un annuaire vers des sites que j'ai préalablement sélectionnés et insérés dans une base de données.
L'utilisateur choisit la categorie de site qu'il veut et le système doit afficher 10 résultats parmis choisit aleatoirement dans la liste des reponses. Mon problème est que mon système (ci après) retourne tous les sites mais je ne trouve pas le moyen de selectionner les sites.
Je sais pas si mon explication est très clair alors voici le code:
$typesite = 'Site_perso';

	$query = 'SELECT * FROM selectionsite WHERE type= \''.$typesite.'\'';
	$reponse = mysql_query($query);

	while($listesite = mysql_fetch_array($reponse))
		{
		echo "<p><a href='". $listesite['url']."' onclick='javascript:window.open(this.href);return(false);' >".$listesite['info']."</a><br /></p>";
		
		$nombre_site = $nombre_site + 1 ;

		srand();
		$rand = rand(1, $nombre_site);
		}

Ce code affiche TOUTE la liste des sites enregistrés... or moi je souhaite selectionner 10 sites aleatoirement dans la liste et les afficher


Merci pour vôtre aide

6 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
10 janv. 2008 à 19:05
salut,

pour limiter à 10 enregistrements tu peux le faire en SQL :
$query = 'SELECT * FROM selectionsite WHERE type= \''.$typesite.'\' LIMIT 0, 10';

0
Utilisateur anonyme
10 janv. 2008 à 19:31
Merci pour ton aide Dalida mais ce code si j'en crois mais piètres connaissances ne ressortirait que les 10 premieres entrées de la base de données or moi je souhaite en sortir 10 aleatoirement parmis une selection qui en comporte bien plus...
0
Utilisateur anonyme
11 janv. 2008 à 10:20
Salut je relance car sans ce système je ne peux avancer sur la suite... Je récapitule mon problème.

Dans une base de donnée j' ai rentré une série de sites avec differents champs notemment l' url, une info sur le site et le type de site.
Je selectionne dans la base de données les sites selon leur type ce qui me donne un nombre conséquent de réponses, parmis lesquelles je désire ressortir aléatoirement 10 réponses.

Mon code ci après sélectionne bien les sites selon leur type mais il m'affiche la totalité des réponses.
$typesite = 'Site_perso';

	$query = 'SELECT * FROM selectionsite WHERE type= \''.$typesite.'\'';
	$reponse = mysql_query($query);

	while($listesite = mysql_fetch_array($reponse))
		{
		echo "<p><a href='". $listesite['url']."' onclick='javascript:window.open(this.href);return(false);' >".$listesite['info']."</a><br /></p>";
		
		$nombre_site = $nombre_site + 1 ;

		srand();
		$rand = rand(1, $nombre_site);
		}


J' aimerais comprendre... mais je crois que c'est pas gagné... lol
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
11 janv. 2008 à 10:45
salut,

m'en fout, suis têtu !
-:oþ
$query = 'SELECT * FROM selectionsite WHERE type= \''.$typesite.'\'' ORDER BY RAND() LIMIT 10';
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
11 janv. 2008 à 10:51
sinon, 4 autres solutions en PHP.
0
Utilisateur anonyme
11 janv. 2008 à 11:58
Ok les premiers essais semblent montrer que cette méthode est efficace.
Même si cela ne comble pas mon ignorance sur le problème qui se posait à moi sur lequel, après réflexion il m'aurait fallu créer un nouveau tableau avec les données recueillis par la requête et les traiter après.
Ta solution traite directement les résultats ce qui est surement moins lourd que ce que je voulais faire.

Merci à toi pour toutes ces précieuses informations que tu partages généreusement.

Pour récapituler, voilà la requête à faire :

$query = 'SELECT * FROM selectionsite WHERE type= \''.$typesite.'\'' ORDER BY RAND() LIMIT 10';

0