demande aide affiche image

Eléphant du PHP | 70 Messages

29 mai 2007, 20:36

bonjour
je ne comprend pas pourquoi au lieu d'afficher une image se ne sont que des code

de plus on m'envoie ce mesage

ou est l'erreur
merci
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\apercu.php:3) in c:\program files\easyphp1-8\www\apercu.php on line 23

ma base de donne test

Code : Tout sélectionner

img_id img_nom img_taille img_type img_desc img_blob 3 test logo.JPG 1066 image/jpeg [BLOB - 1,0 Ko] 4 test logo.JPG 1066 image/jpeg [BLOB - 1,0 Ko] 5 tset gif logo.GIF 1101 image/gif [BLOB - 1,1 Ko] 6 02-28-07_1156.jpg 26062 image/jpeg [BLOB - 25,5 Ko]
<html>
<head>
<title>Stock d'images</title>
</head>
<body>
<?
function transfert ()
{
$ret = false;
$img_blob = '';
$img_taille = 0;
$img_type = '';
$img_nom = '';
$taille_max = 250000;
$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
if ( !$ret )
{
echo "Problème de transfert";
return false;
}
else
{
// Le fichier a bien été reçu
$img_taille = $_FILES['fic']['size'];
if ( $img_taille > $taille_max )
{
echo "Trop gros !";
return false;
}
$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];
$hote = 'localhost';
$base = 'test';
$user = 'pol';
$pass = 'polo';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
$img_blob = file_get_contents ($_FILES['fic']['tmp_name']);

$req = "INSERT INTO images (".
"img_nom, img_taille, img_type, img_blob ".
") VALUES (".
"'".$img_nom."', ".
"'".$img_taille."', ".
"'".$img_type."', ".
// N'oublions pas d'échapper le contenu binaire
"'".addslashes ($img_blob)."') ";
$ret = mysql_query ($req) or die (mysql_error ());
return true;
}
}

if ( isset($_FILES['fic']) )
{
transfert();
}
?>
<h3>Envoi d'une image</h3>
<form enctype="multipart/form-data" action="#" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="250000" />
<input type="file" name="fic" size=50 />
<input type="submit" value="Envoyer" />
</form>
<p><a href="liste.php">Liste</a></p>
</body>
</html>
Ensuite la page liste :
<html>
<head><title>Liste d'images</title></head>
<body>
<?
$hote = 'localhost';
$base = 'test';
$user = 'pol';
$pass = 'polo';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
$req = "SELECT img_nom, img_id ".
"FROM images ORDER BY img_nom";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
{
echo "<a href=\"apercu.php?id=".$col[1].
"\">".$col[0]."</a><br />";
}
?>
</body>
</html>
Et maintenant la page apercu.php
<?
if ( isset($_GET['id']) )
{
$id = intval ($_GET['id']);
$hote = 'localhost';
$base = 'test';
$user = 'pol';
$pass = 'polo';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
$req = "SELECT img_id, img_type, img_blob ".
"FROM images WHERE img_id = ".$id;
$ret = mysql_query ($req) or die (mysql_error ());
$col = mysql_fetch_row ($ret);
if ( !$col[0] )
{
echo "Id d'image inconnu";
}
else
{
header ("Content-type: ".$col[1]);
echo $col[2];
}
}
else
{
echo "Mauvais id d'image";
}
?>

Eléphant du PHP | 199 Messages

29 mai 2007, 20:57

else
{
header ("Content-type: ".$col[1]);
echo $col[2];
}
Tu ne peux pas utiliser la fonction header() après avoir déjà inséré du code HTML dans ta page, d'où l'erreur car tu ouvres tes balises HTML au début de ton document.
Klomac - Blog Lambda

Eléphant du PHP | 451 Messages

29 mai 2007, 21:00

Cela aussi est faux
if ( !$col[0] )
{
echo "Id d'image inconnu";
}
else
{
header ("Content-type: ".$col[1]);
echo $col[2];
}
}
else
{
echo "Mauvais id d'image";
} 

Il y a un } en trop après echo $col[2];

Eléphant du PHP | 70 Messages

29 mai 2007, 22:57

j'ai aissaye de retire } mais sa me creer une erreur

et svp quelle balise html qui faut retire

Eléphant du PHP | 451 Messages

30 mai 2007, 18:30

Oui dsl j'avais pas vu le if tout en haut de ta page


Ben le plus simple c'est que tu retire carement
header ("Content-type: ".$col[1]);

Eléphant du PHP | 70 Messages

30 mai 2007, 20:46

salut a toi

aurai tu l'amabilite de m'envoie un script qui pourrai me sortir de la car c'est devenue un
vrai case tete

merci d'avance je suis dans le broulliard

Eléphant du PHP | 451 Messages

31 mai 2007, 18:16

Bonjour,

As-tu essayé de retirer ceci de ta page
header ("Content-type: ".$col[1]);

Si oui que cela donne t-il?

Eléphant du PHP | 70 Messages

31 mai 2007, 20:01

salut djtec

oui j'ai aissaye quand je clic sur une photo dans apercu j'obtien toujour des codes et des code

rien a faire

Eléphant du PHP | 451 Messages

31 mai 2007, 20:52

Pour voir l'aperçu de l'image il faudrait que quand tu l'enregistre dans la base tu la up dans un dossier sinon comment veux-tu voir l'image

pour djtec
Invité n'ayant pas de compte PHPfrance

31 mai 2007, 21:36

mais si tu regarde mon script je l'engistre dans la base
par contre peut tu me rajouter le script qui manque pour voir mon image
merci d'avance

ViPHP
ViPHP | 5924 Messages

01 juin 2007, 03:05

Ca tourne en rond.
Remets le header, il est indispensable. As-tu un espace, un saut de ligne, ou tout autre caractère invisible avant le <? du début ?

Eléphant du PHP | 70 Messages

01 juin 2007, 08:10

c'est clair de dire metre le header et ensuite de retire je tournai en rond mais aucune solution je suis revenue au point depart

ViPHP
ViPHP | 5924 Messages

01 juin 2007, 10:45

Sans header, dans tous les cas, tu n'auras que des caractères incompréhensible, car le navigateur ne peut correctement interpréter le fichier si tu n'indiques pas de quel type il est.
Mais si tu veux vraiment régler ton problème, répond à ma question, as tu un caractère invisible avant ton <? de début de script ?

Eléphant du PHP | 70 Messages

01 juin 2007, 20:42

voici mes scripts avant il ni a pas de avant ?> merci de ton aide


formulaire_________________________________________
1 script
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>formulaire html envoie image projet test</title>
</head>

<body>

<h3>Envoi d'une image</h3>
<form enctype="multipart/form-data" action="#" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="250000" />
<input type="file" name="fic" size=50 />
<input type="submit" value="Envoyer" />
</form>
<p><a href="liste.php">Liste</a></p>
</body>
</html>

2 script transfert
<?
function transfert ()
{
$ret = false;
$img_blob = '';
$img_taille = 0;
$img_type = '';
$img_nom = '';
$taille_max = 250000;
$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
if ( !$ret )
{
echo "Problème de transfert";
return false;
}
else
{
// Le fichier a bien été reçu
$img_taille = $_FILES['fic']['size'];
if ( $img_taille > $taille_max )
{
echo "Trop gros !";
return false;
}
$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];
$hote = 'localhost';
$base = 'test';
$user = 'pol';
$pass = 'polo';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
$img_blob = file_get_contents ($_FILES['fic']['tmp_name']);
$req = "INSERT INTO images (".
"img_nom, img_taille, img_type, img_blob ".
") VALUES (".
"'".$img_nom."', ".
"'".$img_taille."', ".
"'".$img_type."', ".
// N'oublions pas d'échapper le contenu binaire
"'".addslashes ($img_blob)."') ";
$ret = mysql_query ($req) or die (mysql_error ());
return true;
}
}
if ( isset($_FILES['fic']) )
{
transfert();
}
?>
3 script liste
<?
$hote = 'localhost';
$base = 'test';
$user = 'pol';
$pass = 'polo';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
$req = "SELECT img_nom, img_id ".
"FROM images ORDER BY img_nom";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
{
echo "<a href=\"apercu.php?id=".$col[1].
"\">".$col[0]."</a><br />";
}
?>
3liste apercu_________________________________________________
<?
if ( isset($_GET['id']) )
{
$id = intval ($_GET['id']);
$hote = 'localhost';
$base = 'test';
$user = 'pol';
$pass = 'polo';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
$req = "SELECT img_id, img_type, img_blob ".
"FROM images WHERE img_id = ".$id;
$ret = mysql_query ($req) or die (mysql_error ());
$col = mysql_fetch_row ($ret);
if ( !$col[0] )
{
echo "Id d'image inconnu";
}
else
{
header ("Content-type: ".$col[1]);
echo $col[2];
}
}
else
{
echo "Mauvais id d'image";
}
?>

ViPHP
ViPHP | 5924 Messages

02 juin 2007, 01:06

:-/
Tu peux faire une archive des fichiers et la mettre sur un ftp, que l'on puisse les télécharger.
Ca me parait super bizarre comme erreur...