Créer un bouton qui permet le téléchargement de plusieurs fichiers cochés.

Eléphant du PHP | 161 Messages

19 juin 2015, 08:35

Voici mon code

Code : Tout sélectionner

<?php require_once('config/config.inc.php'); require_once('config/settings.inc.php'); require_once('lib/functions.php'); if( AUTHENTIFICATION == 'on' ){ require_once('classes/User.php'); session_start(); // si l'utilisateur n'est pas authentifie, il est renvoye sur la page de login if( !isset($_SESSION['auth']) ){ redirect('login.php'); } } // par defaut, trier par... $orderby = 'nom'; // par defaut, tri ascendant $order = 'asc'; // par defaut, repertoire courant $repertoire_courant = BASE; if( isset($_GET['p']) && !empty($_GET['p']) ) { $repertoire_courant = secureDir($_GET['p']); $pos = strpos($repertoire_courant, BASE); if( (0 != $pos) or ($pos === false) ) { $repertoire_courant = BASE; } } ?> <!DOCTYPE html> <html lang="fr"> <head> <title>KINEBOX</title> <meta name="keywords" content="" /> <meta name="description" content="" /> <meta name="robots" content="all" /> <link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'> <meta charset='utf-8'> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- CSS --> <link rel="stylesheet" href="themes/original/css/normalize.css" /> <link rel="stylesheet" href="themes/original/css/screen.css" /> <link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="themes/original/css/menustyle.css" /> <!-- JQUERY --> <script src="js/jquery-1.11.0.min.js"></script> <!-- SHADOWBOX --> <script src="js/shadowbox-3.0.3/shadowbox.js"></script> <link rel="stylesheet" type="text/css" href="js/shadowbox-3.0.3/shadowbox.css" /> <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> <script src="js/menuscript.js"></script> <script> Shadowbox.init(); </script> <!-- SCRIPTS DIVERS --> <script> $(document).ready(function(){ $(".element1").hover( function () { $(this).addClass("hover"); }, function () { $(this).removeClass("hover"); } ); $(".repertoire").click(function () { $(".element1").removeClass("stay"); $(this).addClass("stay"); }); $(".image").click(function () { $(".element1").removeClass("stay"); $(this).addClass("stay"); }); $(".fichier").click(function () { $(".element1").removeClass("stay"); $(this).addClass("stay"); }); $(".inconnu").click(function () { $(".element1").removeClass("stay"); $(this).addClass("stay"); }); $(".repertoire").click(function(){ window.location.href = 'index.php?p='+$(this).attr("id").slice(8); }); $(".image").dblclick(function(){ window.location.href = 'ressource.php?id='+$(this).attr("id").slice(8); }); $(".fichier").dblclick(function(){ window.location.href = 'ressource.php?id='+$(this).attr("id").slice(8); }); $(".inconnu").dblclick(function(){ window.location.href = 'ressource.php?id='+$(this).attr("id").slice(8); }); }); </script> <script> function myFunction() { if( $('input[name=checkbox]').is(':checked') ){ var _checked = $(this).attr('id'); alert('checkbox: '+_checked); }); } else{ alert('Veuillez sélectionner au moins un fichier'); } } </script> </head> <body> <div class="contenu1"> <div id="sous-con"> <div id="logo"> <img alt="logokinebox" src="themes/original/design/logo kinebox.png" width="126" height="120"/> </div><!-- fin logo --> </div> <img class="kinetec" alt="kineteclogo" src="themes/original/images/kinetec logo.png" width="145" height="32" /> </div><!-- fin contenu --> <nav id="fildariane"> <div class="contenu"> <ul> <?php $noeud = 0; $t_fildariane = array(); foreach(getBreadcrumb($repertoire_courant) as $element) { $noeud++; $t_fildariane[] = $element; $p = implode("/", $t_fildariane); // j'affiche la racine if($noeud == 1) { ?> <li class="racine"><a href="index.php"><img alt="racine" src="themes/original/images/logo kinebox.png" width="16" height="16" />Home / Accueil</a></li> <?php $nb_elements = count(getBreadcrumb($repertoire_courant)); if($nb_elements > 0) { ?> <li><img alt=">" src="themes/original/images/arrow.gif" /></li> <?php } ?> <?php } else { echo "<li><a href=\"index.php?p=" , rawurlencode($p) , "&orderby=nom&order=". $order ."\">" , normalizeString($element) , "</a></li>"; // s'il n'y a pas d'elements enfants, on n'affiche pas le marqueur if(hasChildren($p)) { ?> <li><img alt=">" src="./themes/original/images/arrow.gif" /></li> <?php } } } ?> </ul> </div><!-- fin contenu --> </nav> <div id="vues"> <div class="contenu"> <ul> <li id="vue_courante"><a href="#">Mosaïque</a></li> <li><a href="index2.php?p=<?php echo rawurlencode($repertoire_courant) ?>">Détail</a></li> <li><a href="index3.php?p=<?php echo rawurlencode($repertoire_courant) ?>">Grandes icônes</a></li> </ul> </div><!-- fin contenu --> </div><!-- fin vues --> <div id="corps"> <div class="contenu"> <div id="arborescence"> <div id="titre"> <span style="color:black; text-align:center;"><?php echo $_SESSION['auth'] ?><hr width="110"></span> </div> <br/> <div id="bouttontelecharger"> <button onclick="myFunction()" name="telecharger" class="telecharger"> <br/> </div> <bR/> <bR/> <ul> <li class="racine"> <?php if(AUTHENTIFICATION == 'on') { ?> <div id="logout"> <a title="Se d&eacute;connecter" href="deconnexion.php" onclick="return confirm('Êtes-vous sûr(e) de vouloir vous d\351connecter ?')"><img alt="se deconnecter" src="themes/original/images/logout.png" /> Exit / Quitter</a> </div><!--fin logout --> <?php } ?> </li> <li class="racine"><a href="#popup2" class="button"><img src="themes/original/images/clé.png" width="20" height="20" /> Settings / Paramétres</a></li> </ul> <p id="demo"></p> <div id="popup2" class="overlay2" style="text-align: center;"> <div class="popup2"> <a class="close" href="#">x</a> <div class="contentpup"> <h1 style="color: black;">Settings of account / Paramètres de compte<hr width="250px"/></h1> <br/> <br/> <div id="anglais"> <?php echo $_SESSION['auth'] ?>,<img src="themes/original/images/en.png" style="float:right;" width="24" height="24"/> <bR/> <bR/> The sections below allow you to change your password, but also to delete your account. </div> <div id="français"> <?php echo $_SESSION['auth'] ?>,<img src="themes/original/images/fr.png" style="float:right;" width="24" height="24"/> <bR/> <bR/> Les différentes rubriques ci-après vous permettront de modifier votre mot de passe, mais aussi de supprimer votre compte. </div> <br/> <div id="modif"> <?php session_start() ?> <?php include('config.php'); ini_set('display_errors','off'); if(isset($_SESSION['auth'])) { $identifiant = $_SESSION['auth']; if(isset($_POST['valider'])) { $prenom= $_POST['prenom']; $nom= $_POST['nom']; $mdp= $_POST['mdp']; $newmdp= $_POST['newmdp']; $repeatnewmdp= $_POST['repeatnewmdp']; if($mdp&&$newmdp&&$repeatnewmdp) { if($newmdp==$repeatnewmdp) { $mdp= md5($mdp); $newmdp= md5($newmdp); include('config.php'); $sql= mysql_query("SELECT * FROM users WHERE prenom='$prenom' AND nom='$nom' AND mdp='$mdp'"); $rows= mysql_num_rows($sql); if ($rows==1) { $nouveaumdp= mysql_query("UPDATE users SET mdp='$newmdp' WHERE prenom='$prenom' AND nom='$nom'"); echo '<script type="text/javascript">alert("Votre mot de passe a été changé.");</script>'; } else { echo '<script type="text/javascript">alert("Votre ancien mot de passe est incorrect.");</script>'; } } else { echo '<script type="text/javascript">alert("Veuillez répéter le nouveau mot de passe correctement.");</script>'; } } else { echo '<script type="text/javascript">alert("Veuillez saisir tous les champs.");</script>'; } } echo '<div id="cssmenu"> <ul> <li class="has-sub"><a href="#"><span>UPTDATE PASSWORD / MODIFICATION DU MOT DE PASSE</span></a> <ul> <li> <span> <form method="POST" action="#"> <label>First name<br/>Prénom</label> <br /> <input type="text" name="prenom"> <br /> <br /> <label>Name<bR/>Nom</label> <br /> <input type="text" name="nom"> <br /> <br /> <label>Every password<bR/>Ancien mot de passe</label> <br /> <input type="password" name="mdp"> <br /> <br /> <label>New password<bR/>Nouveau mot de passe</label> <br /> <input type="password" name="newmdp"> <br /> <br /> <label>Swearing<bR/>Confirmation</label> <br /> <input type="password" name="repeatnewmdp"> <br /> <br /> <input class="myButton4" type="submit" name="valider" value="I CHANGE ! / JE CHANGE !"> <br /> <br /> </form> </span> </li> </ul> </li> <li class="has-sub"><a href="validation.php"><span>DELETE ACCOUNT / SUPPRESSION DU COMPTE</span></a> </li> </ul> </div> '; } ?> </div> </div> </div> </div> <div id="popup3" class="overlay" style="text-align: center;"> <div class="popup"> <a class="close" href="#">×</a> <div class="content"> </div> </div> </div> </div> <div id="contenu_repertoire"> <?php $contenu_repertoire = listDir($repertoire_courant); if(isset($contenu_repertoire) && !empty($contenu_repertoire) ){ foreach($contenu_repertoire as $element) { switch($element['type']) { case 'repertoire': ?> <div class="element1 repertoire" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <div class="element1_1"><img alt="repertoire" src="themes/original/images/48/repertoire.png" /></div> <div class="element1_2"><span> <?php echo normalizeString($element['nom']) ?></span></div> <div class="element1_3"><span>Dossier de fichiers</span></div> <div class="element1_4">&nbsp;</div> </div> <?php break; case 'fichier': if( in_array(strtolower($element['extension']), $t_extensions_reconnues) ) { ?> <div class="element1 fichier" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom.extension']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <form action="#"> <input type="checkbox" name="checkbox" id="<?php echo shortenString(normalizeString($element['nom.extension']), 35) ?>" style="float:right;"> </form> <div class="element1_1"><img alt="fichier" src="themes/original/images/48/<?php echo strtolower($element['extension']) ?>.png" /></div> <div class="element1_2"><span><?php echo shortenString(normalizeString($element['nom.extension']), 35) ?></span></div> <br/> <div class="element1_3"><span><?php echo $t_extensions[strtolower($element['extension'])]?></span> <span><?php echo formatSize($element['taille'])?></div> </div> <?php } break; case 'image': ?> <div class="element1 image" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom.extension']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <form action="#"> <input type="checkbox" name="checkbox" id="<?php echo shortenString(normalizeString($element['nom.extension']), 35) ?>" style="float: right;"> </form> <div class="element1_1"><img alt="image" src="themes/original/images/48/<?php echo strtolower($element['extension']) ?>.png" /></div> <div class="element1_2"><span><?php echo shortenString(normalizeString($element['nom.extension']), 35) ?></span></div> <div class="element1_3"><span><?php echo $t_extensions[strtolower($element['extension'])]?></span></div> <div class="element1_4"><span><?php echo formatSize($element['taille'])?></span></div> </div> <?php break; } } } else { ?> <img id="info" alt="[i]" src="themes/original/images/info.png" /> Répertoire vide <?php } ?> </div><!-- fin contenu_repertoire --> </div><!-- fin contenu --> </div><!-- fin corps --> <footer id="pieddepage"> <div class="contenu"> <ul> </ul> </div><!-- fin contenu --> </footer> </body> </html>

Eléphant du PHP | 161 Messages

19 juin 2015, 08:42

Pour l'instant je cherche à savoir comment afficher l'identifiant de mes checkboxs pour voir si les fichiers choisis sont les bons et se différencient. On peut le voir avec le deuxième script javascript dans le head.

Code : Tout sélectionner

<script> function myFunction() { if( $('input[name=checkbox]').is(':checked') ){ var _checked = $(this).attr('id'); alert('checkbox: '+_checked); }); } else{ alert('Veuillez sélectionner au moins un fichier'); } } </script>
[...]

Code : Tout sélectionner

<div id="contenu_repertoire"> <?php $contenu_repertoire = listDir($repertoire_courant); if(isset($contenu_repertoire) && !empty($contenu_repertoire) ){ foreach($contenu_repertoire as $element) { switch($element['type']) { case 'repertoire': ?> <div class="element1 repertoire" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <div class="element1_1"><img alt="repertoire" src="themes/original/images/48/repertoire.png" /></div> <div class="element1_2"><span> <?php echo normalizeString($element['nom']) ?></span></div> <div class="element1_3"><span>Dossier de fichiers</span></div> <div class="element1_4">&nbsp;</div> </div> <?php break; case 'fichier': if( in_array(strtolower($element['extension']), $t_extensions_reconnues) ) { ?> <div class="element1 fichier" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom.extension']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <form action="#"> <input type="checkbox" name="checkbox" id="<?php echo shortenString(normalizeString($element['nom.extension']), 35) ?>" style="float:right;"> </form> <div class="element1_1"><img alt="fichier" src="themes/original/images/48/<?php echo strtolower($element['extension']) ?>.png" /></div> <div class="element1_2"><span><?php echo shortenString(normalizeString($element['nom.extension']), 35) ?></span></div> <br/> <div class="element1_3"><span><?php echo $t_extensions[strtolower($element['extension'])]?></span> <span><?php echo formatSize($element['taille'])?></div> </div> <?php } break; case 'image': ?> <div class="element1 image" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom.extension']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <form action="#"> <input type="checkbox" name="checkbox" id="<?php echo shortenString(normalizeString($element['nom.extension']), 35) ?>" style="float: right;"> </form> <div class="element1_1"><img alt="image" src="themes/original/images/48/<?php echo strtolower($element['extension']) ?>.png" /></div> <div class="element1_2"><span><?php echo shortenString(normalizeString($element['nom.extension']), 35) ?></span></div> <div class="element1_3"><span><?php echo $t_extensions[strtolower($element['extension'])]?></span></div> <div class="element1_4"><span><?php echo formatSize($element['taille'])?></span></div> </div> <?php break; } } } else { ?> <img id="info" alt="[i]" src="themes/original/images/info.png" /> Répertoire vide <?php } ?> </div><!-- fin contenu_repertoire -->

Eléphant du PHP | 161 Messages

19 juin 2015, 08:49

Ensuite hunomina972 je reviendrai vers ta proposition. Mais joindre un id en php à du javascript c'est là où ça se complique.

Eléphant du PHP | 88 Messages

19 juin 2015, 08:51

Ok att deux min j essaye de m y retrouver :D
Le temps donne sa légitimité à l'existence...

Eléphant du PHP | 161 Messages

19 juin 2015, 08:51

Merci c'est super gentil !!

Eléphant du PHP | 161 Messages

19 juin 2015, 09:00

D'ailleurs mon script javascript ne fonctionne pas.

Eléphant du PHP | 88 Messages

19 juin 2015, 09:00

C'est trop le bazard là, le code fais 400 lignes, je le connais pas et tu me rajoute des parties qui n ont rien a voir (comme l'identification)
Est ce que tu peut me simplifier ça plise :)
Sinon pour vérifier si un checkbox a été cocher en php il faut faire ça :
<?php

if (isset($_POST['cacher_a_cocher'])) {
	// Tu le stoque dans un variable pour dire qu'il a bien était cocher
	// Ou tu va directement le chercher via un lien
}
else {
	// Il ne se passe rien :/
}
	// Et tu fais ça pour tout les documents avec une boucle while ou for a toi de voir ;)
?>
Le temps donne sa légitimité à l'existence...

Eléphant du PHP | 161 Messages

19 juin 2015, 09:16

Autant pour moi, c'est vrai.
Je reprends.
Ceci ci-après, est la partie qui affiche tout le contenu du répertoire "documents" du site internet dans "localhost/KINEBOX/documents... Bref.
Rappelons que dans ce répertoire, je peux y glisser des dossiers comme je veux, cela ne dépend pas d'une ligne de code, cela dépend de moi, et de ce que je glisse dans ce dossier.
Et pour pouvoir en télécharger plusieurs, j'ai mis des checkbox.

Code : Tout sélectionner

<div id="contenu_repertoire"> <?php $contenu_repertoire = listDir($repertoire_courant); if(isset($contenu_repertoire) && !empty($contenu_repertoire) ){ foreach($contenu_repertoire as $element) { switch($element['type']) { case 'repertoire': ?> <div class="element1 repertoire" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <div class="element1_1"><img alt="repertoire" src="themes/original/images/48/repertoire.png" /></div> <div class="element1_2"><span> <?php echo normalizeString($element['nom']) ?></span></div> <div class="element1_3"><span>Dossier de fichiers</span></div> <div class="element1_4">&nbsp;</div> </div> <?php break; case 'fichier': if( in_array(strtolower($element['extension']), $t_extensions_reconnues) ) { ?> <div class="element1 fichier" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom.extension']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <form action="#"> <input type="checkbox" name="checkbox" id="<?php echo shortenString(normalizeString($element['nom.extension']), 35) ?>" style="float:right;"> </form> <div class="element1_1"><img alt="fichier" src="themes/original/images/48/<?php echo strtolower($element['extension']) ?>.png" /></div> <div class="element1_2"><span><?php echo shortenString(normalizeString($element['nom.extension']), 35) ?></span></div> <br/> <div class="element1_3"><span><?php echo $t_extensions[strtolower($element['extension'])]?></span> <span><?php echo formatSize($element['taille'])?></div> </div> <?php } break; case 'image': ?> <div class="element1 image" id="element_<?php echo rawurlencode($repertoire_courant."/".$element['nom.extension']), "&orderby=nom&order=", $order ?>" title="<?php echo $element['nom.extension'] ?>"> <form action="#"> <input type="checkbox" name="checkbox" id="<?php echo shortenString(normalizeString($element['nom.extension']), 35) ?>" style="float: right;"> </form> <div class="element1_1"><img alt="image" src="themes/original/images/48/<?php echo strtolower($element['extension']) ?>.png" /></div> <div class="element1_2"><span><?php echo shortenString(normalizeString($element['nom.extension']), 35) ?></span></div> <div class="element1_3"><span><?php echo $t_extensions[strtolower($element['extension'])]?></span></div> <div class="element1_4"><span><?php echo formatSize($element['taille'])?></span></div> </div> <?php break; } } } else { ?> <img id="info" alt="[i]" src="themes/original/images/info.png" /> Répertoire vide <?php } ?> </div><!-- fin contenu_repertoire -->
Comme on le remarque, pour l'affichage, il s'agit d'un switch, et donc de cas (<case>). On retrouve un cas de répertoires, de fichiers et d'images. Et à chaque n'apparaît qu'une seule fois ce bout de code pour chaque cas :

Code : Tout sélectionner

<form action="#"> <input type="checkbox" name="checkbox" id="<?php echo shortenString(normalizeString($element['nom.extension']), 35) ?>" style="float: right;"> </form>
J'ai ensuite mis dans le <head> un script :

Code : Tout sélectionner

<script> function myFunction() { if( $('input[name=checkbox]').is(':checked') ){ var _checked = $(this).attr('id'); alert('checkbox: '+_checked); } else{ alert('Veuillez sélectionner au moins un fichier'); } } </script>
Celui-ci s'exécute bien, mais lorsque je veux afficher l'id des checkboxs, il m'affiche qu'une ligne (alors que si je coche deux fichiers il est censé m'afficher deux lignes dans la logique des choses... déjà ici je redoute quelque chose) et ce message est checkbox : undefined ; cela veut dire qu'il ne prend pas en compte l'id en php comme vous le voyez.

Si je ne peux pas déjà voir que les checkboxs cochées correspondent bien aux fichiers cochés, je ne peux pas poursuivre, car il ne faudrait pas que mon visiteur télécharge x fois un seul fichier.

Eléphant du PHP | 161 Messages

19 juin 2015, 09:27

Dois-je insérer le php dans le javascript ou supprimer le javascript et le remplacer par le php ?

Eléphant du PHP | 88 Messages

19 juin 2015, 09:31

Si tu parle des script que je t'ai donné, non il faut que tu ne prenne que le script php vu que tu fais ton code en php et il faut donc que tu le teste avec tout les doc que tu affiche dans les checkbox ;) Il va donc verifier si et quelles checkbox ont été coché lorsque tu clique sur le submit bien sure il faut que tu mette ton formulaire en POST et non en GET ;)
Le temps donne sa légitimité à l'existence...

Eléphant du PHP | 161 Messages

19 juin 2015, 09:50

"il faut donc que tu le teste avec tout les doc que tu affiche dans les checkbox" Ta phrase me fait un peu peur en fait...

Eléphant du PHP | 88 Messages

19 juin 2015, 09:51

att je suis en train de te faire un exemple ;)
Le temps donne sa légitimité à l'existence...

Eléphant du PHP | 161 Messages

19 juin 2015, 09:55

Pour chaque cas, j'ai modifié mon formulaire comme suit :

Code : Tout sélectionner

<form name="test" method="post" action="#"> <input type="checkbox" name="checkbox" id="<?php $element['nom.extension'] ?>" style="float:right;"/> </form>

Eléphant du PHP | 161 Messages

19 juin 2015, 09:56

Code : Tout sélectionner

<form name="test" method="post" action="#"> <input type="checkbox" name="checkbox" id="<?php $element['nom.extension'] ?>" style="float:right;"/> </form>
**

Eléphant du PHP | 88 Messages

19 juin 2015, 10:28

Voila :)
<?php
$array = array( //ce tableau liste tout les documents et leurs liens
	'0'=>array('nom_du_doc' => 'doc1',
				'lien_du_doc' => 'http://.../1'),
    '1'=>array('nom_du_doc' => 'doc2',
				'lien_du_doc' => 'http://.../2'),
    '2'=>array('nom_du_doc' => 'doc3',
				'lien_du_doc' => 'http://.../3'),
    '3'=>array('nom_du_doc' => 'doc4',
				'lien_du_doc' => 'http://.../4')
    );
for ($i=0; $i < count($array); $i++) {
	if (isset($_POST[$array[$i]['nom_du_doc']])) {
	  // Tu le stoque dans un variable pour dire qu'il a bien était cocher
	  // Ou tu va directement le chercher via un lien
	  // là juste j'affiche le lien
		echo $array[$i]['lien_du_doc'].'<br/>';

	}
	else {	}
}
?>
	<form action="" method="post">
<?php		
		for ($i=0; $i < count($array); $i++) {
			echo '<input type="checkbox" name="'.$array[$i]['nom_du_doc'].'"/>
			<label for="'.$array[$i]['nom_du_doc'].'">: '.$array[$i]['nom_du_doc'].'</label><br/>';
		}
?>
		<input type="submit">
	</form>
Tu a juste a faire en sorte que le tableau soit remplis par d'une part le nom du doc que tu veut afficher et son lien absolu ;)
Le temps donne sa légitimité à l'existence...