PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-08-2009 20:26:20

cire390
Membre
Inscription : 17-08-2009
Messages : 14

[Résolu] Afficher champ blob de la DB

Bonjour,
Monpost est marqué résolu donc j'ouvre une nouvelle discussion. J'ai trouve la solution à mon précedent pb et j'ai mis le code qui marche, si ce peut aider certains.

Quelqu'un saurait-il comment récupérer et afficher une image qui est déja stockée dans la DB. (je reprend un développement existant ou la personnes a stocké les images dans la DB, je peux malheuresement pas faire autrement).

<?php
$id = $_GET['id_page'];
echo $id;

$machine="localhost";
$utilisateur="root";
$mot_passe="root";
$nom_base="demo";
$con=mysql_connect($machine,$utilisateur,$mot_passe) or die ('Erreur : '.mysql_error() );

mysql_select_db($nom_base);
$query="SELECT form_date, id_page, doc_image FROM pages WHERE id_page='$id'";
$resultat=mysql_query($query,$con) or die (mysql_error());;
$total=mysql_num_rows($resultat);
if($total) {
echo'<table bgcolor="#FFFFFF">'."\n";  
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
echo '</tr>'."\n";
while($row=mysql_fetch_array($resultat))
{
echo '<tr>';
echo '<td bgcolor="#CCCCCC"><a href=detail.php?id_page='.$row["id_page"].' target=\"_blank\">'.$row["id_page"].'</a></td>';
echo '<td bgcolor="#CCCCCC">'.$row["form_date"].'</a></td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($resultat);
?>

En rajoutant ceci au milieu,  j'arrive à afficher l'image mais elle est en binaire (serie de chiffres et lettre incompréhensible), comment je peux la "traduire"?

echo '<td bgcolor="#CCCCCC">'.$row["form_date"].'</a></td>';
header('Content-type: image/png');
echo '<td bgcolor="#CCCCCC">'.$row["doc_image"].'</a></td>';
echo '</tr>'."\n";

Ou si une ame charitable a un code pour afficher une image je suis preneur.
Merci encore

Hors ligne

#2 21-08-2009 08:40:30

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Afficher champ blob de la DB

Salut,

Tu dois faire un petit script a part qui récupère et affiche l'image (que l'image).
Et dans ta page principale tu l'appelle avec un


echo '<img src="scriptAffiche.php?id_img='.$id.'" />'
 

Dans scriptAffiche.php :

- Récup du binaire
header('Content-type: image/png');
- écho du binaire


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#3 24-08-2009 14:07:51

cire390
Membre
Inscription : 17-08-2009
Messages : 14

Re : [Résolu] Afficher champ blob de la DB

Merci pour la réponse. J'ai essayé ceci mais ca ne marche pas.

Ma page index affiche une liste de numéro de pages.
Lorsqu'on clique sur un numéro, je passe en parametre "id_page"
La page detail.php marche (pas le champs blob)

J'ai donc crée une page php.php qui doit en principe recupere l'image voici le code:

if ( isset($_GET['id_page']) )
{
$id = intval ($_GET['id_page']);
$machine="localhost";
$utilisateur="root";
$mot_passe="root";
$nom_base="demo";
//connexion au SGBD Mysql
$con=mysql_connect($machine,$utilisateur,$mot_passe) or die ('Erreur : '.mysql_error() );

$req = "SELECT id_page, doc_image FROM pages WHERE id_page = '$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: doc_image/png");
echo $col[1];
}
}
else
{
echo "Mauvais id d'image";
}

Seulement quand j'essai d'affiche cette image dans ma page detail.php, ca ne marche pas, j'ai une errer http:500
voici ma page detail.php (qui marche bien sauf quand je rajouter l'affichage du champ blob)

<?php
$id = $_GET['id_page'];
echo $id;

$machine="localhost";
$utilisateur="root";
$mot_passe="root";
$nom_base="demo";
$con=mysql_connect($machine,$utilisateur,$mot_passe) or die ('Erreur : '.mysql_error() );

mysql_select_db($nom_base);
$query="SELECT id_pen, form_date, doc_nom, id_page, doc_image FROM pages WHERE id_page='$id'";
$resultat=mysql_query($query,$con) or die (mysql_error());;
$total=mysql_num_rows($resultat);//donne le nombre de ligne
if($total) {
echo'<table bgcolor="#FFFFFF">'."\n";
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
echo '</tr>'."\n";
while($row=mysql_fetch_array($resultat))
{
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row["id_page"].'</a></td>';
echo '<td bgcolor="#CCCCCC">'.$row["form_date"].'</a></td>';
echo '<td bgcolor="#CCCCCC">'.$row["doc_nom"].'</a></td>';

echo '<td bgcolor="#CCCCCC"><img src=php.php?doc_image='.$id.' /td>'

echo '</tr>'."\n";
}
echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($resultat);

Faut-il faire appelle a cette image d'une autre facon ?

Merci encore

Hors ligne

#4 24-08-2009 16:52:45

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Afficher champ blob de la DB

Salut,

echo '<td bgcolor="#CCCCCC"><img src=php.php?doc_image='.$id.' /td>'
et
$id = intval ($_GET['id_page']);

Faut choisir entre doc_image et id_page smile


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#5 24-08-2009 17:15:20

cire390
Membre
Inscription : 17-08-2009
Messages : 14

Re : [Résolu] Afficher champ blob de la DB

J'ai essayé de remplacer ceci

echo '<td bgcolor="#CCCCCC"><img src=php.php?doc_image='.$id.' /td>'

par

echo '<td bgcolor="#CCCCCC"><img src=php.php?id_page='.$id.' /td>'

mais le résultat est le même.

Lorsque l'on fait un echo (dans detail.php) pour appeller l'image (comme ci-dessus), c'est le nom du champ image de ma DB ou le parametre que je passe dans l'url que je dois afficher ?

Hors ligne

#6 24-08-2009 17:32:29

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Afficher champ blob de la DB

Que se passe-t-il si tu appelle directement dans ton navigateur :
php.php?id_page=1 par exemple (ou à la place de 1 un id qui existe)


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#7 25-08-2009 13:30:20

cire390
Membre
Inscription : 17-08-2009
Messages : 14

Re : [Résolu] Afficher champ blob de la DB

Merci bcps mcAllan

J'ai teste comme tu m'as dit et j'ai pu trouver l'erreur. J'ai un peu honte mais dans la page-script qui ne sert qu& afficher l'image je laissé l'entete classique d'une page html au lieu de ne laisse que du php.

Je met mon code des fois que ca interresse quelqu'un

page detail.php

<?php
$id = $_GET['id_page'];
$machine="localhost";
$utilisateur="root";
$mot_passe="root";
$nom_base="demo";
$con=mysql_connect($machine,$utilisateur,$mot_passe) or die ('Erreur : '.mysql_error() );
mysql_select_db($nom_base);
$query="SELECT id_pen, form_date, doc_nom, id_page, doc_image FROM pages WHERE id_page='$id'";
$resultat=mysql_query($query,$con) or die (mysql_error());;
$total=mysql_num_rows($resultat);//donne le nombre de ligne
if($total) {
echo'<table bgcolor="#FFFFFF">'."\n";
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
echo '</tr>'."\n";
while($row=mysql_fetch_array($resultat))
{
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row["id_page"].'</a></td>';
echo '<td bgcolor="#CCCCCC"><img src=showimage.php?id_page='.$id.' /td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($resultat);
?>

et la page showimage.php

<?php
if ( isset($_GET['id_page']) )
{
$id = intval ($_GET['id_page']);
$machine="localhost";
$utilisateur="root";
$mot_passe="root";
$nom_base="demo";
mysql_select_db($nom_base);
$con=mysql_connect($machine,$utilisateur,$mot_passe) or die ('Erreur : '.mysql_error() );
$req = "SELECT id_page, doc_image FROM pages WHERE id_page = '$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: doc_image/png");
echo $col[1];
}
}
else
{
echo "Mauvais id d'image";}
?>

J'ai une derniere question, j'aimerais redimensionner mon image. Peut-on le faire directement en melangant html et php au niveau de :
echo '<td bgcolor="#CCCCCC"><img src=showimage.php?id_page='.$id.' /td>';

ou vaut-il le faire dans le script qui recupere l'image

Merci encore

Hors ligne

#8 25-08-2009 17:50:18

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : [Résolu] Afficher champ blob de la DB

Pour redimensionner une image en PHP, tu as la librairie GD.
Vois les fonctions :
imagecreatefromstring
imagecopyresized

Une petite remarque :
Dans showimage.php les echos ne serviront pas car il ne seront jamais affichés smile


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#9 31-08-2009 11:14:47

cire390
Membre
Inscription : 17-08-2009
Messages : 14

Re : [Résolu] Afficher champ blob de la DB

Merci bcps pour cette aide précieuse.

Encore une fois je ne sais pas comment mettre mon post en resolu

Dernière modification par cire390 (31-08-2009 11:16:33)

Hors ligne

Pied de page des forums