Liste déroulante option tout

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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

Eléphant du PHP | 72 Messages

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>
?>
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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' ";

Eléphant du PHP | 72 Messages

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
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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 ;)

Eléphant du PHP | 72 Messages

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:
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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>
?>

Eléphant du PHP | 72 Messages

07 mars 2006, 10:07

Salut Ryle !

T'es trop fort ! Ca marche !
Un grand merci ! :D
y a un début à tout !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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 :)