pbl pour afficher une image à partir de l'url de la bd

Eléphant du PHP | 271 Messages

07 janv. 2006, 23:57

Bonsoir à tous,

Mon problème est surement très simple mais pour moi c'est une montagne.

Mon fichier est bien uploadé et l'url s'inscrit correctement dans la table de la BD. Bien sûr je souhaite que l'image s'affiche correctement.
Actuellement elle affiche un petit carré avec une croix rouge au milieu.

Voici le script avec lequel je souhaite afficher mon image
<? 
 require("config.php");
	$mysql_link =  MYSQL_CONNECT("$localhost","$login","$mot") OR DIE("Unable to connect to database !!");
	@mysql_select_db($dbName ,$mysql_link ) or die( "Unable to select database ??");


$retour = mysql_query("SELECT * FROM imag"); 
while ($dretour = mysql_fetch_array($retour)) 
{ 
echo '<img src="'$donnees['chemin_image'];'" 
}

mysql_close(); 
?> 
Que dois je changer ou ajouter dans cette ligne ?
echo '<img src="'$donnees['chemin_image'];'"
pour infos le formulaire
<form method="POST" action="adminph.php" enctype="multipart/form-data">
	  <!-- Limiter la taille des fichiers à 500Ko -->
	  <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> 
	  <fieldset><legend>Envoi de fichiers</legend><!-- champs d'envoi de fichier, de type file -->
	  <input type="file" name="photo" /></p>
	   <p><input type="submit" name="envoi" value="Envoyer" />
et le fichier adminph.php qui gère le transit de l'image
<?php 
// je réceptionne le formulaire et indique le répertoire de destination//
if(isset($_FILES['photo'])){  $dest_dossier = 'images/';  
// il est copié du temporaire vers mon répertoire//
 $dest_fichier = basename($_FILES['photo']['name']); 
  move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
  }
 ?>
 <?php
 require("config.php");
	$mysql_link =  MYSQL_CONNECT("$localhost","$login","$mot") OR DIE("Unable to connect to database !!");
	@mysql_select_db($dbName ,$mysql_link ) or die( "Unable to select database ??");
//je réceptionne le nom du fichier et son chemin//
if(isset($_FILES['photo']['name']))      $FILES=$_POST['url'];

else      $_FILES="";


// je l'écris dans le champ url//
	
	$sql = "INSERT INTO imag(url,chemin_fichier) VALUES('". $imag ."', '". $dest_dossier . $dest_fichier ."')";
	
	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

	mysql_query("SELECT * FROM $url");
  
echo'<br><br><center><a href="fichierphoto.php">Revenir au site pour vérifier les modifications</a></center>';
 
?> 
Merci de m'aider[/php]
Patience et obstination sont des qualités !

Mammouth du PHP | 19672 Messages

08 janv. 2006, 00:34

Que dois je changer ou ajouter dans cette ligne ?
echo '<img src="'$donnees['chemin_image'];'"
Ceci:
echo "<img src="". $donnees['chemin_image'] ."";
L'opérateur de concaténation (ici le point) était tout simplement absent et le ";" était de trop ou pas à sa place si la ligne était complète. Il reste que la balise image n'est pas fermée.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 271 Messages

08 janv. 2006, 02:17

Rebonsoir,
Vous avez écrit :
<?php echo "<img src=\"". $donnees['chemin_image'] ."\"; ?>
Il me retourne comme message d'erreur
Parse error: parse error, unexpected $ in /home4/s/sitweb/www/monfichier.php on line 25
La ligne 25 ne correspond à rien. Elle est située après la balise </html>
?> est de couleur rouge grenat au lieu du rouge vermillon classique de fin de script

J'ai essayé quelques modifications qui n'ont rien donné.

Là à nouveau je bloque (qui a dit que php était simple....)
<? 
 require("config.php");
	$mysql_link =  MYSQL_CONNECT("$localhost","$login","$mot") OR DIE("Unable to connect to database !!");
	@mysql_select_db($dbName ,$mysql_link ) or die( "Unable to select database ??");


$retour = mysql_query("SELECT * FROM imag"); 
while ($dretour = mysql_fetch_array($retour)) 
{ 
echo "<img src=\"". $donnees['chemin_image'] . "\"; 
}

mysql_close(); 
?> 
Où dois - je mettre le ">"pour fermer la balise <img src

Grand merci d'avance..
Patience et obstination sont des qualités !

Mammouth du PHP | 19672 Messages

08 janv. 2006, 10:06

Autant pour moi, il en manque un bout:
echo "<img src=\"". $donnees['chemin_image'] ."\">";
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

08 janv. 2006, 11:23

merci beaucoup,

mais les photos ne s'affiche toujours pas, j'ai un petit carré avec une croix rouge.

Qu'est - ce que j'ai oublié?

Mammouth du PHP | 19672 Messages

08 janv. 2006, 11:25

As-tu vérifié la source HTML générée pour vérifier l'adresse incrite ? Il y a peut-être une erreur de chemin relatif à ce niveau-là :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 271 Messages

08 janv. 2006, 11:30

qu'entends - tu par source html ?

Mon répertoire dans lequel les images sont uploadées s'appelle " imag". Il se situe à la racine de www.

Comment dois -je l'écrire dans ['chemin-dossier']
Patience et obstination sont des qualités !

Mammouth du PHP | 19672 Messages

08 janv. 2006, 11:58

Quand je parle de source, je parle de ce qui arrive au navigateur : quand tu affiches ta page, fais ensuite afficher la source (Affichage>Source de la page) et vérifie dans les balises <img /> la valeur de l'attribut "src" qui a été envoyé pour voir s'il concorde avec le chemin vers les images, ce qui à priori n'est pas le cas. Mais ça te donnera un point de départ pour la correction dans le code PHP.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 271 Messages

08 janv. 2006, 12:14

Pour le code source, il m'a fallut un petit temps de reflexion. merci quand même.

Voici la source html :

Code : Tout sélectionner

<body> <img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""><img src=""> </body> </html>

donc aucune valeur dans l'attribut src
Je ne suis pas assez "calé" en php pour comprendre
 
<? echo "<img src=\"". $donnees['imag\'] ."\">"; ?>
C'est cette ligne qui m'embête. Pour moi avec ['imag\'] j'indique le chemin du dossier. Faut -il ajouter autre chose ?
Patience et obstination sont des qualités !

Mammouth du PHP | 19672 Messages

08 janv. 2006, 12:32

Selon ton code, $donnees est un tableau associatif: les index sont les noms des champs de ta table imag : je doute fort que tu aies un champ nommé "img/"

Vérifie donc dans phpMyAdmin ce que te retourne ta requête indiquée ici:
$retour = mysql_query("SELECT * FROM imag");
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 271 Messages

08 janv. 2006, 16:25

Je préfère repartir à zéro.

Ma table "imag" comporte 2 champs l'un : "url", "chemin-fichier "

lors de l'upload, dans le champ "url" rien ne s'inscrit, dans le champ "chemin_fichier" s'inscrit : imag/nom du fichier uploadé (ex : imag/cafe.jpg)
imag: est mon répertoire dans lequel sont stockées les images .

Dans mon script retour pour fermer la boucle et afficher l'image que faut il écrire:
<? echo <img src=........?>
merci d'avance
Patience et obstination sont des qualités !

Mammouth du PHP | 19672 Messages

08 janv. 2006, 16:29

En général, on inscrit pas le chemin directement dans la base pour une raison fort simple: selon l'arborescence des pages de ton sites, le chemin sera bon pour certaines pages, mais pas pour d'autres situées dans d'autres répertoires. Pour chaque niveau de page, tu devras donc adapter le chemin. Solution envisageable quoique moins élégante: enregistrer un chemin absolu du type http://ton_site.com/imag/fichier.jpg et dans ce cas, ce sera bon pour n'importe quelle page.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 440 Messages

08 janv. 2006, 16:32

Hello ,

Selon ton script :

$donnees['chemin_image']
ne correspond a rien , c est plutot :
$dretour['chemin_image']
que tu devrais ecrire !
C'est en faisant des erreurs et en osant demander de l'aide qu'on apprend ! Il n'est pas ridicule de ne pas savoir !

Invité
Invité n'ayant pas de compte PHPfrance

09 janv. 2006, 00:28

bonsoir,

J'ai essayé
<? echo "<img src=\"".$dretour['imag/']  ."\">"; ?>
imag/ est le répertoire dans lequel je stocke les images

j'ai toujours mes petits carrés avec une croix rouge.....

sic et re - sic.

Eléphant du PHP | 440 Messages

09 janv. 2006, 07:12

Non c'est pas bon !

SI dans ta BDD tu stocke le nom de ton fichier tu devrais alors ecrire :
<? echo "<img src=\"imag/".$dretour['nom_image']  ."\">"; ?>
A savoir que $dretour['nom_image'] est la valeur de la colonne 'nom du fichier' dans ta BDD !
C'est en faisant des erreurs et en osant demander de l'aide qu'on apprend ! Il n'est pas ridicule de ne pas savoir !