8721 sujets

Développement web côté serveur, CMS

Bonjour,

j'ai ecrit le code suivant afin d'afficher des vignettes cliquables dans une page.

en amont j'ai la requete sql qui deermine ce qui doit etre affiché:

$num_results = $ret->num_rows;
for ($i=0; $i < $num_results; $i++)
{
$row = $ret->fetch_assoc();
echo "<div id='article' title=".$row['det_nom']." class='article_class'><a href='./details.php?image=".$row."'><img class='artimage_class' src='apercu.php?imageid=".$row['img_id']."' alt='".$row['det_nom']."' onmouseout=this.className='artimage_class' onmouseover=this.className='artimg_hover'></a></div>";
}

Ce qui est passé au champs SRC= n'est jamais atteind, je ne passe jamais dans apercu.php en d'autres termes.
Je ne comprends pas pourquoi, pour y passer je dois je doit faire un include ou un require de apercu.php dans la boucle...
De tout ce que j'ai vu sur les forums ce n'est pas utile.
Quelqu'un a t'il une idée?
Merci
Ci dessous mon apercu.php:

<?php
if(isset($_GET['imageid']))
{
$id = $_GET['imageid'];
$hote = "localhost";
$base = "millebijoux";
$user = "admin";
$pass = "pass";

// log in to database
$conn = mysqli_connect($hote, $user, $pass);
if (!$conn)
{
echo 'Connection to database failed:'.mysqli_connect_error();
exit();
}
// select the appropriate database
$selectedDB = mysqli_select_db( $conn, $base );

if(!$selectedDB)
{
echo 'Cannot select database.';
exit();
}
$req = "SELECT img_id, img_type, img_blob ".
"FROM image WHERE img_id = ".$id;

$ret = $conn->query($req);

if(!$ret)
{
echo "<br/><br/><br/>Impossible de récupérer les images<br>\n".mysqli_error($db_conn);
}
else
{
$num_results = $ret->num_rows;
if ($num_results <= 0)
{
echo "Id d'image inconnu";
}
else
{
$row = $ret->fetch_assoc();
header("Content-type: ".$row['img_type']);
header('Content-transfer-encoding: binary');
echo $col['img_blob'];
}
}
mysqli_close($conn);
}
else
{
echo "Mauvais id d'image";
}
?>
salut,

ben ça me semble normal.

le src d'un balise <img> cela sert a mettre le chemin d'une image pas d'un fichier.php.

header("Content-type: ".$row['img_type']);
header('Content-transfer-encoding: binary');
echo $col['img_blob'];


je vois que tu veux reconstitué l'image dans le fichier comme si c'etait une image mais même comme ça

y a pas de raison que ton fichier.php soit executé.

normal qu'il faille l'include pour que ça agisse.

dsl

edit: je sais pas trop moi je faisais un truc dans ce genre (avec des image en header content-type.... ) j'ouvrais un pop-up dans laquel je plaçais la reconstitution des images .

mais ne te compliques-tu pas la vie pour rien? pour moi ça releve de l'erreur de conception de BDD suivante:

tu aurais du sauvegarder le chemin menant vers ton fichier. pas l'image en tant que telle. ça alourdie ta base de données juste pour te donner derriere les pires difficultées techniques.
Modifié par CPascal (02 Mar 2008 - 12:34)
CPascal a écrit :
salut,

ben ça me semble normal.

le src d'un balise <img> cela sert a mettre le chemin d'une image pas d'un fichier.php.



C'est pourtant ce qui est preconisé comme solution dans ce cas precis. Voir:
http://www.spoono.com/php/tutorials/tutorial.php?id=42

CPascal a écrit :

mais ne te compliques-tu pas la vie pour rien? pour moi ça releve de l'erreur de conception de BDD suivante:

tu aurais du sauvegarder le chemin menant vers ton fichier. pas l'image en tant que telle. ça alourdie ta base de données juste pour te donner derriere les pires difficultées techniques.


Disons que cette solution est evidemment plus simple, mais l'idée etant de s'affranchir du systeme de fichier au maximum, cela perd de son interet.
span_ar
Re,

visiblement je connaissais pas.

tu m'en voudras pas trop de penser que vous etes des compliqués toi et l'auteur de ce tuto. moi je n'aime que le simpleeeee. Smiley sweatdrop Smiley cligne

en tous cas j'ai testé son tuto , ton code.

et pour l'instant y a cette ligne là où t'as une erreur apparement

$row = $ret->fetch_assoc();
header("Content-type: ".$row['img_type']);
header('Content-transfer-encoding: binary');
echo $[b]col[/b]['img_blob'];


le col devrait être un row.
maintenant je ne suis pas dans les conditions idéales pour tester si ce seul changement suffit a resoudre ton pb.

visiblement le tuto ne rajoute pas de header alors a voir.

moi j'ai fait quelques essais avec les fichiers du tuto qui fct. je remarque que même en chngeant col et row faut que je decode base64_decode la variable. bien sur c'est car elles avaient été encodé avant enregistrement. et sinon si tu tiens a rajouter des header il me semble qu'il faut metre aussi le Content-Length ... enfin je crois.
Modifié par CPascal (02 Mar 2008 - 14:46)
Bonjour,

premièrement je ne suis pas d'accord avec CPascal, l'interprétation d'un fichier dépends du fait que le serveur lui aie -ou non- attribué le statut de script. En l'occurrence pour apache cela dépend de l'extension et comme ton fichier finit bien en .php il sera interprété.

Ensuite pour ce qui est de ton problème, la meilleur solution consiste à accéder directement au script par exemple "apercu.php?imageid=32" ensuite "enregistrer le résultat sous" et ouvrir le fichier généré avec un éditeur d'image puis un éditeur texte.
Au cas ou l'image et correctement reconstituée alors l'éditeur d'image devrait pouvoir l'ouvrir sans problème, dans le cas contraire l'éditeur texte devrait permettre de détecter d'où vient l'erreur.

Enfin, ce n'est pas directement lié à ton problème mais pourrait t'intéresser. Ton paramètre imageid n'est jamais échappé avant utilisation dans la requête. Par exemple je peux passer:
img_blob OR img_type='toto'



PS: merci d'utiliser les tags [ code] Smiley murf
Modifié par Necromantik (02 Mar 2008 - 14:06)
Merci à tous les 2.

CPascal pour m'avoir ouvert les yeux et fait mettre le doigt sur le faute d'inatention qui m'a fait perdre une journée. Smiley fache

et Necromantik pour ces conseils de fond que je vais mettre en application.

ça MARCHE!! Smiley biggol

span_ar

la prochaine fois j'utilise les tags code promis Smiley confused
Modifié par span_ar (02 Mar 2008 - 14:54)
Bonjour,
J'aimerais avoir si possible le script pour poster une image et l'afficher dans une autre page.
Merci d'avance
Modifié par Geek05 (15 May 2017 - 18:46)