Liste déroulante option tout

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Liste déroulante option tout

par Ryle » 07 mars 2006, 11:08

Y a pas de quoi :)

donc pour résumer, le
while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)) { 
  ... 
}
joue le rôle d'un SI tu as des résultats et TANT QUE tu as des résultats, alors il exécute le traitement (donc si pas de résultat, pas de traitement).
do {
  ...
} while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)) 
équivaut à FAIRE le traitement suivant et le faire TANT QUE tu as des résultats. Du coup il exécutait toujours le traitement au moins une fois, même si tu n'avais pas (ou plus) de résultats, ce qui pouvait donc être génant :)

par lafieau » 07 mars 2006, 10:07

Salut Ryle !

T'es trop fort ! Ca marche !
Un grand merci ! :D

par Ryle » 06 mars 2006, 18:42

bah en fait il semble considéré que ton $row_Recordset2 n'est pas renseigné... ou n'est pas un tableau... comme s'il n'y avait pas de résultat

Essaye le code ci-dessous, je t'ai transformé le do/while en while pour tester s'il y a des résultats et ai inclu la transformation des dates dans la boucle...
<?php
$num_mois=$_POST['num_mois'];//récupération de la variable num_mois
$evenement2=$_POST['evenement2'];
$departement2=$_POST['departement2'];

mysql_select_db($database_connexion, $connexion);
$query_rs2departement = "SELECT distinct departement FROM tb_evenements ORDER BY departement ASC";
$rs2departement = mysql_query($query_rs2departement, $connexion) or die(mysql_error());
$row_rs2departement = mysql_fetch_assoc($rs2departement);
$totalRows_rs2departement = mysql_num_rows($rs2departement);

mysql_select_db($database_connexion, $connexion);
$query_rs2evenement = "SELECT distinct evenement FROM tb_evenements ORDER BY evenement ASC";
$rs2evenement = mysql_query($query_rs2evenement, $connexion) or die(mysql_error());
$row_rs2evenement = mysql_fetch_assoc($rs2evenement);
$totalRows_rs2evenement = mysql_num_rows($rs2evenement);

$maxRows_Recordset2 = 5;
$pageNum_Recordset2 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset2'])) {
  $pageNum_Recordset2 = $HTTP_GET_VARS['pageNum_Recordset2'];
}
$startRow_Recordset2 = $pageNum_Recordset2 * $maxRows_Recordset2;

mysql_select_db($database_connexion, $connexion);

$query_Recordset2 = "SELECT evenement, descriptif, ville, datedebut, datefin ";
$query_Recordset2.= " FROM tb_evenements ";
$query_Recordset2.= " WHERE MONTH(datedebut)<=$num_mois AND MONTH(datefin)>=$num_mois ";
if(!empty($evenement2)) {// si un événement est séléctionné, on ne ramene que les enregistrements associés à celui-ci
  $query_Recordset2.= " AND evenement='$evenement2' ";
}
// tu pourras aussi envisager un if similaire ici, si un jour tu veux faire une recherche sur tous les départements
$query_Recordset2.= " AND departement='$departement2' ";

$query_limit_Recordset2 = sprintf("%s LIMIT %d, %d", $query_Recordset2, $startRow_Recordset2, $maxRows_Recordset2);
$Recordset2 = mysql_query($query_limit_Recordset2, $connexion) or die(mysql_error());
// traitement du résultat déplacé dans la boucle while

if (isset($HTTP_GET_VARS['totalRows_Recordset2'])) {
  $totalRows_Recordset2 = $HTTP_GET_VARS['totalRows_Recordset2'];
} else {
  $all_Recordset2 = mysql_query($query_Recordset2);
  $totalRows_Recordset2 = mysql_num_rows($all_Recordset2);
}
$totalPages_Recordset2 = ceil($totalRows_Recordset2/$maxRows_Recordset2)-1;

$queryString_Recordset2 = "";
if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $params = explode("&", $HTTP_SERVER_VARS['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_Recordset2") == false &&
        stristr($param, "totalRows_Recordset2") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_Recordset2 = "&" . implode("&", $newParams);
  }
}
$queryString_Recordset2 = sprintf("&totalRows_Recordset2=%d%s", $totalRows_Recordset2, $queryString_Recordset2);

<body>
<table width="600" height="371" border="0" align="center" cellspacing="3">
  <tr>
    <td width="90" colspan="5"> 
    	<br><br><br><br><br><br>
      <?php if ($totalRows_Recordset2 > 0) { // Show if recordset not empty ?>
      <table width="600" border="1" bordercolor="#FFFFFF" bgcolor="#FFFFFF" align="center" cellpadding="1">
        <tr bgcolor="#F5CB37">
          <td class="td1">Evénement</td>
          <td class="td1">Descriptif</td>
          <td class="td1">Ville</td>
          <td class="td1">Date d&eacute;but</td>
          <td class="td1">Date fin</td>
        </tr>
        <?php // Modification du do/while en while : 
        while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)) { // pour chaque ligne ramenée par $Recordset2
			$row_Recordset2['datedebut']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datedebut']);
			$row_Recordset2['datefin']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datefin']);
		 ?>
        <tr bgcolor="#DAECA4">
          <td class="td1"><?php echo $row_Recordset2['evenement']; ?></td>
          <td class="td1"><?php echo $row_Recordset2['descriptif']; ?></td>
          <td class="td1"><?php echo $row_Recordset2['ville']; ?></td>
          <td class="td1"><?php echo $row_Recordset2['datedebut']; ?></td>
          <td class="td1"><?php echo $row_Recordset2['datefin']; ?></td>
        </tr>
        <?php } ?>
      </table>
      <?php } 
      	else { // Show if recordset empty 
      ?>
      <p>D&eacute;sol&eacute; mais il n'y a pas de r&eacute;sultat correspondant &agrave; cette recherche</p>
      <?php } // Show if recordset empty ?> 
      <p>&nbsp;</p>
      <p class="td2">&nbsp; Enregistrements <?php echo ($startRow_Recordset2 + 1) ?> &agrave; <?php echo min($startRow_Recordset2 + $maxRows_Recordset2, $totalRows_Recordset2) ?> sur <?php echo $totalRows_Recordset2 ?>
      <table border="0" width="50%" align="center">
        <tr>
          <td class="td2" width="23%" align="center"> <?php if ($pageNum_Recordset2 > 0) { // Show if not first page ?>
            <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, 0, $queryString_Recordset2); ?>">Premier</a>
            <?php } // Show if not first page ?> </td>
          <td class="td2" width="31%" align="center"> <?php if ($pageNum_Recordset2 > 0) { // Show if not first page ?>
            <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, max(0, $pageNum_Recordset2 - 1), $queryString_Recordset2); ?>">Pr&eacute;c&eacute;dent</a>
            <?php } // Show if not first page ?> </td>
          <td class="td2" width="23%" align="center"> <?php if ($pageNum_Recordset2 < $totalPages_Recordset2) { // Show if not last page ?>
            <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, min($totalPages_Recordset2, $pageNum_Recordset2 + 1), $queryString_Recordset2); ?>">Suivant</a>
            <?php } // Show if not last page ?> </td>
          <td class="td2" width="23%" align="center"> <?php if ($pageNum_Recordset2 < $totalPages_Recordset2) { // Show if not last page ?>
            <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, $totalPages_Recordset2, $queryString_Recordset2); ?>">Dernier</a>
            <?php } // Show if not last page ?> </td>
        </tr>
      </table></p>
      </td>
  </tr>
</table>
?>

par lafieau » 06 mars 2006, 17:34

Salut Ryle !

la ligne 54 correspond à :
$row_Recordset2['datedebut']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datedebut']);
et du coup rien ne fonctionne, donc pour vérifier l'histoire de tranformation de date on dirait bien qu'il y a un rapport aussi. Mais bon aujourd'hui je capte pas grand chose, va falloir vraiment bien m'expliquer ! :shock:
Et non je n'ai pas picollé tout le week end !!! :roll:

par Ryle » 06 mars 2006, 17:18

C'est bizare, en fait il indique que tu utilises la variable row_Recordset2 alors que celle-ci n'a pas été déclaré/initialisé, alors que c'est l'une des premières choses qui est faite... Dans ton code, cela correspond à quelle ligne la 54 ? Tu peux regarder au dessus si le $row_Recordset2 = mysql_fetch_assoc($Recordset2); est bien présent ?

Sinon une petite remarque en passant, tu utilises des boucles do / while, c'est à dire faire / tant que. Cela implique au minimum un passage dans la boucle même s'il n'y a pas d'élément trouvés... ce serait mieux de faire une boucle while simple, dans laquelle si aucun élément n'est trouvé, il ne rentrera pas :)

Tu pourras également y placer ta transformation de date qui pour le moment ne doit fonctionner que sur la premiere ligne ;)

par lafieau » 06 mars 2006, 10:03

Salut !

Je suppose qu'il ne faut pas que je m'arrête là car ça m'affiche des messages d'erreur à la pelle comme :
Notice: Undefined variable: row_Recordset2 in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 54

Notice: Undefined index: datefin in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 55

Notice: Undefined variable: Recordset2 in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 152

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 152

Notice: Undefined index: evenement in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 146

Notice: Undefined index: descriptif in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 147

Notice: Undefined index: ville in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 148

par Ryle » 03 mars 2006, 18:24

hum.. déjà dans ta requête avec datedebut et datefin, il faut modifier pour le cas ou il n'y a pas d'événement sélectionné (donc tous) :
$query_Recordset2 = "SELECT evenement, descriptif, ville, datedebut, datefin ";
$query_Recordset2.= " FROM tb_evenements ";
$query_Recordset2.= " WHERE MONTH(datedebut)<=$num_mois AND MONTH(datefin)>=$num_mois ";
if(!empty($evenement2)) // si un événement est séléctionné, on ne ramene que les enregistrements associés à celui-ci
  $query_Recordset2.= " AND tb_evenements.evenement='$evenement2' "; 
// tu pourras aussi envisager un if similaire ici, si un jour tu veux faire une recherche sur tous les départements :)
$query_Recordset2.= " AND tb_evenements.departement='$departement2' ";

par lafieau » 03 mars 2006, 17:34

Et pis j'ai remarqué autre chose, ça m'affiche le message d'erreur précédent lorsqu'il ne trouve aucun résultat correspondant.

Bon le code (comme tu peux le savoir c'est sous dream, on ne rigole pas ! pas marrant du tout du tout !)
<?php
$num_mois=$_POST['num_mois'];//récupération de la variable num_mois
$evenement2=$_POST['evenement2'];
$departement2=$_POST['departement2'];

mysql_select_db($database_connexion, $connexion);
$query_rs2departement = "SELECT distinct departement FROM tb_evenements ORDER BY departement ASC";
$rs2departement = mysql_query($query_rs2departement, $connexion) or die(mysql_error());
$row_rs2departement = mysql_fetch_assoc($rs2departement);
$totalRows_rs2departement = mysql_num_rows($rs2departement);

mysql_select_db($database_connexion, $connexion);
$query_rs2evenement = "SELECT distinct evenement FROM tb_evenements ORDER BY evenement ASC";
$rs2evenement = mysql_query($query_rs2evenement, $connexion) or die(mysql_error());
$row_rs2evenement = mysql_fetch_assoc($rs2evenement);
$totalRows_rs2evenement = mysql_num_rows($rs2evenement);

$maxRows_Recordset2 = 5;
$pageNum_Recordset2 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset2'])) {
  $pageNum_Recordset2 = $HTTP_GET_VARS['pageNum_Recordset2'];
}
$startRow_Recordset2 = $pageNum_Recordset2 * $maxRows_Recordset2;

mysql_select_db($database_connexion, $connexion);
$query_Recordset2 = "SELECT evenement, descriptif, ville, datedebut, datefin FROM tb_evenements WHERE MONTH(datedebut)<=$num_mois AND MONTH(datefin)>=$num_mois AND tb_evenements.evenement='$evenement2' AND tb_evenements.departement='$departement2'";
$query_limit_Recordset2 = sprintf("%s LIMIT %d, %d", $query_Recordset2, $startRow_Recordset2, $maxRows_Recordset2);
$Recordset2 = mysql_query($query_limit_Recordset2, $connexion) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);

$row_Recordset2['datedebut']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datedebut']);
$row_Recordset2['datefin']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datefin']);

if (isset($HTTP_GET_VARS['totalRows_Recordset2'])) {
  $totalRows_Recordset2 = $HTTP_GET_VARS['totalRows_Recordset2'];
} else {
  $all_Recordset2 = mysql_query($query_Recordset2);
  $totalRows_Recordset2 = mysql_num_rows($all_Recordset2);
}
$totalPages_Recordset2 = ceil($totalRows_Recordset2/$maxRows_Recordset2)-1;

$queryString_Recordset2 = "";
if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $params = explode("&", $HTTP_SERVER_VARS['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_Recordset2") == false && 
        stristr($param, "totalRows_Recordset2") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_Recordset2 = "&" . implode("&", $newParams);
  }
}
$queryString_Recordset2 = sprintf("&totalRows_Recordset2=%d%s", $totalRows_Recordset2, $queryString_Recordset2);

<body>
<table width="600" height="371" border="0" align="center" cellspacing="3">
  <tr> 
    <td width="90" colspan="5"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"></div>
      <div align="center"></div>
      <div align="center"></div>
      <div align="center"></div>
      <?php if ($totalRows_Recordset2 > 0) { // Show if recordset not empty ?>
      <table width="600" border="1" bordercolor="#FFFFFF" bgcolor="#FFFFFF" align="center" cellpadding="1">
        <tr bgcolor="#F5CB37"> 
          <td class="td1">Evénement</td>
          <td class="td1">Descriptif</td>
          <td class="td1">Ville</td>
          <td class="td1">Date d&eacute;but</td>
          <td class="td1">Date fin</td>
        </tr>
        <?php do
		 { ?>
        <tr bgcolor="#DAECA4"> 
          <td class="td1"><?php echo $row_Recordset2['evenement']; ?></td>
          <td class="td1"><?php echo $row_Recordset2['descriptif']; ?></td>
          <td class="td1"><?php echo $row_Recordset2['ville']; ?></td>
          <td class="td1"><?php echo $row_Recordset2['datedebut']; ?></td>
          <td class="td1"><?php echo $row_Recordset2['datefin']; ?></td>
        </tr>
        <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>
      </table>
      <?php } // Show if recordset not empty ?> <?php if ($totalRows_Recordset2 == 0) { // Show if recordset empty ?>
      <p>D&eacute;sol&eacute; mais il n'y a pas de r&eacute;sultat correspondant 
        &agrave; cette recherche</p>
      <?php } // Show if recordset empty ?> <p>&nbsp;</p>
      <p class="td2">&nbsp; Enregistrements <?php echo ($startRow_Recordset2 + 1) ?> &agrave; <?php echo min($startRow_Recordset2 + $maxRows_Recordset2, $totalRows_Recordset2) ?> sur <?php echo $totalRows_Recordset2 ?> 
      <table border="0" width="50%" align="center">
        <tr> 
          <td class="td2" width="23%" align="center"> <?php if ($pageNum_Recordset2 > 0) { // Show if not first page ?>
            <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, 0, $queryString_Recordset2); ?>">Premier</a> 
            <?php } // Show if not first page ?> </td>
          <td class="td2" width="31%" align="center"> <?php if ($pageNum_Recordset2 > 0) { // Show if not first page ?>
            <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, max(0, $pageNum_Recordset2 - 1), $queryString_Recordset2); ?>">Pr&eacute;c&eacute;dent</a> 
            <?php } // Show if not first page ?> </td>
          <td class="td2" width="23%" align="center"> <?php if ($pageNum_Recordset2 < $totalPages_Recordset2) { // Show if not last page ?>
            <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, min($totalPages_Recordset2, $pageNum_Recordset2 + 1), $queryString_Recordset2); ?>">Suivant</a> 
            <?php } // Show if not last page ?> </td>
          <td class="td2" width="23%" align="center"> <?php if ($pageNum_Recordset2 < $totalPages_Recordset2) { // Show if not last page ?>
            <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, $totalPages_Recordset2, $queryString_Recordset2); ?>">Dernier</a> 
            <?php } // Show if not last page ?> </td>
        </tr>
      </table></p>
      </td>
  </tr>
</table>
?>

par Ryle » 03 mars 2006, 17:17

Groumpf !

C'est pour le moins étrange...

Tu peux poster le code de la page qui traite ton formulaire ? (avec la récupération des données, la requête sql qui recherche l'événement, etc.)

le tout dans une jolie balise [ php ] ;p

par lafieau » 03 mars 2006, 16:57

Ben ça fonctionne toujours par événement mais si j'opte pour tous il ne trouve aucun enregistrement et m'affiche en haut de la page l'erreur suivante :
Notice: Undefined index: datefin in c:\program files\easyphp1-8\www\site\evenementsdecouvertesresultat.php on line 53

Line 53 :
$row_Recordset2['datefin']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datefin']);
Ca se complique !

par Ryle » 03 mars 2006, 16:50

En principe non, ça ne devrait rien te changer dans tes résultats, la requête va simplement ramener les résultats pour tout événement confondu, au lieu des résultats pour un seul événement (celui sélectionné)

Donc en dehors de la quantité de résultats retournés, il ne devrait pas y avoir d'autres impacts.. on ne modifie que la requête de recherche :)

par lafieau » 03 mars 2006, 16:43

Oui mais...

Du coup pour ma page résultat ça change tout, non ? :roll:

par Ryle » 03 mars 2006, 16:17

oops, ma faute.. c'est empty(), pas isEmpty :)

par lafieau » 03 mars 2006, 16:11

Merci Ryle, mais maintenant j'ai ce message d'erreur :
Fatal error: Call to undefined function: isempty() in c:\program files\easyphp1-8\www\gitesnormandie\evenementsdecouvertes.php on line 30

par Ryle » 03 mars 2006, 15:47

Oops, sorry ! le mp avait été envoyé avant la création du topic :) Il est effectivement un peu plus détaillé que mon résumé ;)

Pour ton problème, en principe non, tu ne devrais pas avoir besoin de redéclarer ta variable... En principe tu fonctionnes sur un select evenement2 et une requête qui doit avoir une condition du type
"SELECT * FROM tb_evenements WHERE evenement = '$evenement2' (ou quelque chose du genre :))

Ton select devrait donc ressembler à ceci :
<select name="evenement2" id="evenement2"> 
  <option value="">Tous les événements</option>
  <?php 
    while ($row_rs2evenement = mysql_fetch_assoc($rs2evenement)) {  
  ?> 
      <option><?php echo $row_rs2evenement['evenement']?></option> 
      // le value n'est pas utile s'il a la meme valeur que le libellé
  <?php 
    } // j'ai inversé le do-while en un while simple (s'il n'y a pas d'élément il ne rentre pas dedans)
    ...
?> 
</select>
Et ta requête de recherche avec le filtre :
$sql = "SELECT * FROM taTable ";
if(!isEmpty($evenement2)) // si un evenement est sélectionné (non vide)
  $sql.= " WHERE evenement = $evenement2 "; // on ne ramene que sur l'événement
$sql.= " ORDER BY ... "; // l'order by vient toujours à la fin