begin process at 2012 02 05 01:34:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > RÉCUPÉRER UN ID AU HASARD D'UNE BASE DE DONNÉE ACCESS

RÉCUPÉRER UN ID AU HASARD D'UNE BASE DE DONNÉE ACCESS


 Information sur la source

Note :
Aucune note
Catégorie :Base de données Niveau :Débutant Date de création :03/01/2004 Date de mise à jour :03/01/2004 23:29:32 Vu :8 340

Auteur : txR_ch

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

tout est dans le titre!

Source

  • // 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
  • %>
// 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+


 Sources de la même categorie

Source avec Zip GESTION_ENSEIGNANTS par Elmarzougui
Source avec Zip ZONE MEMBRE EN ASP "E-MEMBRES1.0" par cmaelc
Source avec Zip Source avec une capture Source .NET (Dotnet) ADMINISTRATION BASE DE DONNÉES ORACLE par chbayah
Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISATION D'UN DATASET par ManuAntibes
Source avec Zip Source .NET (Dotnet) INSERTION / RECUPERATION D'IMAGE STOCKEE DANS UNE DB MS SQL ... par jimmy69

Commentaires et avis

Commentaire de fabrice69 le 06/01/2004 10:09:11 administrateur CS

Très intéressant.

F___

Commentaire de Boreux le 16/12/2005 12:23:57

Sympa ce source, mais si il y a eu beaucoup de suppressions, il risque de boucler de nombreuses fois avant de trouver une image disponible (je sais, je chicane, mais bon).

Perso, j'ai chargé tous les ID existants dans une table mémoire, puis j'aurais généré un numéro aléatoire qui m'aurait "balladé" dans cette table... Au moins, l'image existe à chaque fois ;-)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales