Je suis en stage de développement web, mais ayant appris par mes propres moyens (et gràce aux multiples forums et tutoriaux disponibles), il me manque des bases.
Je travaille actuellement sur la mise en page d'une liste de résultats (suite à une recherche ou à une exploration de dossiers). Ma page propose trois fonctions :
- Une fonction de tri (par date, par titre, etc.) en cliquant sur la colonne
- Une fonction de filtre (pour choisir les colonnes que l'on souhaite voir s'afficher)
- Une petite fonction qui me permet d'afficher ou de masquer le bloc de recherche (avec le formulaire et le texte explicatif)
Le problème : je ne peux pas cumuler ces trois fonctions. Si j'ai filtré une colonne et que je trie mes résultats, le filtrage sera annulé et ainsi de suite. Je le comprends facilement pour les $_GET, puisque les variables sont effacés de l'url pour laisser place aux nouvelle.
Auriez-vous une idée de comment réussir à combiner ces trois fonctions?
Merci d'avance
function mode_tri()
//pour indiquer quelle fonction de tri sera appelée par usort
//le mode de tri sera sauvé dans $_SESSION['tri']
{
$liste_tri=array('cod', 'titre', 'date', 'taille', 'etat');
if (!empty($_GET['tri']) && in_array($_GET['tri'], $liste_tri))
{
if($_SESSION['tri']==$_GET['tri'].'_c')
{
$_SESSION['tri']=$_GET['tri'].'_d';
}
else
{
$_SESSION['tri'] = $_GET['tri'].'_c';
}
}
elseif (empty($_GET['tri']) || $_GET['tri']!='encore')
{
$_SESSION['tri']='tri_liste';
}
}
<table>
<?php
echo '<FORM name="modcol" method="POST" action="'.$_SERVER['PHP_SELF'].'" />';
?>
<!--option d'affichage du nom -->
<tr id="colonne_titre">
<td class="option_filtre">
Afficher le nom des fichiers :
</td>
<td>
<?php
echo 'Oui : <INPUT type="radio" name="aff_nom" value="oui" checked="checked" />';
?>
</td>
<td>
<?php
echo 'Non : <INPUT type="radio" name="aff_nom" value="non"';
if (isset($_POST['aff_nom']))
{
if($_POST['aff_nom']=="non")
{
echo 'checked="checked" />';
}
else
{
echo ' />';
}
}
else
{
echo ' />';
}
?>
</td>
</tr>
<!--option d'affichage de la colonne Date -->
<tr id="colonne_etat">
<td class="option_filtre">
Afficher la colonne "Date" :
</td>
<td>
<?php
echo 'Oui : <INPUT type="radio" name="aff_date" value="oui" checked="checked" />';
?>
</td>
<td>
<?php
echo 'Non : <INPUT type="radio" name="aff_date" value="non"';
if (isset($_POST['aff_date']))
{
if($_POST['aff_date']=="non")
{
echo 'checked="checked" />';
}
else
{
echo ' />';
}
}
else
{
echo ' />';
}
?>
</td>
</tr>
<!--option d'affichage de la colonne Etat -->
<tr id="colonne_etat">
<td class="option_filtre">
Afficher la colonne "Etat" :
</td>
<td>
<?php
echo 'Oui : <INPUT type="radio" name="aff_etat" value="oui" checked="checked" />';
?>
</td>
<td>
<?php
echo 'Non : <INPUT type="radio" name="aff_etat" value="non"';
if (isset($_POST['aff_etat']))
{
if($_POST['aff_etat']=="non")
{
echo 'checked="checked" />';
}
else
{
echo ' />';
}
}
else
{
echo ' />';
}
?>
</td>
</tr>
<tr>
<td></td>
<td>
<INPUT type="submit" value="Mettre à jour" />
</td>
</tr>
</table>
function bouton_aff_recherche()
//$_GET['affichage']=='non' si le menu de recherche est fermé
//($_GET['affichage']=='oui') si le menu est ouvert
//la fonction doit ouvrir le menu s'il est fermé, ou le fermé s'il est ouvert
{
if (!isset($_GET['affichage']))
{
$_GET['affichage']='non';
$texte_option="Ouvrir le menu de recherche";
$_SESSION['class_bloc_rech']="invisible";
}
else
{
if($_GET['affichage']=='non')
{
$texte_option="Ouvrir le menu de recherche";
$_SESSION['class_bloc_rech']="invisible";
}
elseif($_GET['affichage']=='oui')
{
$texte_option="Fermer le menu de recherche";
$_SESSION['class_bloc_rech']="";
}
else
{
$texte_option="Ouvrir le menu de recherche";
$_SESSION['class_bloc_rech']="invisible";
}
}
echo '<a href="'.$_SERVER['PHP_SELF'].'?affichage=';
echo (($_GET['affichage']=='non') ? "oui": "non");
echo '">';
echo '<SPAN class="">
'.$texte_option.'
</SPAN>
</a>';
}