BLOB'S mysql/php

Résolu/Fermé
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 - 8 sept. 2009 à 09:30
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 - 10 sept. 2009 à 18:20
Bonjour,

Soit ma requête :

$reponse = mysql_query ("SELECT * FROM test") or die ('erreur');

while ($donnees = mysql_fetch_array ($reponse)) {
		echo '
			<table><tr>
			<td>'.$donnees['id'].'</td>
			<td>'.$donnees['titre'].'</td>
			<td>'.$donnees['image1'].'</td>
			<td>'.$donnees['image1'].'</td>
			</tr></table>';
}


et une table "test" : id,titre,image1,image2 (image1 et image2 sont des blob dans mysql)

Mais je n'arrive pas à afficher les images. Je trouve des bouts de codes sur le net mais je n'y comprends rien. En plus ils montrent des codes qui permettent d'afficher que l'imageet pas le reste et chez moi ça marche même pas. En plus, mon but est bien de comprendre !!! Sinon ou est l'intérêt de mon exercice ?

Merci
A voir également:

9 réponses

Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
9 sept. 2009 à 15:43
Comment faire simplement SVP ?
0
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
9 sept. 2009 à 16:06
Salut. Est ce que tu es tombé sur ce code ? https://codes-sources.commentcamarche.net/
Dans ce bout de code, il récupère l'objet blob et créer un nouveau fichier (qui est l'image), et l'appel avec un <img/>

Perso, je ne suis pas trop fan de cette solution, c'est inutile de stocker l'image sur le serveur et dans la base.

Une autre solution.
Quand tu veux placer l'image, tu met :
<img src="image.php?id_image=150"/>

Page image.php :
<?php
header("Content-type: image/jpeg");
header('Content-transfer-encoding: binary');

$id = $_POST['id_image'];
$reponse = mysql_query ("SELECT * FROM test WHERE id=$id") or die ('erreur');

while ($donnees = mysql_fetch_array ($reponse)) {
		echo '$donnees['image1'];
}
?>

Enfin c'est pas très conseiller de stocker une image dans une base de donnée, c'est plus léger de stocker uniquement l'adresse. Enfin si c'est pour apprendre.
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
9 sept. 2009 à 16:36
je confirme, les bdd sont absolument pas faites pour ça, c'est bien trop lourd comme données.
0
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
9 sept. 2009 à 16:21
Oui, c'est pour apprendre...

Ta méthode m'affiche une ligne :
http://localhost/occasions/test.php</code>
                
                
0
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
9 sept. 2009 à 16:25
Tu peux faire un screenshot stp. L'url localhost, j'y ai pas accès.
0

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

Posez votre question
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
9 sept. 2009 à 16:34
Ben comme screenshot, c'est simple c'est une page blanche avec ecrit ça dessus :
h_ttp://127.0.0.1/occasions/test.php 


le _ c'est pour pas que ça fasse de lien...

En fait dès que j'en lève le content-type (header) cette ligne disparait et rien ne s'affiche...
0
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
9 sept. 2009 à 16:42
Ok, a vrai dire j'ai jamais testé le blob. Je ne suis pas chez moi pour le moment et je n'ai pas de wamp sous la main. Je regarde ça tout à l'heure.
0
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
9 sept. 2009 à 17:37
Donc voila ce que j'ai fait :
envoi.php :
<?php
	$dbhost = 'localhost';
	$dbuser = 'root';
	$dbpass = '';
	$dbname = 'test_blob';
	
	mysql_connect($dbhost,$dbuser,$dbpass);
	mysql_select_db($dbname);
	$img = "astronaut.jpg";
	$fp = fopen($img,"r");
	$data = fread($fp,filesize($img));
	fclose($fp);
	$data = addslashes($data);
	
	mysql_query('INSERT INTO image VALUES("", "'.$data.'")');
?>

image.php
<?php

	header("Content-type: image/jpeg");
	header('Content-transfer-encoding: binary');
	
	$dbhost = 'localhost';
	$dbuser = 'root';
	$dbpass = '';
	$dbname = 'test_blob';
	
	mysql_connect($dbhost,$dbuser,$dbpass);
	mysql_select_db($dbname);
	
	$sql = mysql_query('SELECT * FROM image WHERE id='.$_GET['id']);
	WHILE ($data = mysql_fetch_array($sql)) {
		echo $data['image'];
	}
?>


Et dans le html, juste :
<img src="image.php?id=1"/>


Et ca fonctionne nickel.
http://www.cijoint.fr/cjlink.php?file=cj200909/cijLC0awsO.jpg
0
Fetide68 Messages postés 737 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 14 avril 2023 32
10 sept. 2009 à 15:22
Désolé pour le retard, il semblait y avoir de la maintenance sur le site...

J'ai toujours le header qui affiche une ligne (la même)....

Quand j'insère une image par l'interface phpMyAdmin dans un blob, il en fait une suite de caractères hexadecimaux. Et à l'affichage, il affiche ces caractères.
0
zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
10 sept. 2009 à 18:20
Essaye en insérant l'image avec du php. J'ai aussi un problème en l'envoyant avec phpMyAdmin (l'image ne s'affiche pas entièrement).
Sinon, je vois pas trop.
0