DELETE unlink

Résolu/Fermé
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 - 7 mars 2022 à 18:38
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 - 8 mars 2022 à 16:20
Bonjour,
J'ai un problème de suppression dont je ne comprends pas la raison.

<table class="table table-striped">
					<tbody>
						<?php
						$ledossier = $_GET['id'];	
						$fic = "fichiers/".$ledossier; 
						$sql_doc = 'SELECT * FROM doc WHERE id_parc = "'.$ledossier.'" ORDER BY nom';
						$pdo->exec('SET NAMES utf8');
						$resultat = $pdo->query($sql_doc);
						while($var = $resultat->fetch()){
						?>
						<tr>
							<th scope="row"><?php echo $var['nom']; ?></th>				
							<td class="space_around"><a class="btn btn-primary" href="<?php echo $fic."/".$var['fichier']; ?>" target="_blank">Afficher</a>
								<form id="formDoc" action="gestion_parc.php" method="post" enctype="multipart/form-data">
									<input type="hidden" name="ledossier" value="<?php echo $ledossier; ?>">	
									<input type="hidden" name="id_doc" value="<?php echo $var['id']; ?>">
									<input type="hidden" name="fichier" value="<?php echo $var['fichier']; ?>">
									<input type="submit" form="formDoc" class="btn btn-danger" name="delete" value="Supprimer" onclick="if(!confirm('Etes-vous sûr de vouloir supprimer <?php echo $var['fichier']; ?> ?')) return false;">
								</form>
							</td>		
						</tr>	
						<?php } ?>		
					<tbody>
				</table>


Requête DELETE
if(isset($_POST['delete'])){
    $ledossier = $_POST['ledossier'];
    $id_doc = $_POST['id_doc'];
    $fichier = $_POST['fichier'];
    $fic = "fichiers/".$ledossier; 
    $todelete = $fic."/".$fichier;
    
    $reqdel = 'DELETE FROM doc WHERE id = :id';
    $data = array(':id'=>$id_doc);
    try{
        $requete = $pdo->prepare($reqdel);
        $requete->execute($data);
        unlink("fichiers/".$ledossier.'/'.$fichier."");
    }
    catch(Exception $e){
        echo " Erreur ! ".$e->getMessage();
        echo " Les datas : " ;
        print_r($data);
    }
    header('Location: gestion_parc.php?id='.$ledossier .'');
}


Lors du clic sur n'importe quel bouton "Supprimer", il supprime toujours le premier de la liste (de la base et du serveur).

Je n'arrive pas à résoudre de bug

Merci de votre aide

Configuration: Macintosh / Chrome 98.0.4758.109

2 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
7 mars 2022 à 19:50
Bonjour,

Un ID se doit d'être unique.
Dans ton code... tous les formulaires ont le même ID ..
	<form id="formDoc" 

et vu que tu cibles l'id du form dans ton bouton.. c'est toujours le premier qui est envoyé.
<input type="submit" form="formDoc"

Pour palier à ça .. soit tu mets un ID différents à chacun de tes form .. soit tu retires cet attribut dans ton bouton ( form="formDoc" )


0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
8 mars 2022 à 16:20
Bonjour jordane,
Merci de ta réponse.
Comme conseillé, j'ai retiré l'attribut form du bouton submit, ça fonctionne.

Je m'excuse pour ma réponse tardive.
0