DELETE unlink

Résolu
delaville81 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   -  
delaville81 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 195 Date d'inscription   Statut Membre Dernière intervention  
 
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