Ajouter une image par défaut PHP
Bonjour, je cherche à ajouter une image par défaut, dans le cas où il n' y aurait pas une créée par un utilisateur.
Voici ce que j'ai fait, si quelqu'un peut me guider, ç serait gentil :):
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| function savePhoto($id_annonce,$file,$location){
if(empty($file)){
$defaut= "<img src='no_image.png' width =25px; height= 25px;/>";
return $defaut;
}
$photo = $file['name'];
$photo_tmp = $file['tmp_name'];
if(move_uploaded_file($photo_tmp,$location.$photo)){
return insertPhoto($id_annonce,$location.$photo);
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
function insertPhoto($id_annonce,$photo){
global $bdd;
$sql= "INSERT INTO images_annonces(id_annonce,filepath) VALUES(?,?)";
$datas= array($id_annonce,$photo);
//Execution de la requete
try{
//Execution pour la deuxième table
$requete2 = $bdd -> prepare($sql) ;
return $requete2->execute($datas) ;
}catch(Exception $e){
// en cas d'erreur :
echo " Erreur ! ".$e->getMessage();
echo " Les datas : " ;
print_r($datas);
}
}
$img1 = ($_FILES['img1']);
if(!empty($id_annonce)){
savePhoto($id_annonce,$img1,$location);
//suite du code |
Afficher une image par défaut en PHP
Bonjour, merci pour vos réponses.
Mon image par défaut n'est pas en bdd, mais dans le dossier du projet. Si c'est au moment de l'affichage qu'il faut l'afficher, voici donc ma fonction afficherAnnonce pour me dire ce qu'il faut faire. Merci :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| function afficherAnnonce(){
global $bdd;
$res = [];
$sql=' SELECT A.*
,C.*
,I.*
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
INNER JOIN images_annonces I ON A.id= I.id_annonce
ORDER BY created_date DESC';
try{
$req = $bdd->prepare($sql);
$req->execute();
$data = $req->fetchAll(PDO::FETCH_ASSOC);
//on reconstruit un array mieux organisé pour avoir les photos
foreach($data as $R){
if(!isset($res[$R['id']])){
$res[$R['id']] = $R;
unset($res[$R['id']]['filepath']);
}
$res[$R['id']]['images'][] = $R['filepath'];
}
}catch(Exception $e){
echo "Erreur dans la requête " . $sql;
}
// le temps des tests pour voir le résultat
return $res;
} |
Et dans la page où s'affiche l'annonce:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?php foreach($anouncement as $anounce){
echo'
<div class="annoncepubs">';
$images = !empty($anounce['images']) ? $anounce['images'] : NULL;
if($images){
//boucle sur les images
echo'<div class="container">';
echo ' <div class="slider" >';
foreach( $images as $img ){
echo '<img class ="active"
style="width:90px; height:90px;"
src="'.$img.'">';
}
echo "</div>"; |
Défilement d'images en PHP
Salut Jreaux, en suivant tes instructions et en gardant la première méthode j'ai fait ainsi (voir code), mais l'image par défaut ne s'affiche pas.
Le dossier c'est PROJETSITE, là où se trouve toutes les pages PHP. J'ai beau enlevé le nom du dossier pour laisser 'no_image.png', et je l'ai remis à la fin pour voir, mais pas d'image par défaut.
Notre fonction:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| function afficherAnnonce(){
global $bdd;
$res = [];
$sql=' SELECT A.*
,C.*
,I.*
FROM annonces A
LEFT JOIN categories C ON C.id = A.id_categorie
INNER JOIN images_annonces I ON A.id= I.id_annonce
ORDER BY created_date DESC';
try{
$req = $bdd->prepare($sql);
$req->execute();
$data = $req->fetchAll(PDO::FETCH_ASSOC);
//on reconstruit un array mieux organisé pour avoir les photos
foreach($data as $R){
if(!isset($res[$R['id']])){
$res[$R['id']] = $R;
unset($res[$R['id']]['filepath']);
}
$res[$R['id']]['images'][] = ( !empty($R['filepath']) )? $R['filepath'] : 'PROJETSITE/no_image.png';
}
}catch(Exception $e){
echo "Erreur dans la requête " . $sql;
}
// le temps des tests pour voir le résultat
return $res;
} |
La page d'affichage:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php foreach($anouncement as $anounce){
echo'
<div class="annoncepubs">';
$images = !empty($anounce['images']) ? $anounce['images'] : 'PROJETSITE/no_image.png';
if($images){
//boucle sur les images
echo'<div class="container">';
echo ' <div class="slider" >';
foreach( $images as $img ){
echo '<img class ="active"
style="width:90px; height:90px;"
src="'.$img.'">';
}
} |
Post qui se répète en fonction des images
Citation:
Envoyé par
jreaux62
Ton code n'est pas correct :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php foreach($anouncement as $anounce){
echo'
<div class="annoncepubs">';
$images = !empty($anounce['images']) ? $anounce['images'] : []; // array
if( !empty($images) )
{
//boucle sur les images
echo'<div class="container">';
echo ' <div class="slider" >';
foreach( $images as $img )
{
if( empty($img) ){ $img = 'PROJETSITE/no_image.png'; }
echo '<img class ="active" style="width:90px; height:90px;" src="'.$img.'">';
}
} |
Ton code marche bien jreaux. Comme je le pensais il s'agissait de ma requête sql Inner join images_annonces, j'ai dû modifié pour que ça marche. Merci à toi pour ton aide :)