[RESOLU] Requête SQL sur condition aléatoire
11 messages
• Page 1 sur 1
-

jer2701 - WRInaute occasionnel

- Messages: 338
- Inscription: 2 Sep 2005
[RESOLU] Requête SQL sur condition aléatoire
salut !!
Est-il possible de lancer une requête SQL sur un "id" randomiser ? ...
Je m'explique : je voudrais lancer des affichages aléatoires d'enregistrements d'une même base.
Est-il possible de lancer une requête SQL sur un "id" randomiser ? ...
Je m'explique : je voudrais lancer des affichages aléatoires d'enregistrements d'une même base.
Dernière édition par jer2701 le Dim Jan 15, 2006 12:25, édité 1 fois.
-

Baronz - WRInaute occasionnel

- Messages: 302
- Inscription: 28 Avr 2005
Ben oui, en php
par exemple:
je reprend un bout de mon code :
Ce code permet en fait de sélectionner le site du jour aléatoirement
je reprend un bout de mon code :
- Code: Tout sélectionner
include("connect.php");
$reqs = mysql_query("SELECT id,titre,des1 FROM c2_website'") or die ("erreur req ".mysql_error());
$nums = mysql_num_rows($reqs); // Je sélectionne le nombre d'enregistrement
$dd2= date("Ymd");
$random1 = ($dd2%$nums)+1; // un nombre aléatoire par rapport à la journée par exemple
$reqs = mysql_query("SELECT * FROM c2_website limit $random1, 1") or die ("erreur req ".mysql_error()); // ensuite ma requète je la fait avec un limit car j'ai des trous dans mes enregistrements....
while($rows = mysql_fetch_array($reqs)) {
// Ton affichage
}
Ce code permet en fait de sélectionner le site du jour aléatoirement
- Albataur
- WRInaute discret

- Messages: 62
- Inscription: 27 Aoû 2005
Heu ... je ne vois pas où est l'aléatoire dans ton script
Tu n'aurais pas oublié une fonction par hasard ?
Je dirais plutôt ça moi :
Qui va te générer un nombre pseudo-aléatoire entre 0 et le nombre de tuples dans ta table.
Par contre, est-ce que tous les ids entre 0 et le nombre de tuples sont utilisés ? Si tu utilises un id auto_increment et que tu as supprimé des lignes entre temps tu risques d'avoir des problèmes. Ce script ne fonctionne que si tu n'as pas de "trou" dans tes ids.
Tu n'aurais pas oublié une fonction par hasard ?
Je dirais plutôt ça moi :
- Code: Tout sélectionner
[...]
$random1=rand(0, $nums-1);
[...]
Qui va te générer un nombre pseudo-aléatoire entre 0 et le nombre de tuples dans ta table.
Par contre, est-ce que tous les ids entre 0 et le nombre de tuples sont utilisés ? Si tu utilises un id auto_increment et que tu as supprimé des lignes entre temps tu risques d'avoir des problèmes. Ce script ne fonctionne que si tu n'as pas de "trou" dans tes ids.
-

Baronz - WRInaute occasionnel

- Messages: 302
- Inscription: 28 Avr 2005
En effet j'ai oublié le rand qque part :S
En fait non je me suis trompé j'ai fait une version aléatoire simplement en fonction du JOUR et non avec le rand...
en fait j'utilisais $nums car il représente le nombre d'enregistrement dans ma base de données. Donc je cherche une variable de 0 à $nums et je l'utilise ensuite dans ma requète afin que je sois sur qu'il ne prennent pas par exemple 56, et j'ai pas d'id 56 dans ma db ... à cause d'une suppression ou autres
Sinon comme dit albataur, son code suffit
En fait non je me suis trompé j'ai fait une version aléatoire simplement en fonction du JOUR et non avec le rand...
en fait j'utilisais $nums car il représente le nombre d'enregistrement dans ma base de données. Donc je cherche une variable de 0 à $nums et je l'utilise ensuite dans ma requète afin que je sois sur qu'il ne prennent pas par exemple 56, et j'ai pas d'id 56 dans ma db ... à cause d'une suppression ou autres
Sinon comme dit albataur, son code suffit
-

jer2701 - WRInaute occasionnel

- Messages: 338
- Inscription: 2 Sep 2005
ouais effectivment je voudrais faire mon random sur les "id" automatiques uniques .. et effectivement j'ai des enregistrements supprimés ...
donc ça craints ?!
Y a pas moyen de faire un truc du style si $random="" alors $random="$random+1" ou truc dans le genre ?
donc ça craints ?!
Y a pas moyen de faire un truc du style si $random="" alors $random="$random+1" ou truc dans le genre ?
-

jer2701 - WRInaute occasionnel

- Messages: 338
- Inscription: 2 Sep 2005
Baronz a écrit:En fait j'utilisais $nums car il représente le nombre d'enregistrement dans ma base de données. Donc je cherche une variable de 0 à $nums et je l'utilise ensuite dans ma requète afin que je sois sur qu'il ne prennent pas par exemple 56, et j'ai pas d'id 56 dans ma db ... à cause d'une suppression ou autres
Ouais mais là $nums te donne le nombre totals d'enregistrements mais pas les "id" manquants ..
Bon je fais mes tests avec vos deux solutions et vous tiens au courant... merci en tout cas ..
- Albataur
- WRInaute discret

- Messages: 62
- Inscription: 27 Aoû 2005
Dans ce cas là tu peux faire comme ça :
- tu fait ta requète en prenant toutes tes lignes
- tu tires un nombre au hasard compris entre 0 et ton nombre de tuples
- tu accèdes à ton tuple tiré au hasard grâce à cette fonction : mysql_data_seek (resource result , int row_number)
Ce qui donne :
- tu fait ta requète en prenant toutes tes lignes
- tu tires un nombre au hasard compris entre 0 et ton nombre de tuples
- tu accèdes à ton tuple tiré au hasard grâce à cette fonction : mysql_data_seek (resource result , int row_number)
Ce qui donne :
- Code: Tout sélectionner
$reqs = mysql_query("SELECT id,titre,des1 FROM c2_website'") or die ("erreur req ".mysql_error());
$nums = mysql_num_rows($reqs); // Je sélectionne le nombre d'enregistrement
$rand_id = rand(0,($nums-1)); // un nombre aléatoire par rapport à la journée par exemple
//On déplace le pointeur interne de mysql
mysql_data_seek($reqs,$rand_id);
//Tu récupères les données
$pouet = mysql_fetch_array($reqs);
-

MarvinLeRouge - WRInaute impliqué

- Messages: 526
- Inscription: 1 Sep 2004
Attendez attendez, on va faire plus simple.
Pourquoi pas tout bêtement
?
Pourquoi pas tout bêtement
- Code: Tout sélectionner
select truc
from machin
order by rand()
limit combienTenVeux
?
- Albataur
- WRInaute discret

- Messages: 62
- Inscription: 27 Aoû 2005
MarvinLeRouge a écrit:Attendez attendez, on va faire plus simple.
Pourquoi pas tout bêtement
- Code: Tout sélectionner
select truc
from machin
order by rand()
limit combienTenVeux
?
Ca va t'ordonner les résultats par rapport à une colonne (syntaxe : ORDER BY [nom ou num de colonne]) donc je pense pas que ça va beaucoup l'aider.
-

jer2701 - WRInaute occasionnel

- Messages: 338
- Inscription: 2 Sep 2005
Bon ok ça marche, merci à fonds les boulons notamment à Baronz
et Albataur
...
Voici donc le code définitif et validé de la fonction que je voulais pour ceux que ça intérresse :
$affich_client = mysql_query("SELECT * FROM la_table");
$nbr=mysql_numrows($affich_client);
$rand_id=rand(0,($nbr-1));
mysql_data_seek($affich_client,$rand_id);
et après un list de $affich_client et ça roule ....
A chaque actualisation de page l'enregistrement selectionné et différent.
merci !!!
Voici donc le code définitif et validé de la fonction que je voulais pour ceux que ça intérresse :
$affich_client = mysql_query("SELECT * FROM la_table");
$nbr=mysql_numrows($affich_client);
$rand_id=rand(0,($nbr-1));
mysql_data_seek($affich_client,$rand_id);
et après un list de $affich_client et ça roule ....
A chaque actualisation de page l'enregistrement selectionné et différent.
11 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- requête SQL avec un champ vide pour condition ; help !
- [RESOLU] SQL tri multiple et aléatoire
- [Résolu] Requête MySQL - cumul de champs dans la condition
- un requête sql [Résolu]
- [Résolu] Requete SQL
- [résolu][sql] Requête avec WHERE
- [Résolu] PB requete SQL 3 tables + 2 count
- [challenge] [résolu] Requete SQL galere
- [résolu] Nombres arrondis suite à requête SQL
- [résolu] Demande d'aide pour une requête sql
- Google API : guide de développement de l'API Google - 20-09-2002
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Mort du META tag "keywords" - 02-10-2002
- Optimisation du PageRank à l'intérieur d'un site - 06-09-2008
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Informations sur l'infrastructure technique de Google - 01-11-2004
- Google indexe le Flash - 28-04-2004
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
