Affichage d'une image à partir d'une url MySQL
Hors ligneMyphp_51 Le 01/04/2008 à 06:29 Profil de Myphp_51 Configuration de Myphp_51

Bonjour,

J'aimerai avoir un exemple d'un code PHP complet qui pourra me permettre d'afficher une images à partir d'une url indiqué dans une base de donnée MySQL.

Merci
--
Merci
Hors ligneAnthony Le 01/04/2008 à 10:17 Profil de Anthony Configuration de Anthony

Fou du volant
Salut

Je te laisse regarder d'abord ceci, car pour moi donner un code complet ne sert à rien : Récupérer des données en PHP / MySQL

Ensuite voici la requête que je choisirais (il faut auparavant faire ceci) :


<?php
//$_GET['id'] sera appelé en fait quand on ira voir par exemple page.php?id=1 et cette "page.php" servira à afficher les images

if(isset($_GET['id']) AND ctype_digit($_GET['id']))
{
     //ici la connexion à la base telle qu'elle a été vue dans le lien que je t'ai montré
     $requete = mysql_query('SELECT url FROM table WHERE id_image='.$_GET['id']) OR die('erreur');
     mysql_close();

     if(mysql_num_rows($requete) === 0)
     {
          exit;
     }

     $r = mysql_fetch_object($requete);

     echo '<img src="',$r->url,'" alt="" />';
}
?>


Pour le ctype_digit() il s'agit de vérifier que l'on entre bien un nombre entier. Le champ ID est un champ en autoincrement, le champ url un champ VARCHAR de 255 caractères (en général ça suffit). Pour voir pourquoi j'ai mis un ctype_digit(), je t'invite à aller voir ce lien : Sécuriser son site PHP.

Voilà N'hésites pas en cas de problème ;)
--

Hors ligneMyphp_51 Le 01/04/2008 à 18:16 Profil de Myphp_51 Configuration de Myphp_51

Merci Anthony,

Je vais essayer de suivre vos instructions pas à pas.
--
Merci
Hors ligneAnthony Le 01/04/2008 à 20:57 Profil de Anthony Configuration de Anthony

Fou du volant
De rien :)

Si ton problème est résolu, tu pourras cliquer sur "réponse acceptée" stp ? merci
--

Hors ligneMyphp_51 Le 02/04/2008 à 00:07 Profil de Myphp_51 Configuration de Myphp_51

Pour le champ ID, je n'ai pas besoin, parce que je l'utilise pas dans dans ma table, et pour expliquer bien :

  1. J'ai une table nommé projet
  2. dans projet il y a un seul champ nommé etat
  3. et dans etat il y a une adresse url inséré à l'aide d'un formulaire de boutons radio, ex : images/image.gif



Alors dans ma page nommé resultat.php je dois voir l'image image.gif affiché.

J'ai lu ce que vous m'avez proposé par votre lien, c'est bien pour moi car j'ai appris plusieurs choses sur le php et MySQL, et j'ai essayé de suivre les étapes mais là j'ai échoué car plusieurs erreurs s'affichent sur la page.

Je crois que votre aide me guidera vers la solution car avant tous je suis encore un débutant sur le php.

Merci

--
Merci
Hors ligneAnthony Le 02/04/2008 à 00:58 Profil de Anthony Configuration de Anthony

Fou du volant
Il faudrait que tu nous donnes ton code pour qu'on puisse t'aider ;)
--

Hors ligneMyphp_51 Le 02/04/2008 à 01:22 Profil de Myphp_51 Configuration de Myphp_51

Voilà, je viens de résoudre le problème voici le code :






<?php  
     mysql_connect
('localhost''root''') OR die('Erreur de connexion à la base');  
     mysql_select_db
('database') OR die('Erreur de sélection de la base');  

     $requete 
mysql_query('SELECT champ FROM table') OR die('Erreur de la requête MySQL');  

     mysql_close
();  



     
while($resultat mysql_fetch_assoc($requete)) 
     {  
          echo 
'<img src="'.$resultat['champ'].'" alt="" />';  
     
}  
?>


Franchement grand merci Anthony pour votre lien qui m'a été d'une grande utilité pour résoudre l'affaire.

Mais, il y a encore un petit truc, ce que j'ai ajouté un champ nommé id et je souhaite afficher l'image correspondant à son id, pas de cette façon : page.php?id=6 mais plutôt un peu comme ça :


     
while($resultat = mysql_fetch_assoc($requete)) 
{  
echo '<img src="'.$resultat['champ'].'?id=6'.'" alt="" />';  
}  


J'ai essayé mais ça pas marché, parce que je vais insérer manuellement ce code dans plusieurs colonnes HTML  ex :


<table>
       <tr>
              <td><?php echo '<img src="'.$resultat['champ'].'?id=1'.'" alt="" />'?></td>
              <td><?php echo '<img src="'.$resultat['champ'].'?id=2'.'" alt="" />'?></td>
              <td><?php echo '<img src="'.$resultat['champ'].'?id=7'.'" alt="" />'?></td>
       </tr>
       <tr>
              <td><?php echo '<img src="'.$resultat['champ'].'?id=8'.'" alt="" />'?></td>
              <td><?php echo '<img src="'.$resultat['champ'].'?id=2'.'" alt="" />'?></td>
              <td><?php echo '<img src="'.$resultat['champ'].'?id=3'.'" alt="" />'?></td>
       </tr>
</table>



Il manque un petit code que je le sais pas, car de cette façon, j'aurai la possibilité d'afficher plusieurs images d'après leurs numéro id.

Merci
--
Merci
Hors ligneAnthony Le 02/04/2008 à 09:43 Profil de Anthony Configuration de Anthony

Fou du volant
Dans ce cas là il faut que ta requête MySQL soit adaptée en conséquence :

SELECT champ FROM table WHERE id=X ou si tu veux récupérer plusieurs id comme ceci :

SELECT champ FROM table WHERE id IN(X, Y, Z)

n'oublie pas de placer un index sur ton champ ID. Pour des explications sur les index et à quoi ça sert, voici un lien : Optimiser MySQL

Donc une fois que tu as fait l'une des deux requêtes, si c'est la première tu peux oublier le while vu qu'il n'y aura qu'une ligne de retournée, sinon tu gardes ton while.

Ensuite normalement les url des images ayant un id différent sont différentes non ? donc pour moi ça ne doit pas vraiment changer, sauf si la page qui affiche l'image est dynamique, dans ce cas là tu fais ça :

echo '<img src="'.$resultat['champ'].'?id='.$resultat['id'].'" alt="" />';
--

Hors ligneMyphp_51 Le 04/04/2008 à 02:56 Profil de Myphp_51 Configuration de Myphp_51

ça pas marché ,


<?php  



require('connection.php');




if(isset(
$_GET['id']) AND ctype_digit($_GET['id']))



     $requete mysql_query('SELECT champ FROM table WHERE id IN(X, Y, Z)') OR die('Erreur de la requête MySQL');  

     mysql_close
();  

     
if(mysql_num_rows($requete) === 0)
     {
          exit;
     }


     $r mysql_fetch_object($requete);

     
     echo 
'<img src="'.$resultat['champ'].'?id=1" alt="" />';
     echo '<img src="'.$resultat['champ'].'?id=2" alt="" />';
     echo '<img src="'.$resultat['champ'].'?id=14" alt="" />';
       
?>


dans la même page, je veux afficher plusieurs images à l'aide d'id

Merci
--
Merci
Hors ligneAnthony Le 04/04/2008 à 12:40 Profil de Anthony Configuration de Anthony

Fou du volant
$requete = mysql_query('SELECT champ FROM table WHERE id IN(X, Y, Z)') OR die('Erreur de la requête MySQL');

===> X, Y, Z ce sont des id que tu souhaites ... faut pas recopier ça dans la requête ... ralala le copier-coller ... tu veux plusieurs id donc faut les sélectionner parmi une liste. Ta requête au final ça peut être $requete = mysql_query('SELECT champ FROM table WHERE id IN(1, 2, 3)') OR die('Erreur de la requête MySQL');
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels