Page 1 sur 2

demande aide affiche image

Posté : 29 mai 2007, 20:36
par adel
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";
}
?>

Posté : 29 mai 2007, 20:57
par Klomac
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.

Posté : 29 mai 2007, 21:00
par djtec
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];

rep

Posté : 29 mai 2007, 22:57
par adel
j'ai aissaye de retire } mais sa me creer une erreur

et svp quelle balise html qui faut retire

Posté : 30 mai 2007, 18:30
par djtec
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]);

pour djtec

Posté : 30 mai 2007, 20:46
par adel
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

Posté : 31 mai 2007, 18:16
par djtec
Bonjour,

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

Si oui que cela donne t-il?

pour djtec

Posté : 31 mai 2007, 20:01
par adel
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

Posté : 31 mai 2007, 20:52
par djtec
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

Posté : 31 mai 2007, 21:36
par pour djtec
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

Posté : 01 juin 2007, 03:05
par Sékiltoyai
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 ?

pour sekiltoyai

Posté : 01 juin 2007, 08:10
par adel
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

Posté : 01 juin 2007, 10:45
par Sékiltoyai
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 ?

pour sekiltoyai

Posté : 01 juin 2007, 20:42
par adel
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";
}
?>

Posté : 02 juin 2007, 01:06
par Sékiltoyai
:-/
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...