est ce possible d'avoir l'ordre de sortie des info d'un selec complétement aléatoire et sans doublon ?
genre
SELECT * FROM `concours_lod_photo` ORDER BY random
un truc comme çamerci
Code : Tout sélectionner
SELECT * FROM `table` ORDER BY RAND()Code : Tout sélectionner
SELECT * FROM maTable WHERE monID = RAND(N)
<?
//Tirage au hasard à partir d'une base
$con = mysql_connect("localhost","root","") or die (mysql_errno().": ".mysql_error());
$table = mysql_db_query("test","select * from donnees",$con) or die (mysql_errno().": ".mysql_error());
while ($ligne = mysql_fetch_assoc($table)){if ($ligne != null) $source [] = $ligne;}
//Réorganisation de la source par hasard
$source = hasard($source);
//Affichage
if ($source != null)
foreach($source as $ligne){
echo "<p>";
if ($ligne != null)
foreach($ligne as $donnée)
echo "\t$donnée";
}
//Fonction de réorganisation d'un tableau par hasard
function hasard ($source){
$resultat = null;
$index = null;
for ($i=0; $i < count($source); $i++){
$suivant = false;
do {
$hasard = abs(rand(0,count($source)-1));
if ($hasard >=0 && $hasard < count($source) && !utilisé($hasard, $index)) {
//enregistrer la valeur trouvée
$resultat[] = $source[$hasard];
$index[] = $hasard;
$suivant = true;
}
} while (count($resultat) < count($source) && !$suivant);
}
return $resultat;
}
//Fonction qui cherche si un index est déjà utilisé
function utilisé($i,$index){
if ($index != null)
foreach ($index as $valeur)
if ($i == $valeur) return true;
return false;
}
?>