Pb Script d'affichage d'image par MySQL

Fermé
sbastien Messages postés 6 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 16 septembre 2009 - 2 juin 2009 à 17:51
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 - 4 juin 2009 à 00:42
Bonjour,
J'ai une erreur dans mon script... Ayant des connaissances minimes en PHP, il m'est difficile de la cerner.

Voici les codes de mes différentes pages, ces codes permettent d'envoyer une image en binaire dans ma base de données puis d'afficher ces images sur la page liste.php, ce qui ne fonctionne pas... (Les images s'enregistrent correctement pourtant) :

Index.php :

<?php
include ("transfert.php");
if ( isset($_FILES['fic']) )
{
transfert();
}
?>

<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>

<a href="liste.php">Liste des images</a>


Transfert.php :

<?php
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'];
}

$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];
include ("connexion.php");
$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."', ".
"'".addslashes ($img_blob)."') ";
$ret = mysql_query ($req) or die (mysql_error ());
return true;
}

?>


Connexion.php :

<?php
$hote = 'localhost';
$base = 'fanclub';
$user = 'root';
$pass = '';
$cnx = mysql_connect ($hote, $user, $pass) or die (mysql_error ());
$ret = mysql_select_db ($base) or die (mysql_error ());
?>


Liste.php :

<?php

include ("connexion.php");
$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 />";
}

if ( isset($_GET['id']) )
{
$id = intval ($_GET['id']);
include ("connexion.php");
$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";
}
?>


Ma base de données (fanclub):

CATEGORIE (id_cat, nom_cat)
IMAGES (img_id, img_nom, img_taille, img_type, img_desc, img_blob, img_cat#)

img_cat en relation avec id_cat de la table categorie.

De plus, si vous arrivez à trouver la solution du problème, j'aimerai savoir comment faire pour sélectionner un numéro de catégorie lors de l'upload de l'image...

Merci !!!!!!
A voir également:

4 réponses

Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
2 juin 2009 à 18:27
je te déconseille fortement de faire ça de cette manière, c'est pas optimisé du tout,

upload plutot tes fichiers directement sur le serveur, ce sera traité plus rapidement et ça réduira le nombre de requête sql
1
sbastien Messages postés 6 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 16 septembre 2009
2 juin 2009 à 20:02
Mais pour la gestion des images sur mes pages web c'est beaucoup plus long, je souhaite un système qui évite de me faire faire des copiés/collés de liens...
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
2 juin 2009 à 20:06
je ne comprend pas bien ce que tu veux dire par copier coller de liens
0
sbastien Messages postés 6 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 16 septembre 2009
2 juin 2009 à 20:16
Si je met les images dans mon hébergeur, il faudra ensuite que j'utilise les a href pour pouvoir les afficher, c'est un mode de gestion long que je souhaite éviter
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
2 juin 2009 à 20:37
c'est bien plus long de le faire avec un header en php qui t'obligera à faire des liens quand même sur une autre page...

au lieux de faire :
<a href="image/monimage.jpeg"/>Image</a>


par exemple

il faudra que tu fasses un truc du genre :

page 1
<a href="imahe.php?img=monimage.jpeg">Image</a>


page2 (image.php)

<?php

header(Content-type : image/jpeg);

mysql_conect();
mysql_select_db();

$data = mysql_query(SELECT bin FROM images WHERE img=$_GET[img]);

$data = mysql_fetch_assoc($data);

echo $data['bin'];


?>



mon code n'est pas viable mais c'est un truc dans ce genre que ça te ferait faire...
0
sbastien Messages postés 6 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 16 septembre 2009
3 juin 2009 à 00:13
j'ai pas trop compris comment fonctionne ton script, en gros, il fait quoi ^^'
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
4 juin 2009 à 00:42
page 2 c'est en gros ce qu'il faut faire pour afficher une image en php

page 1 c'est pour mettre un liens vers cette image
0