Récupérer un id au hasard d'une base de donnée access

Contenu du snippet

tout est dans le titre!

Source / Exemple :


// mes objets de connexion à ma base de donnée
<%
	dim mydb
	dim oConn
	dim oRs
	dim varsql

	mydb = "DBQ=c:\\\\inetpub\\\\database\\\\mydatabase.mdb;Driver={Microsoft Access Driver (*.mdb)};DriverId=25" 
	set oConn = server.createobject("ADODB.Connection")
	oConn.Open mydb 
	set oRs = server.createobject("adodb.recordset")
%>

// ma boucle qui lance la fonction jusqu'à ce que l'ID obtenu existe
<%
do while id_ok = 0 'tant que l'id_ok est égal à 0 on execute la fonction
   gen_id()	
loop
response.write mygen_id & " est l'ID séléctionné au hasard de ma table"
%>

// ma fonction qui récupère l'id au hasard
<%
function gen_id()
	varsql = "SELECT max(image.id) as max_id, min(image.id) as min_id FROM image" 'la requête SQL qui selectionne l'id le plus bas et le plus haut
	oRs.open varsql, oConn 'j execute la requete
		max_id = oRs.fields("max_id") 'j attribue l'ID le plus haut à la variable
		min_id = oRs.fields("min_id") 'j attribue l'ID le plus bas à la variable

	oRs.close 'je ferme mon recordset
	Randomize   ' je genère un nombre entre max_id et min_id	MyValue = Int((max_id - min_id + 1) * Rnd + min_id)

	varsql = "SELECT id FROM image WHERE id = " & myvalue 'la requete SQL qui vérifie que le numero généré existe
	oRs.open varsql, oConn 'j execute la requete	
	if oRs.eof then 'si le recordset est vide
		id_ok = 0
	else 's il n est pas vide, l'ID existe
		id_ok = 1
		mygen_id = myvalue 'mygen_id est maintenant la variable qui contient l'ID séléctionné au hasard!!
	end if	
	oRs.close 'on ferme le recordset
end function 'fin de la fonction
%>

Conclusion :


J'ai pensé que ca pourrait etre utile pour certain vu comme j'ai galeré pour trouver une solution. Imaginons que vous avez un site avec un album photo (beaucoup de photo) et que vous décidez de faire une page qui afficherais une photo au hasard tout les jours. Toutes les infos de vos photos sont bien sur stockées dans une base de donnée access.
Illustration de la table IMAGE:
ID (n° auto; clé primaire) | image (texte)

pour info: lorsqu'une image est supprimée de la table son ID n'existe plus, il y a donc un trou (ex: 32, 34, 35). C'est à cause de cela que ce système est plus compliqué :)

Voilà maintenant pour séléctionner un ID au hasard parmis les 1000 présents dans la table je fonctionne de la manière suivante:
- on selectionne dans la table IMAGE l'ID le plus bas et le plus haut (ex: 3 et 700)
- on génère un n° au hasard compris entre l'ID le plus bas (3) et l'ID le plus haut (700)
- on regarde si le n° génèré existe dans la table IMAGE
- s'il existe, on affiche l'image, sinon on regenere un n° etc...

Bien entendu avec les explications données une image au hasard s'affichera à chaque visite sur la page et non chaque jour (pour 1 tout les jours il suffit de créer une 2eme table avec un seul enregistrement qui comprend l'ID de l'image et la date d'affichage puis faire une comparaison des date et executer le script ou non)

Si y a des questions posez les.
A+

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.