Supprimer une photo

Résolu/Fermé
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021 - 26 avril 2017 à 18:10
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021 - 27 avril 2017 à 00:45
Bonjour à toutes et à tous , voila j'arrive a afficher correctement mes photos mais quand je veux supprimer un article un a un j'arrive pas a me défaire de la balise img et du coup ça me laisse un petit carré vert. Tout se supprime correctement de ma bdd pourtant. ( voir photo :3 )

Voici mon code :
<?php
if(!empty($_FILES))
{
$file_name=$_FILES['photo']['name'];
$file_type=$_FILES['photo']['type'];
echo 'Nom : '.$file_name.'<br/>';
echo 'type'.$file_type;

}?>

<?php
if( isset($_POST['soumettre']) ) // si formulaire soumis
{


$content_dir = 'uploads/'; // dossier où sera déplacé le fichier

$tmp_file = $_FILES['photo']['tmp_name'];

if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}

// on vérifie maintenant l'extension
$type_file = $_FILES['photo']['type'];

if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png'))
{
exit("Le fichier n'est pas une image");
}

// on copie le fichier dans le dossier de destination
$name_file = $_FILES['photo']['name'];

if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}

echo "Le fichier a bien été uploadé";
}




if(isset($_POST['titre'])) $titre=$_POST['titre'];
else $titre="";

if(isset($_POST['contenu'])) $contenu=$_POST['contenu'];
else $contenu="";

if(isset($_FILES['photo']['name'])) $photo=$_FILES['photo']['name'];
else{
$photo="";
}



try
{
$bdd = new PDO('mysql:host=localhost; dbname=valflexibles; charset=utf8', 'root', '');
}
catch (exception $e)
{
die ('Erreur'.$e->getMessage()) ;
}
if(isset($_GET['supprime']) AND !empty($_GET['supprime'])) {
$supprime=(int) $_GET['supprime'];
$req=$bdd->prepare('DELETE from article where id = ?');
$req->execute(array($supprime));
}
$billets = $bdd->query('select * from article
order by id desc');


$req=$bdd->prepare('insert into article set titre=? , contenu=? , photo=? ');
$req->execute([$titre,$contenu,$photo]);
?>
<?php
$billets = $bdd->query('select * from article
order by id desc');
foreach ($billets as $billet): ?>
<article>
<header>


<font color=grey><?= $billet['titre'] ?></font>

</header>
<a href="upload.php?supprime=<?=$billet['id']?>"><button class="negative ui button">Supprimer</button></a>
<p> <p><h4><?= $billet['contenu'] ?></h4></p></p>


<p> <img src="uploads/<?php echo $billet['photo']; ?>"</p>




</br>
<hr/>
</article>
<hr />

<?php endforeach; ?>


J'ai tenté de faire

if (file_exists($name_file)) {
?> <img src="uploads/<?php echo $billet['photo']; ?>"</p> <?php
} else {



}

Mais ça ne marche pas , ou bien je le place pas au bon endroit dans mon code... Merci a tous :p
A voir également:

8 réponses

Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
Modifié le 26 avril 2017 à 18:24
Bonjour MalonTails,

C'est plutôt :
<?php
if (file_exists($name_file)) {
echo '<img src="uploads/' . $billet['photo'] . '">';
}
?>
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 18:36
merci ;) , je le met environ ou dans mon code , sans vouloir trop en demander :3
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 18:28
bonjour ! merci de me répondre ! je dois le mettre a environ quel niveau de mon code ? car souvent j'ai l'erreur comme quoi ma variable name_file n'est pas déclaré alors que si :/
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
Modifié le 26 avril 2017 à 18:40
le seul endroit où je n'ai pas d'erreur c'est lorsque je le met ici ( voir photo) mais ça ne supprime toujours pas le petit carré vert de la balise img :( mon affichage doit se faire dans le foreach
0
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
26 avril 2017 à 19:00
Vous remplacez :

<p> <img src="uploads/<?php echo $billet['photo']; ?>"</p> 


Par :

<p>
<?php
if (file_exists($name_file)) {
echo '<img src="uploads/' . $billet['photo'] . '">';
}
?>
</p>
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 19:04
merci beaucoup de m'aider !
Je pensais aussi que je devais le mettre dans mon foreach c'est ce qui me parait le plus logique mais cette erreur apparait

Notice: Undefined variable: name_file in C:\wamp\www\Stage\admin\upload.php on line 91
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021 > MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 19:13
d'ailleurs apres avoir mis ici mes images ne s'affichent plus :/
0

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

Posez votre question
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 19:06
je me permet de mettre des screen de mon code afin qu'il soit plus clair que sur le post


0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 27 avril 2017 à 00:03
Bonjour,

Merci de ne pas mettre des screen de tes codes ... mais de le coller directement sur le forum en utilisant les balises de codes prévues à cet effet.
Cela nous permettra de mieux lire le code et d'en faire des copier/coller si besoin.


Explications disponibles ici
:ICI


.
0
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
26 avril 2017 à 19:18
$name_file = 'uploads/' . $billet['photo'];

if (file_exists($name_file)) {
echo '<img src="' . $name_file . '">';
}
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 19:27
super les photos se réaffichent ! mais j'ai toujours ce truc la en appuyant sur supprimer :/
https://puu.sh/vwYhv/2f82bad006.png
En tout cas merci beaucoup pour votre aide !
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 19:33
je viens de m'apercevoir qu'il me restait ceci dans la bdd

https://puu.sh/vwYFF/9bedbf5b59.png
0
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
26 avril 2017 à 19:38
Ici la condition est lié si le fichier existe sur le disque dur et non si une ligne existe dans la base de donnée.
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021 > Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017
26 avril 2017 à 19:46
je me répete peut etre beaucoup mais merci vraiment pour l'aide , j'ai du coup modifier la fonction par celle ci

<?php
$name_file = 'uploads/' . $billet['photo'];

if (file_exists($name_file) && isset($_FILES['photo']['name'])) {
echo '<img src="' . $name_file . '">';
}


?>

Du coup ça marche ! le vilain petit carré vert qui me dérangé a enfin foutu le camp ! XD

Mais la base de donnée reste comme ceci
https://puu.sh/vwZoW/ee106a69e3.png
ca supprime les élément de la liste mais pas la ligne elle meme puisque l'id est toujours présent. Du coup les boutons restent aussi
https://puu.sh/vwZqQ/86f832ec42.png
0
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
26 avril 2017 à 20:50
Mais il vienne d'où tes deux id : 567 et 569 ?

S'ils n'ont pas d'intérêt dans ce cas supprime les simplement avec le bouton de ton interface.
0
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
Modifié le 26 avril 2017 à 22:28
Ceci est aussi bizarre :

$req=$bdd->prepare('insert into article set titre=? , contenu=? , photo=? ');
$req->execute([$titre,$contenu,$photo]);


En PHP un tableau c'est plutôt :
array($titre,$contenu,$photo)
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 22:30
oui , même sur mes autres pages j'ai aucun probleme de suppression , par exemple sur une autre page j'utilise :
if(isset($_GET['supprime']) AND !empty($_GET['supprime'])) {
$supprime=(int) $_GET['supprime'];
$req=$bdd->prepare('DELETE from contact where id = ?');
$req->execute(array($supprime));
}

ensuite

</br> <a href="avisvu.php?supprime=<?=$billet['id']?>"><button class="negative ui button">Supprimer</button></a>

et ça marche parfaitement :/
0
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
26 avril 2017 à 22:47
Hum, que donne ? :
echo var_dump($_GET);
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
26 avril 2017 à 22:50
alors avant suppression : C:\wamp\www\Stage\admin\upload.php:60:
array (size=0)
empty

apres suppression :
C:\wamp\www\Stage\admin\upload.php:60:
array (size=1)
'supprime' => string '622' (length=3)
0
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
Modifié le 26 avril 2017 à 22:56
J'ai du mal à comprendre pourquoi il supprime pas si c'est bien la bonne id. Le nom de la table est juste ?
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021 > Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017
26 avril 2017 à 23:04
heu oui a moins que j'ai pas vu mon erreur :/

https://puu.sh/vxcmm/471a109d85.png
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 27 avril 2017 à 00:27
On va faire un peu de ménage et de corrections dans ton code.

Déjà .. tu places le code de connexion à la bdd dans un fichier à part que tu n'auras qu'à inclure dans les pages de ton site où tu en auras besoin.
Au passage ... j'active la gestion des erreurs PDO en cas de soucis avec les requêtes. (je t'invite à lire ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs )
<?php
//fichier de connexion à la bdd : cnxBdd.php
try{
$bdd =new PDO('mysql:host=localhost; dbname=valflexibles; charset=utf8', 'root', '');
// Activation des erreurs PDO
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}
?>



Ensuite, le reste de ton code.
Là encore.. petite amélioration .. pour récupérer PROPREMENT les variables AVANT de les utiliser
Lire ceci : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
+ ajout des TRY/CATCH autour des requêtes pour lever les erreurs en cas de soucis.
<?php
//---------------------------------------------------------------------------//
//affichage des erreurs PHP
//---------------------------------------------------------------------------//
error_reporting(E_ALL);
ini_set('display-errors','on');

//---------------------------------------------------------------------------//
//connexion à la bdd
//---------------------------------------------------------------------------//
require_once "cnxBdd.php";

//---------------------------------------------------------------------------//
//récupération propre des variables
//---------------------------------------------------------------------------//
$f_photo = !empty($_FILES['photo']) ? $_FILES['photo'] : NULL;
$tmp_file = $f_photo ? $f_photo['tmp_name'] :NULL;
$name_file = $f_photo ? $f_photo['name'] :NULL;
$type_file = $f_photo ? $f_photo['type'] :NULL;

$titre = !empty($_POST['titre']) ? $_POST['titre'] :'';
$contenu = !empty($_POST['contenu']) ? $_POST['contenu'] :'';

$supprime = !empty($_GET['supprime']) ? (int)$_GET['supprime'] : NULL;


//autres variables / Constantes
$content_dir = 'uploads/'; // dossier où sera déplacé le fichier

//---------------------------------------------------------------------------//
// si formulaire soumis
//---------------------------------------------------------------------------//
if( isset($_POST['soumettre'])) {

  if( !is_uploaded_file($tmp_file) ){
    exit("Le fichier est introuvable");
  }

  //verification type de fichier
  if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png')){
    exit("Le fichier n'est pas une image");
  }

  // on copie le fichier dans le dossier de destination
  if( !move_uploaded_file($tmp_file, $content_dir . $name_file) ){
    exit("Impossible de copier le fichier dans $content_dir");
  }
  echo "Le fichier a bien été uploadé";
  
  // Insertion des données dans la BDD
  $sql = "INSERT INTO  article (titre,contenu ,photo') VALUES ( ? , ? , ?) ";
  $datas =array($titre,$contenu,$photo);
  try{
     $req = $bdd->prepare($sql);
     $req->execute($datas);
     $new_id = $bdd->lastInsertId();
  }catch(Exception $e){
    // en cas d'erreur :
    echo " Erreur ! ".$e->getMessage();
  }
  
}

//---------------------------------------------------------------------------//
//Suppression
//---------------------------------------------------------------------------//
if($supprime){
  $sql = ' DELETE FROM article WHERE id = ? ';
  $datas = array($supprime);
  try{
     $req=$bdd->prepare($sql);
     $req->execute($datas);
  }catch(Exception $e){
    // en cas d'erreur :
    echo " Erreur ! ".$e->getMessage();
  }
}

//---------------------------------------------------------------------------//
// Affichage des billets
//---------------------------------------------------------------------------//
$billets = $bdd->query('SELECT * FROM article ORDER BY id DESC');


foreach ($billets as $billet){

  echo "<article>
        <header>
        <font color='grey'>".$billet['titre']."</font>
       </header>
       <a href='upload.php?supprime=".$billet[' rel="nofollow noopener noreferrer" target="_blank" id']."'>
        <button class='negative ui button'>Supprimer</button>
       </a>
       <p><p><h4>".$billet['contenu']."</h4></p></p>";
        
  if(!empty($billet['photo'])){
    echo "<p> <img src='uploads/". $billet['photo'] ."' alt='".$billet['photo']."'</p>";
  }
  
  echo " </br>
       <hr/>
      </article>
      <hr />";
}

?> 


.
Cordialement, 
Jordane                                                                 
0
MalonTails Messages postés 86 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 26 avril 2021
27 avril 2017 à 00:45
J'ai réussie à regler mon problème , merci beaucoup Felice pour le temps que tu as passé à m'aider c'est grace à toi.

Merci Jordanne pour ta précieuse aide aussi pour va me permettre d'ameliorer nettement et grandement mon code assez .. mal organisé si je puis dire xD

Je l'ai lu avec attention et c'est clair que cest nettement différent , des demain je modifie le tout ( hé oui il se fait tard :3 ).

Merci aussi pour les liens ça va bien m'aider!

Ca fais vraiment plaisir d'avoir des personnes a notre écoute merci beaucoup !
0