Page 1 sur 2

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

Posté : 07 janv. 2006, 23:57
par alaingpl
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]

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

Posté : 08 janv. 2006, 00:34
par Cyrano
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.

Posté : 08 janv. 2006, 02:17
par alaingpl
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..

Posté : 08 janv. 2006, 10:06
par Cyrano
Autant pour moi, il en manque un bout:
echo "<img src=\"". $donnees['chemin_image'] ."\">";

Posté : 08 janv. 2006, 11:23
par Invité
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é?

Posté : 08 janv. 2006, 11:25
par Cyrano
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

Posté : 08 janv. 2006, 11:30
par alaingpl
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']

Posté : 08 janv. 2006, 11:58
par Cyrano
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.

Posté : 08 janv. 2006, 12:14
par alaingpl
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 ?

Posté : 08 janv. 2006, 12:32
par Cyrano
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");

Posté : 08 janv. 2006, 16:25
par alaingpl
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

Posté : 08 janv. 2006, 16:29
par Cyrano
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.

Posté : 08 janv. 2006, 16:32
par DarkBlue
Hello ,

Selon ton script :

$donnees['chemin_image']
ne correspond a rien , c est plutot :
$dretour['chemin_image']
que tu devrais ecrire !

Posté : 09 janv. 2006, 00:28
par Invité
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.

Posté : 09 janv. 2006, 07:12
par DarkBlue
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 !