cs_Elberton
Messages postés25Date d'inscriptionmercredi 20 août 2008StatutMembreDernière intervention28 septembre 2019
-
Modifié le 10 juin 2018 à 19:34
jordane45
Messages postés37734Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 1 octobre 2023
-
11 juin 2018 à 09:57
Bonjour,
Je vous explique un soucis.
Dans un précédent post, j'ai demandé s'il fallait mieux stocker dans un repertoire ou un blob.
Cela fonctionne avec le répertoire, aucun problème.
Cependant dans le projet, j'ai un accès à une autre base de donnée qui ne m'appartient pas mais dont j'ai accès en lecture pour certaine données.
Notamment par exemple la table db_race qui contient des données sur des chiens méchants catégorisé.
Il y a un id, le nom_race, cat, photo.
Le champ photo est un blob que je dois afficher. J'arrive à afficher la photo avec le code suivant :
//Check connection
if($db->connect_error){
die("Connection failed: " . $db->connect_error);
}
//Get image data from database
$result = $db->query("SELECT * FROM db_race WHERE id =1");
if($result->num_rows > 0)
{
$imgData = $result->fetch_assoc();
//Render image
header("Content-type: image/jpg");
//echo "<a href='http://localhost/".$imgData['Photo']."'>Lien</a>";
echo $imgData['Photo'];
}
else
{
echo 'Image not found...';
}
Hors je fonctionne avec une class. Et là je n'y arrive pas a afficher la photo correctement.
Toute les données texte fonctionne mais pas les photos:
public function TabResSQL($Requete)
{
$i = 0;
$TabResultat=array();
//Si la requete est ok, on fait la boucle sinon on renvoie l'erreur
if($Ressource = mysqli_query($this->Lien,$Requete))
{
while ($Ligne = $Ressource->fetch_assoc())
{
foreach ($Ligne as $clef => $valeur) $TabResultat[$i][$clef] = $valeur;
$i++;
}
}
else
{
die(mysqli_error($this->Lien));
}
//on libere les ressources des requetes
mysqli_free_result($Ressource);
return $TabResultat;
}
Quand je fais appel à ma fonction :
$result = $link->TabResSQL('SELECT * FROM db_race WHERE id=1;');
header("content-type:image/jpg,true");
echo $result[0]['Photo'];
Sa m'affiche un carré noir avec rien dedans.
Si je fais un test dans une page vide avec du code linéaire cela fonctionne. Mais pas quand j'utilise ma class.
Si je retire le header j'ai tout des suites de lettre et de chiffre.
Je pense que je dois oublier de faire quelques chose. Le but de la manoeuvre est d'afficher la photo de la race du chien dans un tableau avec d'autres informations lié aux chiens.
merci beaucoup
EDIT : Ajout du langage dans les balises de code pour avoir la coloration syntaxique ! (jordane)
Au passage ta fonction de requetage peut s'écrire plus simplement:
public function TabResSQL($Requete)
{
$TabResultat=array();
//Si la requete est ok, on fait la boucle sinon on renvoie l'erreur
if($Ressource = mysqli_query($this->Lien,$Requete)) {
while ($Ligne = $Ressource->fetch_assoc())
{
$TabResultat[] = $Ligne;
}
} else {
die(mysqli_error($this->Lien));
}
//on libere les ressources des requetes
mysqli_free_result($Ressource);
return $TabResultat;
}