Très perdu dans ce charabia!!!

MartinPHP27 Messages postés 5 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 23 janvier 2007 - 22 janv. 2007 à 23:26
MartinPHP27 Messages postés 5 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 23 janvier 2007 - 23 janv. 2007 à 19:05
Bonjour à tous,

Voilà quelques temps que je suis à la découverte du langage PHP et me voici devant un problème que j'ai du mal à solutionner.

Je me connecte a une ODBC (Access) comme suis:
Ca marche pour tout sans problème.

Ma table possède un champ clé primaire qui génère un numéro aléatoire.
J'aimerais avoir une requète qui me permet d'afficher un enregistrement au hasard a chaque visite.
(par exemple une carte de collection qui est afficher sur l'index du site et qui change a chaque rafraichissement)

J'espère avoir donné assez d'information pour vous faire voir mon problème.

Merci à vous tous les GURU !!!

9 réponses

Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
22 janv. 2007 à 23:31
Salut !

Pour faire une selection aléatoire, il existe une fonction SQL (MySQL, mais je suppose qu'elle existe également pour les autres...)

Tu fais SELECT RANDOM FROM <table> LIMIT 1

A adapter éventuellement à access, que je ne connais pas du tout.
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
22 janv. 2007 à 23:33
Hello,

je ne connais pas assez Access pour savoir s'il y a une comande qui te renvoie une entrée au hasard, mais tu peux générer toi-même un nombre aléatoire avec rand( ) en php et récupérer l'enregistrement correspondant non ?

à+
0
MartinPHP27 Messages postés 5 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 23 janvier 2007
23 janv. 2007 à 04:12
Merci pour vos réponses...

La fonction Random ou Rand() n'est pas supporté par le ODBC....en conséquent il y a la fonction Rnd(). Mais ...quand je fais la meme ligne que tu m'as donné (Blink 182) mais avec un rnd() à la place du Random, ca fontionne...mais me donne que les 2 premiers enregistrement de la DB ....2 sur 55 items...

Pour ta proposition Evangun, ce n'est pas bete , mais ma base de donnée Access attribue des numero de 7 chiffres qui varies entre 100000 et 999999, mais jamais en suivant l'ordre. (exemple, enregistrement 1 à comme numero 485421 et la suivante a 245785)...et c'est voulu

Mes chances de generer avec la fonction Rand() ou Rnd() un chiffre existant dans ma DB sont minces je crois..? a moin qu'une solution adjacente pourrais concrétiser l'idée...

Merci pour votre collaboration !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 janv. 2007 à 09:04
Hello,

et SELECT TOP 1 champ1, champ2... FROM table ORDER BY Rnd(champID)
où champ1 etc sont les champs à récupérer, et champID ton champ id.
Ca devrait fonctionner.
0

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

Posez votre question
MartinPHP27 Messages postés 5 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 23 janvier 2007
23 janv. 2007 à 15:06
Bonjour Malalam

J'ai cru que ca marcherais. Je t'explique:

Si je fais par exemple ta commande:

$valeur= odbc_exec($cnx,"SELECT TOP 1 Pseudo,Age,Photo FROM Fiche_ind ORDER BY Rnd(IDMember)");

J'obtiens l'erreur:

Warning : odbc_result() [function.odbc-result]: Field IDMember not found in ...

Par contre, si jessai

$valeur = odbc_exec($cnx,"SELECT TOP 1 IDMember,Pseudo,Age,Photo FROM Fiche_ind ORDER BY Rnd(IDMember)");

Ca fonctionne à un certain point, puisque je n'obtien pas d'erreur, mais c'est toujours le même enregistrement qui sort..c'est à dire, l'enregistrement #1 dans la DB.
Mon champs IDMember existe bel et bien puisque toutes mes autres requête ne fonctionne que par lui.

J'essai à travert tout ca de comprendre la facon de penser de la Db ...question d'apprendre... même si toutes vos solutions sont pour moi plein de bon sens
Merci encore....
0
MartinPHP27 Messages postés 5 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 23 janvier 2007
23 janv. 2007 à 15:11
Rebonjour

Bon voilà, ta méthode fonctionne sans erreur, car j'ai moi même profoqué une erreur avec autre chose....voilà l'importance de bien vérifier et tanter de comprendre....c'est comme ca qu'on grandi.

Cependant c'est bien beau tout ca....mais j'ai toujours un problème...c'est toujours la même enregistrement qui sort.....comme si la fonction RND ne fonctionnait pas..
C'est l'enregistrement #1 qui sort.....jamais la 2.....

A suivre.....
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 janv. 2007 à 16:44
Essaye avec un TOP 10 pour voir si ce sont tjrs les 10 mêmes qui sortent aussi ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 janv. 2007 à 16:45
En tous cas, je ne suis pas au boulot là, mais demain ou dans la semaine selon mon taf, j'essayerai de voir, on a une base Access.
0
MartinPHP27 Messages postés 5 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 23 janvier 2007
23 janv. 2007 à 19:05
Excellent, moi de mon coté , je vais approfondir pour voir.

Merci de tes reponses !!
0
Rejoignez-nous