Affichage d'images depuis base MySQL

cs_klerdesign Messages postés 24 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 16 mai 2008 - 25 oct. 2006 à 10:54
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 27 oct. 2006 à 09:42
Bonjour,
Au commencement j'utilisai une simple interface d'admin sans insertion d'images. Mais j'ai du adapter pour pouvoir insérer des images.

Comment lier mon champ 'img_blob' (de ma table 'images') à ma news ?
Quelle syntaxe et où la placer ?

//Je transfert mes images ainsi :
$req = "INSERT INTO images ("."img_nom, img_taille, img_type, img_blob ".")
VALUES ("."'".$img_nom."', ".
"'".$img_taille."', ".
"'".$img_type."', ".
"'".addslashes ($img_blob)."') ";

//partie du code de la page apercu.php
$req = "SELECT img_id, img_type, img_blob ".
"FROM images WHERE img_id = ".$id;

//je selectionne ma news (nombre, id, ordre d'apparition).
$news->SelectNews($nb,$sort,$order);

//j'affiche mon image depuis la page apercu.php
echo "";


Jusqu'ici, les news s'insèrent correctement et les images rentrent dans ma table 'images'. Le seul problème est l'affichage de ces dernières. Je ne parviens pas à les associer à leur news repective.

Je me répète, mais c'est par souci de clarté ;)

7 réponses

franco_se Messages postés 151 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 30 juillet 2018 2
25 oct. 2006 à 11:49
salut

je ne comprend pas ce que tu veux dire par lier tion champ img_blob a ta news...... tu veux dire l'afficher .

enfin, coté code, tu t'es un peu compliqué la vie avec les apostophe et guillemets .... essaye plutot avec ça :
//Je transfert mes images ainsi :
$req = "INSERT INTO images (img_id, img_nom, img_taille, img_type, img_blob) VALUES ('', '".$img_nom."', '".$img_taille."', '".$img_type."', '".addslashes ($img_blob)."') ";

//partie du code de la page apercu.php$req "SELECT img_id, img_type, img_blob FROM images WHERE img_id ".$id;


//je selectionne ma news (nombre, id, ordre d'apparition).
$news->SelectNews($nb,$sort,$order);

//j'affiche mon image depuis la page apercu.php
echo "";


mais il serait plus d'afficher tout le code plutot que des bribes
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
25 oct. 2006 à 13:06
Salut !

Moi ce que j'ai du mal a capter, c'est le but d'enregistrer une image dans la bdd... c'est tres deconseille ! Pourquoi ne pas faire un repertoire sur le site et mettre tes images dedans ? Niveau place, tu y gagnerais grave (d'autant que sur certains hebergeurs, la taille de la base de donnees n'est pas la meme).

que la taille du disque).

@+
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 oct. 2006 à 16:21
Hello,

ouais...ceci dit, il faudrait plutôt montrer le code de apercu.php ET ce que tu insères réellement dans img_blob...bref, comment tu insères ton image dans ce champ. Et je ne parle pas de la requête, mais de ce qu'il y a avant. Bref, y a quoi dans $img_blob ?
Et apercu.php hein, important...le pb vient de là à mon avis et j'ai déjà ma petite idée...
cs_klerdesign Messages postés 24 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 16 mai 2008
25 oct. 2006 à 16:47
Bien, bien, alors voici mon code de apercu.php :

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



Et voici ma fonction de transfert pour img_blob :




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

// je reçois le fichier

$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'];
include ("includes/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."', ".
// echap contenu binaire
"'".addslashes ($img_blob)."') ";

$ret = mysql_query ($req) or die (mysql_error ());
return true;
}
}
?>

Et ma fonction d'insertion de news :

<?php
if (isset($_POST['addnews'])) {

$time = date('Y-m-d H:m:s');
$title = $_POST['title'];
$poster = $_POST['poster'];
$text = nl2br($_POST['text']);

$news->AddNews($time,$title,$poster,$text);
}
?>

Ce que je cherche à faire c'est :
lorsque je rentre une actu, l'image associée s'affiche avec cette actu et non à la queue leu leu comme c'est le cas actuellement.

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 oct. 2006 à 16:55
Ah, j'avais pas pigé ton bin's.
Déjà je pige pas pourquoi tu passes $col['1'] à apercu.php alors que selon ta requête, ce serait plutôt $col[2]...?
cs_klerdesign Messages postés 24 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 16 mai 2008
27 oct. 2006 à 09:21
et c'est ce qu'il y'a :






header ("Content-type: ".$col[1]);
echo $col[2];
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 oct. 2006 à 09:42
Je parlais de ton 1er code, mais ce ne sont que des bouts donc les variables ne correspondent pas forcément.

ceci dit, le code affichant les news, donc, c'est ça :
$news->SelectNews($nb,$sort,$order);

Ok ? Et vu les paramètres, cette méthode en affiche plusieurs (nombre, $nb) ? Ou pas ?
Donc si tu fous APRES cette méthode, une balide il me semble normal que tes news s'affichent d'abord, toutes à la suite, puis tes images, toutes à la suite aussi, non ?

Enfin, ce n'est pas très clair ton truc.  Une méthode affichant une news devrait à priori afficher la/les image/s liée/s à la news aussi.
Rejoignez-nous