Pb Script d'affichage d'image par MySQL
sbastien
Messages postés
7
Statut
Membre
-
Atropa Messages postés 2051 Statut Membre -
Atropa Messages postés 2051 Statut Membre -
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 :
Transfert.php :
Connexion.php :
Liste.php :
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 !!!!!!
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:
- Pb Script d'affichage d'image par MySQL
- Script vidéo youtube - Guide
- Recherche par image - Guide
- Image iso - Guide
- Affichage double ecran - Guide
- Mas script - Accueil - Windows
4 réponses
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
upload plutot tes fichiers directement sur le serveur, ce sera traité plus rapidement et ça réduira le nombre de requête sql
sbastien
Messages postés
7
Statut
Membre
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...
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 :
par exemple
il faudra que tu fasses un truc du genre :
page 1
page2 (image.php)
mon code n'est pas viable mais c'est un truc dans ce genre que ça te ferait faire...
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...