Par une requête mysql je selectionne un certain nombre d'enregistrements
mais je souhaite n'en selectionner qu'un seul. Ils'agit d'une table
contenant les coordonnées de photos prises à certaines dates.
Comment faire pour afficher aléatoirement un des enregistrements
selectionnés et non pas toujours le premier.
J'ai cherché par moi-même plusieurs solutions mais je n'y arrive pas.
Si quelqu'un veut bien m'aider, ça serait sympa.
avec la clause SQL limit vu sur google php +rnd +sql <JE CITE> About selecting random row from a MySQL table (much faster thand MySQL's rand function:
$tot=mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `sometable` WHERE (condition)")); $row=rand(0,$tot); $res=mysql_fetch_row(mysql_query("SELECT * FROM `sometable` WHERE (condition) LIMIT $row,1")); </JE CITE> Bon affichage
Michel
Bonjour
avec la clause SQL limit
vu sur google php +rnd +sql
<JE CITE>
About selecting random row from a MySQL table (much faster thand MySQL's
rand function:
$tot=mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `sometable` WHERE
(condition)"));
$row=rand(0,$tot);
$res=mysql_fetch_row(mysql_query("SELECT * FROM `sometable` WHERE
(condition) LIMIT $row,1"));
</JE CITE>
Bon affichage
avec la clause SQL limit vu sur google php +rnd +sql <JE CITE> About selecting random row from a MySQL table (much faster thand MySQL's rand function:
$tot=mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `sometable` WHERE (condition)")); $row=rand(0,$tot); $res=mysql_fetch_row(mysql_query("SELECT * FROM `sometable` WHERE (condition) LIMIT $row,1")); </JE CITE> Bon affichage
Michel
GB
"mbfac" a écrit dans le message de news: dsagg9$pf9$
Bonjour
avec la clause SQL limit vu sur google php +rnd +sql <JE CITE> About selecting random row from a MySQL table (much faster thand MySQL's rand function:
$tot=mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `sometable` WHERE (condition)")); $row=rand(0,$tot); $res=mysql_fetch_row(mysql_query("SELECT * FROM `sometable` WHERE (condition) LIMIT $row,1")); </JE CITE> Bon affichage
Michel
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo); srand((double)microtime()*1000000); $nb=$nb-1; $rand=rand(0,$nb); $row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where date='$row[date]' LIMIT $rand,1"));
Merci encore pour le coup de main
Guillaume
"mbfac" <mbfac.enlever@oter.free.fr> a écrit dans le message de news:
dsagg9$pf9$1@news.tiscali.fr...
Bonjour
avec la clause SQL limit
vu sur google php +rnd +sql
<JE CITE>
About selecting random row from a MySQL table (much faster thand MySQL's
rand function:
$tot=mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `sometable` WHERE
(condition)"));
$row=rand(0,$tot);
$res=mysql_fetch_row(mysql_query("SELECT * FROM `sometable` WHERE
(condition) LIMIT $row,1"));
</JE CITE>
Bon affichage
Michel
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon
suivante :
$photo=mysql_query("SELECT * FROM photos where date='$row[date]'");
$nb = mysql_num_rows($photo);
srand((double)microtime()*1000000);
$nb=$nb-1;
$rand=rand(0,$nb);
$row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where
date='$row[date]' LIMIT $rand,1"));
"mbfac" a écrit dans le message de news: dsagg9$pf9$
Bonjour
avec la clause SQL limit vu sur google php +rnd +sql <JE CITE> About selecting random row from a MySQL table (much faster thand MySQL's rand function:
$tot=mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM `sometable` WHERE (condition)")); $row=rand(0,$tot); $res=mysql_fetch_row(mysql_query("SELECT * FROM `sometable` WHERE (condition) LIMIT $row,1")); </JE CITE> Bon affichage
Michel
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo); srand((double)microtime()*1000000); $nb=$nb-1; $rand=rand(0,$nb); $row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where date='$row[date]' LIMIT $rand,1"));
Merci encore pour le coup de main
Guillaume
Bruno Baguette
GB a écrit :
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
srand((double)microtime()*1000000); $nb=$nb-1; $rand=rand(0,$nb); $row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where
Evitez le SELECT *, ca vous fera des emmerdes tôt ou tard, c'est du vécu ! :-)
Prenez la bonne habitude d'écrire les choses proprement en indiquant les noms de champs dont vous avez besoin.
date='$row[date]' LIMIT $rand,1"));
Merci encore pour le coup de main
Guillaume
En espérant que ca aide,
-- Bruno BAGUETTE -
"Nous souhaitons aider les communautés les plus pauvres de ce pays. Que personne ne croie qu'aux Etats-Unis tout le monde vit dans l'abondance. Ils ont des millions de pauvres là-bas" Aout 2005 - Hugo Chavez, Président du Vénézuela.
GB a écrit :
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon
suivante :
$photo=mysql_query("SELECT * FROM photos where date='$row[date]'");
$nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour
faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'",
ce sera moins gourmand en ressources...
srand((double)microtime()*1000000);
$nb=$nb-1;
$rand=rand(0,$nb);
$row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where
Evitez le SELECT *, ca vous fera des emmerdes tôt ou tard, c'est du vécu
! :-)
Prenez la bonne habitude d'écrire les choses proprement en indiquant les
noms de champs dont vous avez besoin.
date='$row[date]' LIMIT $rand,1"));
Merci encore pour le coup de main
Guillaume
En espérant que ca aide,
--
Bruno BAGUETTE - bouchon@alussinan.org
"Nous souhaitons aider les communautés les plus pauvres de ce pays.
Que personne ne croie qu'aux Etats-Unis tout le monde vit dans
l'abondance. Ils ont des millions de pauvres là-bas"
Aout 2005 - Hugo Chavez, Président du Vénézuela.
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
srand((double)microtime()*1000000); $nb=$nb-1; $rand=rand(0,$nb); $row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where
Evitez le SELECT *, ca vous fera des emmerdes tôt ou tard, c'est du vécu ! :-)
Prenez la bonne habitude d'écrire les choses proprement en indiquant les noms de champs dont vous avez besoin.
date='$row[date]' LIMIT $rand,1"));
Merci encore pour le coup de main
Guillaume
En espérant que ca aide,
-- Bruno BAGUETTE -
"Nous souhaitons aider les communautés les plus pauvres de ce pays. Que personne ne croie qu'aux Etats-Unis tout le monde vit dans l'abondance. Ils ont des millions de pauvres là-bas" Aout 2005 - Hugo Chavez, Président du Vénézuela.
JustMe
Bruno Baguette a pensé très fort :
GB a écrit :
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
Bruno Baguette a pensé très fort :
GB a écrit :
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon
suivante :
$photo=mysql_query("SELECT * FROM photos where date='$row[date]'");
$nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire
un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce
sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
JustMe
(supersedes )
Bruno Baguette a pensé très fort :
GB a écrit :
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select count(1) qui est encore moins gourmant ;-)
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon
suivante :
$photo=mysql_query("SELECT * FROM photos where date='$row[date]'");
$nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire
un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce
sera moins gourmand en ressources...
Ou plutot un select count(1) qui est encore moins gourmant ;-)
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select count(1) qui est encore moins gourmant ;-)
GB
Merci à tous d'aider l'autodidacte que je suis.
Guillaume
"JustMe" a écrit dans le message de news:
(supersedes )
Bruno Baguette a pensé très fort :
GB a écrit :
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select count(1) qui est encore moins gourmant ;-)
Merci à tous d'aider l'autodidacte que je suis.
Guillaume
"JustMe" <pasdespam@merci.beaucoup.con> a écrit dans le message de news:
mn.42d17d6223e32b47.15643@merci.beaucoup.con...
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la
façon suivante :
$photo=mysql_query("SELECT * FROM photos where date='$row[date]'");
$nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour
faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'",
ce sera moins gourmand en ressources...
Ou plutot un select count(1) qui est encore moins gourmant ;-)
Merci, j'ai enfin réussi en adaptant ce que tu m'as conseillé de la façon suivante : $photo=mysql_query("SELECT * FROM photos where date='$row[date]'"); $nb = mysql_num_rows($photo);
Aaaargh, vous reprenez TOUS les champs de cette table uniquement pour faire un comptage ?
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select count(1) qui est encore moins gourmant ;-)
Bruno Baguette
JustMe a écrit :
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
Mmmh , tu voulais dire un SELECT COUNT(1), je présume ?
-- Bruno BAGUETTE -
"Nous n'avons pas à garantir la sécurité des produits alimentaires génétiquement modifiés (OGM). Notre intérêt est d'en vendre le plus possible."
Propos de Monsanto, in le Monde Diplomatique, Décembre 98.
JustMe a écrit :
Faites plutôt un "SELECT COUNT(*) FROM photos where
date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
Mmmh , tu voulais dire un SELECT COUNT(1), je présume ?
--
Bruno BAGUETTE - bouchon@alussinan.org
"Nous n'avons pas à garantir la sécurité des
produits alimentaires génétiquement modifiés (OGM).
Notre intérêt est d'en vendre le plus possible."
Propos de Monsanto, in le Monde Diplomatique, Décembre 98.
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
Mmmh , tu voulais dire un SELECT COUNT(1), je présume ?
Ton logiciel de coloriage ne tiens pas compte des cancel et des supersedes ? ;-)
GB
Je continue dans mes questions d'amateur (mais il parait qu'il n'y a pas de questions idiotes...)
Lorsque je fais un SELECT COUNT(1) ou (*) j'obtiens : Resource id # avec un chiffre à suivre. Pourquoi et comment exploiter ce résultat ? Pour l'instant j'utilise toujour le mysql_query() et ensuite mysql_num_row()
Guillaume
"Bruno Baguette" a écrit dans le message de news:
JustMe a écrit :
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
Mmmh , tu voulais dire un SELECT COUNT(1), je présume ?
-- Bruno BAGUETTE -
"Nous n'avons pas à garantir la sécurité des produits alimentaires génétiquement modifiés (OGM). Notre intérêt est d'en vendre le plus possible."
Propos de Monsanto, in le Monde Diplomatique, Décembre 98.
Je continue dans mes questions d'amateur (mais il parait qu'il n'y a pas de
questions idiotes...)
Lorsque je fais un SELECT COUNT(1) ou (*) j'obtiens : Resource id # avec un
chiffre à suivre.
Pourquoi et comment exploiter ce résultat ?
Pour l'instant j'utilise toujour le mysql_query() et ensuite mysql_num_row()
Guillaume
"Bruno Baguette" <bouchon@alussinan.org> a écrit dans le message de news:
44uqv9F3vtt9U1@individual.net...
JustMe a écrit :
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'",
ce sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
Mmmh , tu voulais dire un SELECT COUNT(1), je présume ?
--
Bruno BAGUETTE - bouchon@alussinan.org
"Nous n'avons pas à garantir la sécurité des
produits alimentaires génétiquement modifiés (OGM).
Notre intérêt est d'en vendre le plus possible."
Propos de Monsanto, in le Monde Diplomatique, Décembre 98.
Je continue dans mes questions d'amateur (mais il parait qu'il n'y a pas de questions idiotes...)
Lorsque je fais un SELECT COUNT(1) ou (*) j'obtiens : Resource id # avec un chiffre à suivre. Pourquoi et comment exploiter ce résultat ? Pour l'instant j'utilise toujour le mysql_query() et ensuite mysql_num_row()
Guillaume
"Bruno Baguette" a écrit dans le message de news:
JustMe a écrit :
Faites plutôt un "SELECT COUNT(*) FROM photos where date='$row[date]'", ce sera moins gourmand en ressources...
Ou plutot un select(1) qui est encore moins gourmant ;-)
Mmmh , tu voulais dire un SELECT COUNT(1), je présume ?
-- Bruno BAGUETTE -
"Nous n'avons pas à garantir la sécurité des produits alimentaires génétiquement modifiés (OGM). Notre intérêt est d'en vendre le plus possible."
Propos de Monsanto, in le Monde Diplomatique, Décembre 98.
Bruno Baguette
GB a écrit :
Je continue dans mes questions d'amateur (mais il parait qu'il n'y a pas de questions idiotes...)
Il n'y a pas de questions idiotes, par contre ce serait idiot de ne pas les poser :-)
Lorsque je fais un SELECT COUNT(1) ou (*) j'obtiens : Resource id # avec un chiffre à suivre. Pourquoi et comment exploiter ce résultat ? Pour l'instant j'utilise toujour le mysql_query() et ensuite mysql_num_row()
C'est un peu différent. Par rapport à votre premier message, vous ne devez plus récupérer un nombre d'enregistrements retournés par PHP, mais bien un résultat provenant d'une requête SQL.
Je reprend un peu votre code :
###
// On modifie un poil la requête pour ajouter un alias au COUNT $photo=mysql_query("SELECT COUNT(1) AS nbre_photos FROM photos where date='$row[date]'");
//Cette ligne ne sert plus maintenant //$nb = mysql_num_rows($photo);
if($photo!=úLSE) { // La requête s'est bien passée // ==> On récupère le résultat $TupleComptagePhoto = mysql_fetch_assoc($photo); // On récupère les valeurs retournées par la requête // en se servant du nom de la colonne $nb = $TupleComptagePhoto['nbre_photos']; srand((double)microtime()*1000000); $nb=$nb-1; $rand=rand(0,$nb); $row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where date='$row[date]' LIMIT $rand,1")); } else { // Une erreur SQL à eu lieu // ==> Faire un traitement de cette erreur (affichage d'un message d'erreur ou autre...) }
###
Notez que ce code fonctionnera tant qu'il s'agit de requêtes qui vous retournent *à coup sûr* (un count() renvoie toujours quelque chose) un et un seul tuple (=enregistrement).
Ceci dit, on sort maintenant du cadre du forum, je vous invite donc à poser vos questions relatives à PHP sur fr.comp.lang.php (forum modéré, donc un délai peut s'écouler entre l'envoi de votre message et sa publication sur le forum), et de garder ce forum ci pour vos questions relatives à vos requêtes SQL.
Tant que je suis HS, autant achever le sacrilège, vous devriez faire attention à la gestion d'erreur lorsque vous faites des requêtes SQL en PHP. (suis-je bien connecté ? est-ce que la requête s'est bien passée ?,...), ca vous facilitera les futurs débuggages :-)
En espérant que ca aide ! ;-)
PS : Code non testé, vous aurez peut-être un parse error ou l'autre à corriger.
-- Bruno BAGUETTE -
"Nous n'avons pas à garantir la sécurité des produits alimentaires génétiquement modifiés (OGM). Notre intérêt est d'en vendre le plus possible."
Propos de Monsanto, in le Monde Diplomatique, Décembre 98.
GB a écrit :
Je continue dans mes questions d'amateur (mais il parait qu'il n'y a pas de
questions idiotes...)
Il n'y a pas de questions idiotes, par contre ce serait idiot de ne pas
les poser :-)
Lorsque je fais un SELECT COUNT(1) ou (*) j'obtiens : Resource id # avec un
chiffre à suivre.
Pourquoi et comment exploiter ce résultat ?
Pour l'instant j'utilise toujour le mysql_query() et ensuite mysql_num_row()
C'est un peu différent. Par rapport à votre premier message, vous ne
devez plus récupérer un nombre d'enregistrements retournés par PHP, mais
bien un résultat provenant d'une requête SQL.
Je reprend un peu votre code :
###
// On modifie un poil la requête pour ajouter un alias au COUNT
$photo=mysql_query("SELECT COUNT(1) AS nbre_photos FROM photos where
date='$row[date]'");
//Cette ligne ne sert plus maintenant
//$nb = mysql_num_rows($photo);
if($photo!=úLSE)
{
// La requête s'est bien passée
// ==> On récupère le résultat
$TupleComptagePhoto = mysql_fetch_assoc($photo);
// On récupère les valeurs retournées par la requête
// en se servant du nom de la colonne
$nb = $TupleComptagePhoto['nbre_photos'];
srand((double)microtime()*1000000);
$nb=$nb-1;
$rand=rand(0,$nb);
$row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where
date='$row[date]' LIMIT $rand,1"));
}
else
{
// Une erreur SQL à eu lieu
// ==> Faire un traitement de cette erreur (affichage d'un message
d'erreur ou autre...)
}
###
Notez que ce code fonctionnera tant qu'il s'agit de requêtes qui vous
retournent *à coup sûr* (un count() renvoie toujours quelque chose) un
et un seul tuple (=enregistrement).
Ceci dit, on sort maintenant du cadre du forum, je vous invite donc à
poser vos questions relatives à PHP sur fr.comp.lang.php (forum modéré,
donc un délai peut s'écouler entre l'envoi de votre message et sa
publication sur le forum), et de garder ce forum ci pour vos questions
relatives à vos requêtes SQL.
Tant que je suis HS, autant achever le sacrilège, vous devriez faire
attention à la gestion d'erreur lorsque vous faites des requêtes SQL en
PHP. (suis-je bien connecté ? est-ce que la requête s'est bien passée
?,...), ca vous facilitera les futurs débuggages :-)
En espérant que ca aide ! ;-)
PS : Code non testé, vous aurez peut-être un parse error ou l'autre à
corriger.
--
Bruno BAGUETTE - bouchon@alussinan.org
"Nous n'avons pas à garantir la sécurité des
produits alimentaires génétiquement modifiés (OGM).
Notre intérêt est d'en vendre le plus possible."
Propos de Monsanto, in le Monde Diplomatique, Décembre 98.
Je continue dans mes questions d'amateur (mais il parait qu'il n'y a pas de questions idiotes...)
Il n'y a pas de questions idiotes, par contre ce serait idiot de ne pas les poser :-)
Lorsque je fais un SELECT COUNT(1) ou (*) j'obtiens : Resource id # avec un chiffre à suivre. Pourquoi et comment exploiter ce résultat ? Pour l'instant j'utilise toujour le mysql_query() et ensuite mysql_num_row()
C'est un peu différent. Par rapport à votre premier message, vous ne devez plus récupérer un nombre d'enregistrements retournés par PHP, mais bien un résultat provenant d'une requête SQL.
Je reprend un peu votre code :
###
// On modifie un poil la requête pour ajouter un alias au COUNT $photo=mysql_query("SELECT COUNT(1) AS nbre_photos FROM photos where date='$row[date]'");
//Cette ligne ne sert plus maintenant //$nb = mysql_num_rows($photo);
if($photo!=úLSE) { // La requête s'est bien passée // ==> On récupère le résultat $TupleComptagePhoto = mysql_fetch_assoc($photo); // On récupère les valeurs retournées par la requête // en se servant du nom de la colonne $nb = $TupleComptagePhoto['nbre_photos']; srand((double)microtime()*1000000); $nb=$nb-1; $rand=rand(0,$nb); $row2=mysql_fetch_array(mysql_query("SELECT * FROM photos where date='$row[date]' LIMIT $rand,1")); } else { // Une erreur SQL à eu lieu // ==> Faire un traitement de cette erreur (affichage d'un message d'erreur ou autre...) }
###
Notez que ce code fonctionnera tant qu'il s'agit de requêtes qui vous retournent *à coup sûr* (un count() renvoie toujours quelque chose) un et un seul tuple (=enregistrement).
Ceci dit, on sort maintenant du cadre du forum, je vous invite donc à poser vos questions relatives à PHP sur fr.comp.lang.php (forum modéré, donc un délai peut s'écouler entre l'envoi de votre message et sa publication sur le forum), et de garder ce forum ci pour vos questions relatives à vos requêtes SQL.
Tant que je suis HS, autant achever le sacrilège, vous devriez faire attention à la gestion d'erreur lorsque vous faites des requêtes SQL en PHP. (suis-je bien connecté ? est-ce que la requête s'est bien passée ?,...), ca vous facilitera les futurs débuggages :-)
En espérant que ca aide ! ;-)
PS : Code non testé, vous aurez peut-être un parse error ou l'autre à corriger.
-- Bruno BAGUETTE -
"Nous n'avons pas à garantir la sécurité des produits alimentaires génétiquement modifiés (OGM). Notre intérêt est d'en vendre le plus possible."
Propos de Monsanto, in le Monde Diplomatique, Décembre 98.