Problème sur des cases à cocher

Eléphant du PHP | 72 Messages

13 juil. 2006, 09:58

Bonjour à tous !
Comme le dit si bien le titre j'ai des soucis avec les cases à cocher.
J'ai 3 cases à cocher pour 3 départements distincts.
Mon problème c'est même quand je ne coche qu'une seule case il m'affiche un tableau de tous les départements.
Voici le code :
mysql_select_db($database_connexion, $connexion);
$query_Recordset1 = " SELECT decouvertes, descriptif, villedec, departementdec ";
$query_Recordset1.= " FROM tb_decouvertes ";
if(isSet($_POST['departement'])) {
  $listeDepartementCoches = "";
	foreach($_POST['departement'] as $departement){
	if($listeDepartementCoches != "")
	$listeDepartementCoches.= ",";
	$listeDepartementCoches.= "'" .$departement ."'";
	}
  $query_Recordset1.= " WHERE departementdec IN (".$listeDepartementCoches.")"; 
} 
$query_Recordset1.= " LIMIT ".$startRow_Recordset1.", ". $maxRows_Recordset1;
echo $query_Recordset1;
$Recordset1 = mysql_query($query_limit_Recordset1, $connexion) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
Merci d'avance !
y a un début à tout !

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

14 juil. 2006, 19:25

salut,

peut tu nous montrer le formulaire ?

regarde le contenude de $_POST['departement'] ( var_dump ou print_r ).

affiche ta requete avant le query pour voir si elle est conforme a ce que tu attend ( montre nous ce résultat).


@+

Eléphant du PHP | 72 Messages

17 juil. 2006, 08:44

Bonjour !
Voici le formulaire :
<form action="casesacocherresultat1.php" method="post" name="formdepart" id="formdepart"> 
  <p> 
    Calvados <input name="departement[]" type="checkbox" id="calvadosdep" value="calvados"> 
    <br>Manche <input name="departement[]" type="checkbox" id="manchedep" value="manche"> 
    <br>Orne <input name="departement[]" type="checkbox" id="ornedep" value="orne"> 
  </p> 
  <p> 
    <input type="submit" name="Submit3" value="Envoyer"> 
  </p> 
</form>
y a un début à tout !

Eléphant du PHP | 72 Messages

19 juil. 2006, 12:40

Salut à tous !
Même pas une p'tite idée sur le problème ? :(
Manque des éléments peut-être ?
y a un début à tout !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 juil. 2006, 13:22

Salut,

Tu peux simplifier le code aevc implode() à la place de ceci:
$listeDepartementCoches = "";
    foreach($_POST['departement'] as $departement){
    if($listeDepartementCoches != "")
    $listeDepartementCoches.= ",";
    $listeDepartementCoches.= "'" .$departement ."'";
    }
  $query_Recordset1.= " WHERE departementdec IN (".$listeDepartementCoches.")";
=>
$listeDepartementCoches=implode("','",$_POST['departement']);
$query_Recordset1.= " WHERE departementdec IN ('".$listeDepartementCoches."')";
Affiche la requête générée pour verifier qu'elle correspond aux attentes.

ensuite affiche le contenu de $_POST['departement'] avec:
echo "<pre>";
print_r($_POST['departement']);
echo "</pre>";
qui ne devrait contenir que ls cases cochées

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 72 Messages

19 juil. 2006, 15:56

Salut Truc !
Bon j'ai essayé de faire les modifications comme tu m'as fait voir (j'suis pas très sûr d'avoir tout fait comme il faut ! :oops: )
Mais bon ça m'affiche ceci :
SELECT decouvertes, descriptif, villedec, departementdec FROM tb_decouvertes WHERE departementdec IN ('calvados') LIMIT 0, 10
Array
(
[0] => calvados
)
donc ça correspond bien à la case cochée, mais le problème persiste au niveau de mon tableau où il m'affiche l'ensemble des données pour tous les départements.
y a un début à tout !

Eléphant du PHP | 258 Messages

19 juil. 2006, 16:31

Et si apres departement[] tu enleve les [] ca donne quoi?

Invité
Invité n'ayant pas de compte PHPfrance

19 juil. 2006, 16:41

A 2501gigi :
donc j'ai supprimé les [] et ça m'affiche ceci :
Warning: implode(): Bad arguments. in c:\program files\easyphp1-8\www\site\casesacocherresultat1.php on line 62
SELECT decouvertes, descriptif, villedec, departementdec FROM tb_decouvertes WHERE departementdec IN ('') LIMIT 0, 10
calvados

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

19 juil. 2006, 16:48

La requête est correcte, ce qui est bizare c'est que les résultats récupérés ne tiennent pas compte du WHERE...

un doute massai (ouais, je sais, elle est nulle, mais y fait chaud ! ;p) c'est bien $row_Recordset1 que tu utilises ensuite pour afficher tes résultats ?

Tu devrais pas avoir un
while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {
 ... // affichage du tableau de résultats
}
:?: :)

Invité
Invité n'ayant pas de compte PHPfrance

20 juil. 2006, 09:46

Salut Ryle !
J'ai bien un $row_Recordset1 pour afficher mes résultats, mais si je remplace par ta proposition j'ai toujours le même message d'erreur, mais du coup dans le tableau y a plus rien ! :?
Pas facile tout ça !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 juil. 2006, 10:31

Quelle est donc la requête exécutée par mysql_query ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 72 Messages

20 juil. 2006, 10:54

Salut Truc !
Comme je travaille avec dream et que celui-ci génère beaucoup de code et que je suis bien loin de tout comprendre, j'ai tout de même l'impression qu'il y a des choses inutiles dans mon code, voici le code :
<?php require_once('Connections/connexion.php'); ?>
<?php
$currentPage = $HTTP_SERVER_VARS["PHP_SELF"];

$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset1'])) {
  $pageNum_Recordset1 = $HTTP_GET_VARS['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;

mysql_select_db($database_connexion, $connexion);
$query_Recordset1 = "SELECT * FROM tb_decouvertes ORDER BY decouvertes ASC";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $connexion) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);

if (isset($HTTP_GET_VARS['totalRows_Recordset1'])) {
  $totalRows_Recordset1 = $HTTP_GET_VARS['totalRows_Recordset1'];
} else {
  $all_Recordset1 = mysql_query($query_Recordset1);
  $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;

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

$maxRows_Recordset1 = 10;
$pageNum_Recordset1 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset1'])) {
  $pageNum_Recordset1 = $HTTP_GET_VARS['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;

mysql_select_db($database_connexion, $connexion);
$query_Recordset1 = " SELECT decouvertes, descriptif, villedec, departementdec ";
$query_Recordset1.= " FROM tb_decouvertes ";
if(isSet($_POST['departement'])) { 
} 
	
(".$listeDepartementCoches.")"; 
  $listeDepartementCoches=implode("','",$_POST['departement']); 
$query_Recordset1.= " WHERE departementdec IN ('".$listeDepartementCoches."')";

$query_Recordset1.= " LIMIT ".$startRow_Recordset1.", ". $maxRows_Recordset1;
echo $query_Recordset1;
echo "<pre>"; 
print_r($_POST['departement']); 
echo "</pre>";
$Recordset1 = mysql_query($query_limit_Recordset1, $connexion) or die(mysql_error());
//$row_Recordset1 = mysql_fetch_assoc($Recordset1);
while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) { 

if (isset($HTTP_GET_VARS['totalRows_Recordset1'])) {
  $totalRows_Recordset1 = $HTTP_GET_VARS['totalRows_Recordset1'];
} else {
  $all_Recordset1 = mysql_query($query_Recordset1);
  $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
}
?>
y a un début à tout !

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

20 juil. 2006, 11:07

Il doit manquer un p'tit bout de code vu que toute la fin est considérée comme du texte, mais sinon le soucis vient de là :
$Recordset1 = mysql_query($query_limit_Recordset1, $connexion) or die(mysql_error()); 
Tu exécutes ta requête précédente ($query_limit_Recordset1) au lieu d'exécuter la nouvelle $query_Recordset1 :)

Eléphant du PHP | 72 Messages

20 juil. 2006, 11:34

Salut Ryle ! :lol:
Oui il doit certainement manquer un bout de code, désolée j'ai voulu enlever des choses et malencontreusement j'en ai trop viré.
Sinon comment je pourrais faire par rapport à ce que tu viens de me dire ?
y a un début à tout !

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

20 juil. 2006, 11:38

Tu as juste à changer à ce niveau là :
echo "<pre>"; 
print_r($_POST['departement']); 
echo "</pre>"; 
$Recordset1 = mysql_query($query_limit_Recordset1, $connexion) or die(mysql_error()); 
le $query_limit_Recordset1 par $query_Recordset1 qui contient la requête qu'on vient de construire :)