5133 sujets

Sémantique web et HTML

Bonjour,

Je rencontre un petit problème avec les checkbox, car je souhaite utiliser les mêmes checkbox pour plusieurs bouttons qui sont des input sans submit, dans un form avec action vers un fichier de traitement php, le quatrième buttons ne fonctionne pas car je ne sais pas comment le traiter avec l'id.

J'ai 4 buttons
1 button pour delete d'une entrée de db
2 buttons Update d'une entrée de db
1 button pour telecharger des fichier zip, j'ai donc un probleme avec ce button car je ne sais pas comment utiliser le name du input pour celui-ci pour les autres j'utilise l'id mais pour lui je souhaite utiliser le nom de fichier

Voila si quelqu'un a compris ce que je recherche a faire merci d'avance:

Voici la partie HTML:

<?php while($stages = $stmt->fetch(PDO::FETCH_OBJ)) { ?>
                <tr>
                    <td><input type="checkbox" class="chkCheckBoxId" value="<?php echo $stages->id; ?><?php echo $stages->filename; ?>" name="id[]"/>
                    </td>
                    <td><?php echo $stages->nomstage; ?></td>
                    <td><?php echo $stages->numstage; ?></td>                    
                   <td><?php if ($stages->CourseId == 0) {                            
                       echo "Standard Exercise Course"; 
                   }elseif ($stages->CourseId == 1) {
                       echo "Short Course";
                   }elseif ($stages->CourseId == 2) {
                       echo "Medium Course";
                   }elseif ($stages->CourseId == 3) {
                       echo "Long Course";
                   } ?>
               </td>               
               <td><?php echo $stages->MaxPoints; ?></td>
               <td><?php echo $stages->matchsid; ?></td>
               <td><?php echo $stages->date_creation_stage; ?></td>
           </tr>
       <?php } ?>

 <form method="post" action="actionsmultiples.php"><br>

        <div class="buttons" style="text-align: center;display: inline-flex;">
            
                <button name="buttonShare" title="Partager un ou plusieurs stages" class="btn btn-info shareall" value="shareall" onclick="return confirm('Are you sure you want to share in AllStages?')">Share</button>

                <button name="buttonUnShare" title="Ne plus Partager un ou plusieurs stages" class="btn btn-info unshareall" value="unshareall" onclick="return confirm('Are you sure you want to unshare in AllStages?')">Unshare</button>        
           
                <button name="buttonDownload" title="telecharger un ou plusieurs stages" class="btn btn-info downstages" value="daownstage" onclick="return confirm('Are you sure you want to download stages zip?')">Download stages</button>
                
               <button style="margin-top: 40px!important;" name="buttonDelete" title="Supprimer un ou plusieurs stages" class="btn btn-info supstage" value="Delete" onclick="return confirm('Are you sure you want to delete stages?')">Delete</button>
               
       </div>


la petite partie JS:

 $(document).ready(function() {
    $('#checkBoxAll').click(function() {
        if ($(this).is(":checked"))
            $('.chkCheckBoxId').prop('checked', true);
        else
            $('.chkCheckBoxId').prop('checked', false);
    });
});


Et voici la partie PHP:


<?php 
session_start();
include 'inc/bdd.php';

//Suppression de plusieurs stage
if(isset($_POST['buttonDelete'])) {
	if(isset($_POST['id'])) {
		foreach ($_POST['id'] as $id) {
			$delStages = $bdd->prepare('DELETE FROM stages where id = :id');
			$delStages->bindValue('id', $id);
			$delStages->execute();

			$delStages = $bdd->prepare('SELECT * FROM stages');
			$delStages->execute();

			$_SESSION['message'] = "Les stages ont bien été supprimés";
			header("Location:profil.php?id={$_SESSION['id']} ");
		}
	}
}
?>


<?php 
//Partager plusieurs stage dans Allstages
if(isset($_POST['buttonShare'])) {
	if(isset($_POST['id'])) {
		foreach ($_POST['id'] as $id) {
			$shareStages = $bdd->prepare('UPDATE stages SET showall =1 WHERE id = :id');
			$shareStages->bindValue('id', $id);
			$shareStages->execute();

			$shareStages = $bdd->prepare('SELECT * FROM stages');
			$shareStages->execute();
			$_SESSION['message'] = "Les stages ont bien été partagés dans Allstages";
			header("Location:profil.php?id={$_SESSION['id']} ");
		}
	}
}
?>

<?php 
//Ne plus Partager les plusieurs stage dans Allstages
if(isset($_POST['buttonUnShare'])) {
	if(isset($_POST['id'])) {
		foreach ($_POST['id'] as $id) {
			$unshareStages = $bdd->prepare('UPDATE stages SET showall =0 WHERE id = :id'); 
			$unshareStages->bindValue('id', $id);
			$unshareStages->execute();

			$unshareStages = $bdd->prepare('SELECT * FROM stages');
			$unshareStages->execute();

			$_SESSION['message'] = "Les stages ne sont plus partagés dans Allstages";
			header("Location:profil.php?id={$_SESSION['id']} ");
		}
	}
}
?>

<?php 
if (isset($_POST['buttonDownload'])) 
	$file_folder = "membres/stages/";
    $filename = $_POST['filename'];
{
	$zip = new ZipArchive();// Load zip librairy	
	if ($zip->open("stages.zip", ZIPARCHIVE::CREATE)) 
	{
		foreach ($filename as $file) // membres/stages
		{
				$zip->addFile($file_folder.$file); // Adding filename into zip
			}
			$zip->close();
			//push to download the zip
			header('Content-Transfer-Encoding: binary');
			header('Content-Disposition: attachement; filename="stages.zip"');
			header('Content-type: application/zip');				
			readfile($zip_name);
					//Remove zip file is exists in temp path
			unlink($zip_name);
			exit();
		}
	}
	?> 
Modérateur
Et l'eau,

des <button>, ouais bof (direction.... le mur). Utilise plutôt des <a> avec une url distinct pour chaque cas. Ton url sera forcément composée d'une querystring ( http_build_query )

Aussi, je vois que tu te répètes. Or, ce n'est pas du tout une bonne manière de faire.
Modifié par niuxe (27 Mar 2020 - 08:55)