Image aléatoire

Invité
Invité n'ayant pas de compte PHPfrance

05 sept. 2005, 13:47

Bonjour,

J'ai réussi à affiche un image aléatoire (il prend au hasard une image sur mon serveur). Mais j'aimerai ajouter encore une modification.

L'image s'affiche très bien. J'aimerai qu'en dessous il inscrive le nom du joueur en question et qu'on puisse cliquer sur ce joueur pour accéder à sa fiche.

Merci beaucoup à la ou le personnes qui pourront me venir en aide :wink:

CODE IMAGE ALEATOIRE

Code : Tout sélectionner

<? $rep = "images/joueurs/"; // Répertoire contenant les images $filter[type] = 1; // Format d'image. 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, // 6 = BMP $filter[height] = 150; // Hauteur de l'image en pixels $filter[width] = 120; // Largeur de l'image en pixels $i = 0; // Initialisation du compteur $d = dir("$rep"); // Ouverture du répertoire while($file=$d->read()) { // Empèche de prendre les entrées . et .. du répertoire if ($file != "." && $file != "..") { // Remplissage du tableau des noms de fichier des images $table[$i] = $file; $i++; // Incrémentation du compteur d'images } } $d->close(); // Fermeture du répertoire srand((double)microtime()*1000000); // Définition d'un nombre aléatoire dans la fourchette du nombre d'images $nbr=rand(0,($i-1)); // Définition d'une variable contenant le chemin d'acces relatif à l'image // choisie par le nombre aléatoire dans le tableau $display = $rep.$table[$nbr]; $info = getimagesize($display); $content = "<center><img src=\"$display\" border=\"0\" $info[3]></center>"; ?>
La structure de ma table Joueurs (l'image est dans le champ img)
CREATE TABLE joueurs (
id int(10) NOT NULL auto_increment,
name varchar(255),
name2 varchar(255),
uid int(11),
img varchar(255),
address1 varchar(255),
address2 varchar(255),
address3 varchar(255),
address4 varchar(255),
phone1 varchar(50),
phone2 varchar(50),
email varchar(255),
dob varchar(255),
misc1 varchar(255),
misc2 varchar(255),
misc3 varchar(255),
bio text,
disp int(10),
PRIMARY KEY (id),
KEY id (id)
);

Mammouth du PHP | 19672 Messages

05 sept. 2005, 23:54

Connaissant le nom de ton image, tu peux retrouver toutes les informations dans la base de données sur le joueur avec une requête comportant une clause WHERE img = '". $nom_image ."' où $nom_image est une variable que tu initialises avec l'image récupérée dans ton script précédent.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 sept. 2005, 08:46

J'ai rajouté ce code mais il m'affiche le nom de tous les joueurs de la base
$requete=mysql_query("SELECT name, img FROM joueurs WHERE img = '". nom_image."'");
while ($donnees = mysql_fetch_array ($requete) )
{
    echo $donnees[0];
}


Comment dois-je faire pour qu'il sache que '". nom_image."' est égale à l'image du dessus ?

Mammouth du PHP | 19672 Messages

06 sept. 2005, 08:51

Est-ce que par hasard on peut retrouver plusieurs fois le même nom d'image dans ta table ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 sept. 2005, 11:15

Non, chaque image dans ma base de données est différente. Comment dois-je m'y prendre stp ?

Mammouth du PHP | 19672 Messages

06 sept. 2005, 11:41

Bon, dans la requête que tu montes, tu mets dans la clause de tri "nom_image" et non "$nom_image", peut-être un oubli. Fais afficher la requête et exécute la dans phpMyAdmin pour vérifer ce qui en ressort.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 sept. 2005, 12:49

Oui j'avais bien mis le $ dans mon code. Je ne comprends pas comment il peut trouver la variable '". $nom_image."' vu que je ne lui dit pas à quoi elle correspond.

Désolé, je débute :wink:

Mammouth du PHP | 19672 Messages

06 sept. 2005, 12:50

Il faut donc récupérer cette information de la même manière que tu récupères les informations sur l'image affichée.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 sept. 2005, 13:14

Ben justement, c'est là que je blocke :?

Mammouth du PHP | 19672 Messages

06 sept. 2005, 13:21

Tu vas avoir à priori deux requêtes:
- La première va lister les images disponibles pour ton script de sélection aléatoire : Tu récupères donc un identifiant pour la seconde requête;
- La seconde sert à récupérer les informations complète en te servant comme identifiant dans ta clause where de celui déterminé dà partir du script.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

06 sept. 2005, 15:05

Sinon :
une requête SQL du type :

SELECT * FROM joueurs WHERE img<>'' ORDER BY RAND(NOW()) LIMIT 1

te renvoie toutes les données de la BDD sur un joueur aléatoire qui a une image.
Je trouve ca plus simple...

Invité
Invité n'ayant pas de compte PHPfrance

06 sept. 2005, 20:14

Merci pour vos indications. Toutefois, je n'y arrive pas. Je débute et là je ne vois plus comment faire :?

Mammouth du PHP | 1885 Messages

07 sept. 2005, 01:07

Bonjour,

RAND() n'a besoin d'aucun paramètre.

Code : Tout sélectionner

SELECT * FROM joueurs WHERE img <> '' ORDER BY RAND() LIMIT 1
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Invité
Invité n'ayant pas de compte PHPfrance

07 sept. 2005, 01:52

On y est presque :wink:. Il m'affiche une photo et un nom de joueur. Seul hic, le nom ne correspond pas avec la photo affichée :(

Mon code

Code : Tout sélectionner

<? if ( !defined('BLOCK_FILE') ) { Header("Location: ../index.php"); die(); } global $prefix, $db; $rep = "images/joueurs/"; // Répertoire contenant les images $filter[type] = 1; // Format d'image. 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, // 6 = BMP $filter[height] = 150; // Hauteur de l'image en pixels $filter[width] = 120; // Largeur de l'image en pixels $i = 0; // Initialisation du compteur $d = dir("$rep"); // Ouverture du répertoire while($file=$d->read()) { // Empèche de prendre les entrées . et .. du répertoire if ($file != "." && $file != "..") { // Remplissage du tableau des noms de fichier des images $table[$i] = $file; $i++; // Incrémentation du compteur d'images } } $d->close(); // Fermeture du répertoire srand((double)microtime()*1000000); // Définition d'un nombre aléatoire dans la fourchette du nombre d'images $nbr=rand(0,($i-1)); // Définition d'une variable contenant le chemin d'acces relatif à l'image // choisie par le nombre aléatoire dans le tableau $display = $rep.$table[$nbr]; $info = getimagesize($display); $content = "<center><img src=\"$display\" border=\"0\" $info[3]></center>"; ?> <? $nom_image=nuke_league_players_img; $requete=mysql_query("SELECT name, img FROM joueurs WHERE img <> '' ORDER BY RAND() LIMIT 1"); while ($donnees = mysql_fetch_array ($requete) ) { echo $donnees[0]; } ?>

Invité
Invité n'ayant pas de compte PHPfrance

07 sept. 2005, 01:54

Désolé, le code du haut est faux. Comment faire pour que le nom et l'image correspondent ?

Le bon :

Code : Tout sélectionner

<? if ( !defined('BLOCK_FILE') ) { Header("Location: ../index.php"); die(); } global $prefix, $db; $rep = "images/joueurs/"; // Répertoire contenant les images $filter[type] = 1; // Format d'image. 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, // 6 = BMP $filter[height] = 150; // Hauteur de l'image en pixels $filter[width] = 120; // Largeur de l'image en pixels $i = 0; // Initialisation du compteur $d = dir("$rep"); // Ouverture du répertoire while($file=$d->read()) { // Empèche de prendre les entrées . et .. du répertoire if ($file != "." && $file != "..") { // Remplissage du tableau des noms de fichier des images $table[$i] = $file; $i++; // Incrémentation du compteur d'images } } $d->close(); // Fermeture du répertoire srand((double)microtime()*1000000); // Définition d'un nombre aléatoire dans la fourchette du nombre d'images $nbr=rand(0,($i-1)); // Définition d'une variable contenant le chemin d'acces relatif à l'image // choisie par le nombre aléatoire dans le tableau $display = $rep.$table[$nbr]; $info = getimagesize($display); $content = "<center><img src=\"$display\" border=\"0\" $info[3]></center>"; ?> <? $requete=mysql_query("SELECT name, img FROM joueurs WHERE img <> '' ORDER BY RAND() LIMIT 1"); while ($donnees = mysql_fetch_array ($requete) ) { echo $donnees[0]; } ?>