Inserer le nom d un fichier (variable) dans un lien

Eléphanteau du PHP | 22 Messages

25 janv. 2008, 17:21

Bonjour tout le monde,

Je cherche à insérer le nom d'un fichier stocké dans ma bd dans un lien permettant de visualiser celui ci.
<?php
echo "toto : $data[toto]<br/>";
?>
le nom de mon fichier apparait bien ensuite j'essaie de faire :

Code : Tout sélectionner

<a href="images/<?php echo "$data[toto]";?>">Cliquez ici</a>
mais mon lien ne fait que pointer vers le dossier images et non sur le fichier.

Je suppose que mon erreur est une fois de plus grosse comme une maison :oops: [/php]

d0m
Mammouth du PHP | 1141 Messages

25 janv. 2008, 17:39

c'est toujours la même erreur :
$data est un tableau. Tu peux donc accéder à ses éléments grace aux index.
Les index sont soit des valeurs numériques, soit des chaines de caractères.

Code : Tout sélectionner

1 est une valeur numérique "1" est une chaine de caractère '1' est une chaine de caractère 'toto' est une chaine de carctère "toto" aussi toto n'est ni une valeur numérique ni une chaine de caractère
$data[toto] n'existe donc pas.

Eléphanteau du PHP | 22 Messages

25 janv. 2008, 17:44

T'inquietes ca va bientôt rentrer :?
<a href="images/<?php echo "$data['toto']";?>">pvliv</a>
Ca ne fonctionne toujours pas

d0m
Mammouth du PHP | 1141 Messages

25 janv. 2008, 17:50

PAs besoin des doubles quotes, $data['toto'] est déjà une chaine.
<a href="images/<?php echo $data['toto'];?>">pvliv</a>
Qu'y a t il d'affiché dans ton source html pour cette balise?

Eléphanteau du PHP | 22 Messages

25 janv. 2008, 18:02

tu veux parler d'une ligne genre :
<img src="images/<?php echo $data['toto'];?>" /> 
parceque je pensais pas en avoir besoin :oops:

Eléphanteau du PHP | 22 Messages

28 janv. 2008, 09:46

Quelqu'un a une idee?
Merci d'avance.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

d0m
Mammouth du PHP | 1141 Messages

28 janv. 2008, 10:58

Si tu veux simplement qu'en cliquant sur ton lien la page s'ouvre en affichant ton image

Code : Tout sélectionner

<A HREF="images/nom.jpg">
suffit.

Tout d'abord tu dois faire la différence entre le HTML et le PHP.
Le HTML est envoié à ton navigateur, qui lit le code et sais comment et quoi afficher.
Le PHP est interpreté par ton serveur qui calcule les variables, et finalement affiche des élements qui vont être introduit dans le code HTML avant d'être envoié au navigateur.

Il y a donc une différence entre le code PHP qui tu écris et le code HTML envoié au navigateur.
Si tu affiches le code source HTML de ta page (par exemple sous IE : affichage >> source), tu vois le code html qui est envoié au navigateur après interpretation du PHP.

Tu verras donc si tes variables ont été calculées correctement.

Par exepmle pour ton code PHP :
<a href="images/<?php echo $data[toto];?>">Cliquez ici</a>
si $data[toto] vaut mon_image.jpg
le code source correspondant sera :

Code : Tout sélectionner

[php]<a href="images/mon_image.jpg">Cliquez ici</a>[/php]
Ton problème est que ton lien pointe sur le dossier seulement. Donc quelque part, ton navigateur ne lit pas

Code : Tout sélectionner

<A HREF="images/nom.jpg">
mais

Code : Tout sélectionner

<A HREF="images/">
Regardes donc le code source HTML pour voir ce qui est est écrit.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 janv. 2008, 11:03

PHP permet de générer du code HTML, qui sera ensuite interprété par le navigateur. Pour créer un lien vers le fichier nom_du_fichier.ext, il te faut écrire la ligne de code html suivante :
<a href="images/nom_du_fichier.ext">pvliv</a>


Pour rendre dynamique le nom du fichier, il suffit de générer à l'aide de php la partie de ce code que tu souhaites rendre dynamique :
<a href="images/<?php echo 'nom_du_fichier.ext';?>">pvliv</a> 
Tu peux alors utiliser une variable contenant le nom du fichier
<?php 
  $data = array();
  $data['toto'] = 'nom_du_fichier.ext';
?>
<a href="images/<?php echo $data['toto'];?>">pvliv</a> 
Si dans le code source généré, ton lien est <a href="images/">, c'est tout simplement que la variable $data['toto'] est vide. Et il est donc normal que celui-ci ouvre le dossier et non un fichier :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 22 Messages

28 janv. 2008, 15:00

Merci beaucoup vais essayer de mettre tout ca en application :)

bon je suis perdu
<?php
mysql_connect("localhost","root",""); 
mysql_select_db("optima"); 
$sql = "SELECT rs, address, zip, city, contact, tel, pvlivraison FROM suivi_livraison WHERE id = $id"; 
$result = mysql_query($sql); 
while ($data = mysql_fetch_array($result)) { 

echo "Raison Sociale : $data[rs]<br/>"; 
echo "Adresse : $data[address]<br/>";
echo "Code Postal : $data[zip]<br/>";
echo "Ville : $data[city]<br/>";
echo "Contact : $data[contact]<br/>";
echo "Telephone : $data[tel]<br/>";
echo " Pv de livraison : $data[pvlivraison]<br/>"; 
} 
?> 
<a href="images/<?php echo $data['pvlivraison'];?>">pvliv</a>
la variable $data[pvlivraison] existe bien vu que l'echo me renvoie la valeur correcte alors pourquoi dans la source mon lien s'arrete à : <a href="images/">pvliv</a>