PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Formulaire de recherche avec case à cocher » 10-06-2011 19:57:27

Voici la fonction, c'est celle du site :


function displayNextPreviousButtons($limite,$total,$nombre,$page) {
$limiteSuivante = $limite + $nombre;
$limitePrecedente = $limite - $nombre;
echo  '<table><tr>'."\n";
if($limite != 0) {
        echo  '<td valign="top">'."\n";
        echo  '<form action="'.$page.'" method="GET">'."\n";
        echo  '<input type="submit" value="précédents">'."\n";
        echo  '<input type="hidden" value="'.$limitePrecedente.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
}
if($limiteSuivante < $total) {
        echo  '<td valign="top">'."\n";
        echo  '<form action="'.$page.'" method="GET">'."\n";
        echo  '<input type="submit" value="suivants">'."\n";
        echo  '<input type="hidden" value="'.$limiteSuivante.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
           
}
echo  '</tr></table>'."\n";
}
 

Que ce soit sur suivant ou sur précédent il renvoi sur la même page donc je ne comprend pas.
Déroulement de l'opération recherche :
1 - il clique sur les cases à cocher (page recherche),
2 - il arrive sur la page résultat avec les 20 premiers résultat au début du chargement pas de session, une fois la page chargé il crée une session avec la requête
3 - il clique sur suivant, même page résultat avec les x résultats suivant et après vérification ma requête est toujours existente
4- il clique sur précédent, toujours même page, et là il ne connait plus la session requête et donc plus de résultats !!!

Sur ma page résultat, j'ai une session_start(), il faut aussi savoir que j'ai une autre session qui est celle du membre connecté puisque il faut être membre pour pouvoir faire une recherche.
Et que j'ai une div qui se rafraîchit toute les 60 seconde pour vérifier si il n'y a pas d'autre membre connecté.
Donc une autre page où j'ai une session_start (), est ce que cela ne peux pas rentrer en conflit ?

#2 Re : Forum Général PHP » Formulaire de recherche avec case à cocher » 10-06-2011 19:57:27

Une solution serait donc de passer ma requête par un fichier ! cela serait-il une bonne solution ?

#3 Re : Forum Général PHP » Formulaire de recherche avec case à cocher » 10-06-2011 19:57:27

C'est à dire que dois-je faire pour qu'il puisse me garder ma session requête sachant que il ne change pas réellement de page il fait un post sur la même page.

Et pour des raisons évidente de sécurité je ne peux pas passer ma variable requête par l'url donc avez vous une solution à me proposer, je ne suis pas encore un spécialiste du php, je me débrouille pas trop mal mais là je suis un peu perdu !
Merci

#4 Forum Général PHP » Formulaire de recherche avec case à cocher » 10-06-2011 19:57:27

matsay81
Réponses : 6

Bonjour j'ai un petit souci sur un formulaire de recherche avec case à cocher.

Voilà j'ai un formulaire du genre :


<table width="710" align="left" cellpadding="5" style="font-family:Verdana, Geneva, sans-serif; font-size:10px;">
<form action="resultat.php" name="recherche_avance" method="post" enctype="multipart/form-data">
  <tr>
    <td>
      <table style="border:1px solid #CCCCCC;" width="100%" cellspacing="3" cellpadding="0" class="cadre" align="center">
        <tr height="40" class="tdPseudo" valign="middle"  style="font-size:14px; background-color:#666;">
          <td colspan="8" align="center"><strong>Vous cherchez</strong></td>
        </tr>
        <tr>
          <td width="20">
            <input type="checkbox" name="chrc[]" value="Couple" >
          </td>
          <td align="left" nowrap>
            <img src="images/couple.png" width="13" height="14" />
            Couples
          </td>
          <td width="20">
            <input type="checkbox" name="chrc[]" id="Femme" value="Femme" >
          </td>
          <td align="left" nowrap>
      <img src="images/femme.png" width="13" height="14" />
            Femmes
          </td>

          <td width="20">
            <input type="checkbox" name="chrc[]" value="Homme" >
          </td>

          <td align="left" nowrap>
          <img src="images/homme.png" width="13" height="14" />
            Hommes
          </td>
          <td>
            <input type="checkbox" name="chrc[]" id="Trans" value="Trans" >
          </td>
          <td align="left">
          <img src="images/trans.png" width="13" height="14" />
            Trans/Trav
          </td>
        </tr>
        <tr>
          <td width="20" height="22">
            <input type="checkbox" name="chrc[]" value="Couple dont F bi" >
          </td>
          <td align="left" nowrap>
           <img src="images/couple.png" width="13" height="14" />
            Couples F bi
          </td>
          <td width="20">
            <input type="checkbox" name="chrc[]" id="Femme_bi" value="Femme bi" >
          </td>
          <td align="left" nowrap>
          <img src="images/femme.png" width="13" height="14" />
            Femmes bi
          </td>
          <td width="20">
            <input type="checkbox" name="chrc[]" value="Homme bi" >
          </td>
          <td align="left" nowrap>
          <img src="images/homme.png" width="13" height="14" />
            Hommes bi
          </td>
          <td colspan="2"> 
          </td>
        </tr>
        <tr>
          <td width="20">
            <input type="checkbox" name="chrc[]" value="Couple dont H bi" >
          </td>
          <td align="left" nowrap>
          <img src="images/couple.png" width="13" height="14" />
            Couples H bi
          </td>
          <td width="20">
            <input type="checkbox" name="chrc[]" value="Femme Homo" >
          </td>
         <td align="left" nowrap>
         <img src="images/femme.png" width="13" height="14" />
            Femmes homo
          </td>
          <td width="20">
            <input type="checkbox" name="chrc[]" value="Homme homo" >
          </td>
          <td align="left" nowrap>
          <img src="images/homme.png" width="13" height="14" />
            Hommes homo
          </td>
          <td colspan="2"> 
          </td>
        </tr>
        <tr>
          <td width="20">
            <input type="checkbox" name="chrc[]" value="Couple les 2 bi" >
          </td>
          <td align="left" nowrap>
          <img src="images/couple.png" width="13" height="14" />
            Couples les 2 bi
          </td>
          <td colspan="2"> 
          </td>
          <td colspan="2"> 
          </td>
        </tr>
      </table>
    </td>
  </tr>
.....
</table>

 

Puis donc une fois validé je vais sur ma page résultat où je récupères mes données, jusque là pas de souci.

Ce sont des cases à cocher donc je construit ma requête en fonction et je crée une session pour garder ma requête en mémoire.


 // On initalise la requête et on valide le "WHERE" avec 1=1 qui renvoi tjrs "TRUE"      
  $query = "SELECT * FROM users WHERE 1=1";
  $and = ' AND ';

    // On parcourt le tableau cherche
  $query.=" AND sexe LIKE ";
  If (!isset ($_POST['chrc']))
  {
  $_POST['chrc'] ='';
  }
  else
  {
  $chrc[]=$_POST['chrc'];
  $chiffre = count($chrc)-1;
  for($i=0;$i<$chiffre;$i++)
    {
    if($i>0) $query.=" or ";
    $query.="  '%".$chrc[$i]."%' ";
    echo '<input type="texte" name="chrc[]" value="'.$chrc[$i].'">';
    }
  }
...
        $_SESSION['requete'] = $query;
  $requete = mysql_query($query) or die ("Requête invalide");
  $total = mysql_num_rows($requete);
  $query .= ' limit ' .$limite. ','.$nombre;
  $requete = mysql_query($query) or die ("Requête invalide"); 

 

le problème vient du fait que je veux mettre mon résultat sur plusieurs pages et là je bloque.

J'ai pris l'exemple du site avec la création d'une session pour garder en mémoire ma requête et là ça marche presque...

Effectivement quand je clique sur suivant ça marche et dès que je clique sur précédent il me perd ma session et me trouve plus la page.

Avez-vous une idée pour m'aider à avancer cela fait des jours que je bloque là dessus !

Merci

Pied de page des forums

Propulsé par FluxBB