Page 1 sur 2
problem d'affichage d'images
Posté : 28 août 2005, 11:56
par yamissa
Bonjour à tous

.
Je vais essayer de bien expliquer le problem car ce n'est pas du tout facile.
Sur mon site je stocke les informations des images que l'on upload dans une base de donnée ensuite j'affiche toute les image uploadée sur une meme page a partir des informations de la base de donnée en leur attribuant une résolution de 128*128.
Voici le code que je tape:
echo ' <p> <a href='.$donnees['image'].'><img src= '.$donnees['image'].' width="128" height="128" border="none"></a></p>'
Comme vous pouvez le voir dans le code sur chaque image affichée il a un lien vers cette même image en taille réelle mais voila le problem c'est que
je voudrais afficher l'image en taille réelle sur une autre page mais ça ne marche pas car si je fait :
<img scr='.$donnees['image'].'>
ça m'affiche toute les images dont les réfferences sont dans la base de donnée.
Jesper que vous m'avez compris et n'hésitez pas à me poser des questions.
Merci

.
Posté : 28 août 2005, 12:23
par Cyrano
Il manque des bouts de code dans ton système: comment identifie-tu une image d'une autre ? Dans tes enregistrements, tu devrais avoir une clé primaire. C'est cette clé qui doit te servir de repère pour extraire l'image que tu veux afficher en taille normale.
Ceci posé, la page sur laquelle tu affiche toutes les images doit être particulièrement lourde et longue à charger. Le fait de limiter les dimensions ne réduit pas le poids des images. Tu devrais envisager l'éventualité de créer des miniatures pour l'affichage en galerie. Il existe des scripts pour faire ça.
Posté : 28 août 2005, 12:40
par yamissa
escuse moi cyrano mais quesqu'une clef primaire?
ou plutôt comment marche une clef primaire?

Posté : 28 août 2005, 12:47
par Cyrano

Ha.... ok, ho le beau cas!

Bon, blague à part. On appele une clé primaire un champ dans une table identifiant chaque ligne qui y est insérée. La valeur de ce champ ne peut en aucun cas exister en plusieurs exemplaire dans ce champ. En général, on utilise un champ de type INT qu'on met en auto_increment, ce qui veut dire que tu as un champ qui se remplira tout seul à chaque nouvelle insertion de donnée en incrémentant le nombre de 1 à chaque fois. Ce champ te sert de repère. Quand tu feras une mise à jour sur une ligne, tu pourras avoir une clause WHERE pointant précisément sur la bonne ligne en utilisant la clé primaire et la mise à jour ne sera faite QUE sur cette ligne pûisque la valeur de la clé en question ne peut pas exister plus d'une fois dans la table.
Est-ce que tu as dans ta table un champ dont la valeur est unique (sans doublons possibles) ?
Posté : 28 août 2005, 12:55
par yamissa
A oui escuse moi c'est juste que je ne savais pas qu'on appellait ceci une clef primaire j'ai l'habitude d'appeller ça un champ id.
Sinon oui j'ai dans ma table deux champ dont la valeur est unique c'est la date d'upload du fichier et le nom du fichier.
Posté : 28 août 2005, 13:13
par Cyrano
Comment fais-tu tes requêtes dans ce cas ?
Posté : 28 août 2005, 13:16
par yamissa
quelles requêtes?
pour appeller les images?
Posté : 28 août 2005, 13:18
par Cyrano
Les requêtes SQL bien sûr.
Posté : 28 août 2005, 13:30
par yamissa
mysql_connect("*****", "*****", "*****");
mysql_select_db("******");
$reponse = mysql_query("SELECT * FROM organisation ORDER BY date DESC");
while ($donnees = mysql_fetch_array($reponse) )
{
echo ' <p> <a href='.$donnees['image'].'><img src= '.$donnees['image'].' width="128" height="128" border="none"></a></p>'
}
mysql_close();
Voici la requête que je tape pour selectionner les images dans ma base de donnée.
Posté : 28 août 2005, 13:35
par Cyrano
Il y a des erreurs dans la ligne d'affichage. Essaye comme ceci:
<?php
mysql_connect("*****", "*****", "*****");
mysql_select_db("******");
$reponse = mysql_query("SELECT `image` FROM organisation ORDER BY date DESC");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p><a href="<?php echo($donnees['image']); ?>"><img src="<?php echo($donnees['image']); ?>" width="128" height="128" border="none"></a></p>
<?php
}
mysql_close();
?>
Posté : 28 août 2005, 13:52
par yamissa
merci c'est gentil

.
Mais sinon pour mon problem, je ne sais toujours pas comment faire.
Car je voudrais que le lien sur chaques image aille vers une autre page qui contiendra l'image en taille normale.
Posté : 28 août 2005, 14:22
par Cyrano
Mets l'identifiant de la photo en paramètre de l'url et récupères-la dans la page 2 avec $id = $_GET['id'] pour ajouter une clause WHERE dans la requête faite dans la seconde page.
Posté : 28 août 2005, 14:44
par yamissa
Oui mais le problem c'est que je voudrais que ça soit comme ça pour toutes les images qu'on upload dans mon site et je me voit mal faire cette manipulation pour toute les images.
en fait je me disait que je pourait peut être mettre dans la page qui doit contenir l'image en taille réelle une requête vers la base de donnée du type:
<?
mysql_connect("*****", "******", "******");
mysql_select_db("******");
$reponse = mysql_query("SELECT image FROM organisation ORDER BY date DESC");
if ($donnees['image']
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<img src="<? echo ($donnees['image']);?>">
<?
}
mysql_close();
?>
et de limiter l'affichage des images de cette requête à l'image sur laquelle j'ai cliqué mais en taille réelle.
Le problem c'est que je ne sais pas comment faire une telle limitation.
J'ai essayé d'etre le plus clair possible.
Et merci de ton aide cyrano

.
Posté : 28 août 2005, 14:55
par Cyrano
Un minimum de logique dervait pourtant te montrer le chemin.
Dans la page galerie, tu affiches toutes les images. J'ai cru comprendre que ces fausses miniatures sont clicables pour s'ouvrir en taille normale dans une page 2. Pour que les miniatures soient clicable, tu dois donc générer un lien hypertexte autour de chaque balise <img>. Ça donnerait donc quelque chose comme ceci:
<?
mysql_connect("*****", "******", "******");
mysql_select_db("******");
$reponse = mysql_query("SELECT image FROM organisation ORDER BY date DESC");
if ($donnees['image']
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<a href="page2.php?id=<?php echo ($donnees['image']); ?>"><img src="<?php echo ($donnees['image']); ?>"></a>
<?
}
mysql_close();
?>
Comme ça, tu n'as pas à le faire à la mian pour chaque image, c'est automatique.
Dans la page2, tu récupères le nom du fichier:
<?php
$id = $_GET['id'];
?>
<img src="<? echo ($id);?>">
Et tu auras l'identifiant (le nom de l'image) là où on doit le trouver.
Posté : 28 août 2005, 15:16
par yamissa
Je pensse que c'est ça mais il doit y avoir une petite erreur quelque part dans ton code à ca niveau:
<a href="page2.php?id=<?php echo ($donnees['image']); ?>">
si oui tu peux me dire la quelle.
Merci.