Voici une solution possible
tout d'abord pour te répondre petit pouce un code pour sauver une image sur une base de donnée
puis afficher au hasard les images contenues dessus
J'ai mis sur le meme code :
1) la possibilité de sauver une image
2) la possibilité d'afficher une image particulière
3) la possibilité d'afficher une image au hasard
-----------------------------------------------------
En preparation préliminaire:
1) remplacer sur ce code tout les identifiants de connexions
2) remplacer tous les chemins d'accès
3) le sauver sous forme php par exemple "charger_image.php"
4) avoir créé une page nommée avatar.php (voir le code) sauvée dans le même repertoire que cette page, c'est ce fichier qui est votre image.
5) avoir créé une base de donnée nommée 'test' qui devra contenir 2 champs
1er champ nommé 'numero' de type 'int' avec un 'auto_increment' coché
2em champ nommé 'avatar' de type 'mediumblob' ou 'blob'
--------------------------------------------------
Voici le code de la page principale
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type" />
<title>Envoyer une image sur une bdd</title>
</head>
<?php
//Connexion (remplacer les parametres de connexion)
mysql_connect("mon_site.free.fr", "login", "mot_de_passe")or die(mysql_error());
mysql_select_db("test")or die(mysql_error());
//----------------------------------
//enregistrer une image sur la BDD
//----------------------------------
// Pour vos essais créez une base de donnée nommée 'test' qui devra contenir 2 champs
// 1er champ nommé 'numero' de type 'int' avec un 'auto_increment' coché
// 2em champ nommé 'avatar' de type 'mediumblob' ou 'blob'
if(!empty($_FILES['image']['size'])) //si on a posté un fichier
{
//récupère taille, nom , fichier temporaire
$f1_size = $_FILES['image']['size'];
$f1_name = $_FILES['image']['name'];
$f1_tmpname =$_FILES['image']['tmp_name'];
//Récupération extension fichier texte qui suit le dernier point converti minuscule
$ext = strtolower(substr($f1_name,strrpos($f1_name, ".")+1));
//tableau des extensions acceptées, des images
$valides = array("jpg","jpeg","png","gif");
//vérifie la taille et le type de fichier
$taille_max = 25000; // par exemple 25ko
if ($f1_size > $taille_max)
{
$infos = "fichier trop gros, maximum : " . ($taille_max/1000) ." ko
";
}
if (!in_array($ext,$valides))
{
$infos .= "le fichier doit etre une image jpg, png, jpeg, gif
";
}
if($infos == '') // pas d'erreur enregistrée
{
//Lecture du fichier. utilise mysql_escape_string car donnees binaires contiennent des caracteres speciaux.
$image = mysql_escape_string(file_get_contents($_FILES['image']['tmp_name']));
//inserer dans la bdd
mysql_query("INSERT INTO test VALUES('','$image','')") or exit (mysql_error());
$infos .= 'Image sauvée dans la base de données
';
}
echo($infos);
}
//----------------------------------
// afficher une image particulière
//----------------------------------
// vous devrez avoir créé une page nommée avatar.php (voir le code) sauvée dans le même repertoire que cette page, c'est ce fichier qui est votre image.
$numero_image = $_POST['numero_image']; //numero de l'image particulière demandée
if ($numero_image <> "") //si on a demandé une image particulière
{
// affiche juste le n° de l'image
echo('image numero : ' . $numero_image . ' ');
//affiche l'image via un lien de type
echo('
');
}
//----------------------------------
// afficher une image au hasard
//----------------------------------
$hasard = $_POST['hasard'];
if ($hasard <> "") //on a demandé une image au hasard
{
$retour = mysql_query('select count(*) from test')or die(mysql_error());
$donnees = mysql_fetch_row($retour);
$nbr_entrees = $donnees[0];
$aleatoire = rand(0,$nbr_entrees-1); // nbr aleatoire compris entre 0 et $nbr_entrees-1
echo("position dans la table : " .$aleatoire . "---");
$retour = mysql_query("select * from test LIMIT " . $aleatoire . " , 1")or die(mysql_error()); //prend la ligne correspondante au n° aléatoire
$donnees = mysql_fetch_array($retour);
$numero_image = $donnees['numero'];
// affiche juste le n° de l'image
echo('image aléatoire numero : ' . $numero_image . ' ');
//affiche l'image via un lien de type
echo('
');
}
mysql_close(); //fermeture bdd
?>
<form enctype="multipart/form-data" action="http://mon_site.free.fr/dossier_divers/charger_image.php" method="post">
Sauver une image sur la base de donnee
Voir une image particulière indiquez son numero
Afficher une image au hasard
oui
</form>
</html>
----------------------------------------------
et voici le code pour l'image
enregistrez le tel quel sous forme "avatar.php"
<?php
$numero_image = $_GET["numero_image"]; //recupere le numero de l'image donnée dans le lien
$connexion = mysql_connect("mon_site.free.fr", "login", "mot_de_passe") or exit (mysql_error());
$database = mysql_select_db("test") or exit (mysql_error());
$retour = mysql_query("SELECT * FROM test WHERE numero='$numero_image'") or die(mysql_error());
$donnee = mysql_fetch_array($retour);
$image = $donnee['avatar'];
mysql_close();
print $image;
?>