8768 sujets

Développement web côté serveur, CMS

Bonjour,
je viens vous voir pour vous poser une question peut être simple mais je n'ai jamais toucher à ça et ne sais pas comment m'y prendre, en recherchant sur le net j'ai vu qu'il faudrait utiliser la variable $_SESSION, le problème étant que je ne sais pas comment mettre en place ça vis à vis de mes checkbox.

Le problème est:
Tout simplement ce code proviens de la page de gestion, donc j'affiche les demandes (d'affichage d'un message sur les panneaux lumineux de la ville/ je fait ce projet dans une mairie), j'en affiche donc 9 par page (comme vous le voyez ci-dessous).

J'ai deux checkbox (pour l'instant, pour le test) pour trier l'affichage.
que voici :

<form id="form_trier" name="form_trier" action="lumineux_gestion.php" method="POST">
<div class="form-inline mx-3 my-3">
<div class=" mx-3 my-3 text2"><strong>Trier par :</strong></div>
 <label class="checkbox mx-3 my-3"><input type="checkbox" class="trier1" id="trier1" name="trier1" value=""><strong class="text">Demande Valider</strong></label>
<label class="checkbox mx-3 my-3"><input class="trier2" id="trier2" name="trier2" type="checkbox" value=""><strong class="text">Demande En Attente</strong></label>
<button type="submit" id="btn_trier" name="btn_trier" class="btn m-2 mr-auto btn_trier"><i class="fas fa-check"></i></button>
</div>
<div id="retour"></div>
</form>




donc pour l'instant pas de soucis, le trie se fait, mais dès que je clique sur le submit les checkbox ne reste pas cocher et dès que je change de page rien n'est pris en compte.
Ce qui est plutôt logique oui, mais je ne vois pas comment résoudre le problème tout de même !


voici le code où j'affiche mes demande et où je met les condition de l'affichage (surement très mal fait d'ailleurs je ne sais vraiment pas comment m'y prendre).

le code:
<?php

$retour = '';        
$page = (!empty($_GET['page']) ? $_GET['page'] : 1);
$limite = 9;
$debut = ($page - 1) * $limite;




if(isset($_POST['trier1'])){
$query = 'SELECT SQL_CALC_FOUND_ROWS * FROM `demande` WHERE Validation ="1" ORDER BY Id_demande LIMIT :limite OFFSET :debut';
}else if(isset($_POST['trier2'])){
$query = 'SELECT SQL_CALC_FOUND_ROWS * FROM `demande` WHERE Validation ="0" ORDER BY Id_demande LIMIT :limite OFFSET :debut';
}else{
$query = 'SELECT SQL_CALC_FOUND_ROWS * FROM `demande` ORDER BY Id_demande LIMIT :limite OFFSET :debut';
}




$query = $connect->prepare($query);
$query->bindValue('debut', $debut, PDO::PARAM_INT);
$query->bindValue('limite', $limite, PDO::PARAM_INT);
$query->execute();

$resultFoundRows = $connect->query('SELECT found_rows()');
$nombredElementsTotal = $resultFoundRows->fetchColumn();


            while ($result  = $query->fetch()){ 
			
			$datechange = $result["Date_deb"];
			$Date = new DateTime($datechange);
	$LaDate = $Date->format("d/m/Y");
	

			    $retour .='<div class="ensemble">';
			    $retour .='<div class="solid mx-3 my-3 bg-light zoom">';
                $retour .='<div data-id='.$result["Id_demande"].'>';
				$retour .= '<strong><h4 class="text-center mx-2 my-2" style="color:#045e92;">Demande n°'.$result["Id_demande"].'</h4></strong>';
				$retour .= '<div class="res">';
				$retour .= '<br/>';
						$retour .= '<div class="text-center">';
                $retour .= '<div><strong>Nom et prénom : </strong>'.$result["Nom"].'</div>';
                $retour .= '<div><strong>Association : </strong>'.$result["Association"].'</div>';
				$retour .= '<div><strong>Dates : </strong>'.$LaDate.' à '.$result["Date_fin"].'</div>';
						$retour .= '</div>';
				$retour .= '<br/>';
				$retour .= '</div>';
				$retour .= '<div class="mx-auto text-center">';
			if ($result["Validation"] == 1 ) {          
                $retour .= '<button type="button" data-id="'.$result["Id_demande"].'" data-association="'.$result["Association"].'" data-nom="'.$result["Nom"].'" data-telephone="'.$result["Telephone"].'" data-courriel="'.$result["Courriel"].'" data-date="'.$result["Date"].'" data-deb="'.$result["Date_deb"].'" data-fin="'.$result["Date_fin"].'" data-message="'.$result["Message"].'" data-message2="'.$result["Message2"].'" data-message3="'.$result["Message3"].'" data-message4="'.$result["Message4"].'" data-message5="'.$result["Message5"].'" data-message6="'.$result["Message6"].'" data-message7="'.$result["Message7"].'" data-message8="'.$result["Message8"].'" data-validation="'.$result["Validation"].'" name="btn_editer" data-toggle="modal" data-target="#modal_editer" class="m-2 bg-info btn btn-info mr-auto btn_editer"><i class="fas fa-edit"></i> Editer</button>';
                }
			elseif($result["Validation"] == 0){
                $retour .= '<button type="button" data-id="'.$result["Id_demande"].'" data-association="'.$result["Association"].'" data-nom="'.$result["Nom"].'" data-telephone="'.$result["Telephone"].'" data-courriel="'.$result["Courriel"].'" data-date="'.$result["Date"].'" data-deb="'.$result["Date_deb"].'" data-fin="'.$result["Date_fin"].'" data-message="'.$result["Message"].'" data-message2="'.$result["Message2"].'" data-message3="'.$result["Message3"].'" data-message4="'.$result["Message4"].'" data-message5="'.$result["Message5"].'" data-message6="'.$result["Message6"].'" data-message7="'.$result["Message7"].'" data-message8="'.$result["Message8"].'" data-validation="'.$result["Validation"].'" name="btn_editer" data-toggle="modal" data-target="#modal_editer" class="m-2 bg-danger btn btn-danger mr-auto btn_editer"><i class="fas fa-edit"></i> Editer</button>';
                }
				$retour .= '<button type="button" data-id="'.$result["Id_demande"].'" data-courriel="'.$result["Courriel"].'" name="btn_supprimer" data-toggle="modal" data-target="#modal_supprimer" class="m-2 bg-dark btn btn-dark mr-auto btn_supprimer"><i class="fas fa-trash-alt"></i> Supprimer</button>';
				$retour .= '</div>';
				$retour .= '</div>';
				$retour .= '</div>';
				$retour .= '</div>';
				
                }

                $retour .= '</div>';
                $connect =null;

                echo ($retour);
?>



</div>

<div class="container-fluid row text-center pagination">
<div class="col-md-2"></div>

<div class="col-md-8 mx-3 my-3 text-center">
<?php
// Partie "Liens"
/* On calcule le nombre de pages */
$nombreDePages = ceil($nombredElementsTotal / $limite);

/* Si on est sur la première page, on n'a pas besoin d'afficher de lien
 * vers la précédente. On va donc l'afficher que si on est sur une autre
 * page que la première */
if ($page > 1):
    ?>
	
	
	
	<a class="pag" href="?page=<?php echo $page - 1; ?>"><i class="fas fa-angle-left"></i></a>  
	
	
	<?php
endif;

/* On va effectuer une boucle autant de fois que l'on a de pages */
for ($i = 1; $i <= $nombreDePages; $i++):
    ?>
	
	
	<a class="pag" href="?page=<?php echo $i; ?>"><?php echo $i; ?></a> 
	
	
	<?php
endfor;

/* Avec le nombre total de pages, on peut aussi masquer le lien
 * vers la page suivante quand on est sur la dernière */
if ($page < $nombreDePages):
    ?>
	
	
	 <a class="pag" href="?page=<?php echo $page + 1; ?>"><i class="fas fa-angle-right"></i></a>
	
	
	<?php
endif;
?>



Voilà, merci d'avance si vous avez une piste à me donner pour débuter là dedans ! (je suis débutant par ailleurs, désolée de mon manque de connaissance dans le domaine, je n'ai surement pas encore la bonne logique !)
Tu peux faire comme ça :


$sCheckedTrier1 = '';
if (isset($_POST['trier1'])) {
    $sCheckedTrier1 = ' checked';
}


<input type="checkbox" class="trier1" id="trier1" name="trier1" value=""<?php echo $sCheckedTrier1; ?>>
D'abord merci de la réponse !
Alors après le submit les checkbox reste bien checked déjà petite avancé !
mais en passant les pages toujours rien de pris en compte..
les checkbox se dé-check si je peux dire, et la requete n'est pas pris en compte, ça part direct vers le else.

Mais merci tout de même ça avance !
Avec les sessions :

<?php
session_start();

$sSelectededTrier0 = '';
$sSelectededTrier1 = '';
$sSelectededTrier2 = '';
$query  = '';
$retour = '';        
$page = (!empty($_GET['page']) ? $_GET['page'] : 1);
$limite = 9;
$debut = ($page - 1) * $limite;

if ( isset($_POST['trier'])  ) {
    $_SESSION['trier'] = $_POST['trier'];
} else {
    $_SESSION['trier'] = (!empty($_SESSION['trier'])) ? $_SESSION['trier'] : 0;
}

switch ($_SESSION['trier']) {
    case 1:
        $sSelectededTrier1 = ' selected';
       $query = 'SELECT SQL_CALC_FOUND_ROWS * FROM `demande` WHERE Validation ="1" ORDER BY Id_demande LIMIT :limite OFFSET :debut';
        break;
    case 2:
        $sSelectededTrier2 = ' selected';
        $query = 'SELECT SQL_CALC_FOUND_ROWS * FROM `demande` WHERE Validation ="0" ORDER BY Id_demande LIMIT :limite OFFSET :debut';
        break;
    default:
        $sSelectededTrier0 = ' selected';
        $query = 'SELECT SQL_CALC_FOUND_ROWS * FROM `demande` ORDER BY Id_demande LIMIT :limite OFFSET :debut';
        break;
}
 ....


Par contre, à mon avis, tu dois remplacer tes input checkbox par des input radio ou par un select vu que tu appliques un seul tri pour $query (soit le trier1, soit le trier2, soit pas de tri).

<select name="tri">
    <option value="0"<?php echo $sSelectededTrier0 ; ?>></option>
    <option value="1"<?php echo $sSelectededTrier1 ; ?>>Demande Valider</option>
    <option value="2"<?php echo $sSelectededTrier2 ; ?>>Demande En Attente</option>
</select>

Modifié par yiujia (08 Apr 2019 - 13:35)