$categorie = isset($_POST['categorie']) ? $_POST['categorie'] : "";
$clauses_cat = (isset($_GET['categorie']) ? urldecode($_GET['categorie']) : null; // récupération de la variable clauses_cat qui est une chaine de caractères passé dans l'url
$pays = addslashes($pays);
$page = isset($_GET['page']) ? $_GET['page'] : '';
if(!isset($clauses_cat)) // si $clauses_cat est définie à ce niveau cela signifie que tu es passé par un lien donc inutile d'effectuer cette opération
{
/* On compte le nombre de catégories cochées */
$nb_cat = count($categorie);
/* On crée un tableau pour stocker les clauses */
$tableau_clauses = array();
for($i = 0; $i < $nb_cat; $i++)
{
/* On ajoute la clause dans le tableau */
$tableau_clauses[] = "categorie = '". $categorie[$i] ."'";
}
/* On va créer une chaine avec toutes les clauses stockées séparées entre elles par l'opérateur OR */
$clauses_cat = implode(" OR ", $tableau_clauses);
/* On ajoute la chaîne créée à la requête */
}
affiche toujours les requêtes générées pour vérifier.
$categorie = isset($_POST['categorie']) ? $_POST['categorie'] : ""; //????
$clauses_cat = (isset($_GET['categorie']) ? urldecode($_GET['categorie']) : null; // récupération de la variable clauses_cat qui est une chaine de caractères passé dans l'url
D'après la lecture du code qui suit ces 2 lignes, on peut comprendre que "categorie" est une source de type tableau dans l'esprit de l'auteur car il dit que ça représente des cases cochées dans un form (peut être de recherche)//Paramètres reçus
$categorie = isset($_POST['categorie']) ? $_POST['categorie'] : ""; //les catégories cochées
$clauses_cat = (isset($_GET['clauses_cat']) ? urldecode($_GET['clauses_cat']) : null; //la chaine clause_cat
//Déterminer les catégories choisies: source (clausecat ou tableau categorie)
$clauses_cat = !$clauses_cat?($categorie?"categorie = '" . implode("' OR categorie = '", $categorie) . "'": "categorie Like '%'" ):$clauses_cat;
Ce code peut remplacer dans ton ton programme le bloc suivant:
$categorie = isset($_POST['categorie']) ? $_POST['categorie'] : "";
$clauses_cat = (isset($_GET['categorie']) ? urldecode($_GET['categorie']) : null; // récupération de la variable clauses_cat qui est une chaine de caractères passé dans l'url
if(!isset($clauses_cat)) // si $clauses_cat est définie à ce niveau cela signifie que tu es passé par un lien donc inutile d'effectuer cette opération
{
/* On compte le nombre de catégories cochées */
$nb_cat = count($categorie);
/* On crée un tableau pour stocker les clauses */
$tableau_clauses = array();
for($i = 0; $i < $nb_cat; $i++)
{
/* On ajoute la clause dans le tableau */
$tableau_clauses[] = "categorie = '". $categorie[$i] ."'";
}
/* On va créer une chaine avec toutes les clauses stockées séparées entre elles par l'opérateur OR */
$clauses_cat = implode(" OR ", $tableau_clauses);
/* On ajoute la chaîne créée à la requête */
}
Et exige la modification des lignes qui affichent le HREF de navigation selon ce qui suit:
echo "<a href=\"".$PHP_SELF."?page=".$i."&pays=".$pays."&clauses_cat=".$clauses_cat......
$clauses_cat = (isset($_GET['clauses_cat']) ? urldecode($_GET['clauses_cat']) : null; //la chaine clause_cat Code : Tout sélectionner
SELECT * FROM fille WHERE pays = 'russie' AND ();l'avantage mais si l'on peut dire est que la requete affiché est entiereWarning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in d:\www\une-bellehistoire.com\htdocs\script13.php on line 39
PRECEDENT
SELECT * FROM fille WHERE pays = 'russie' AND ();
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\www\une-bellehistoire.com\htdocs\script13.php on line 80
avec le code de TRUC méme probléme de ( lorsque je l'enléve
ça fait SELECT * FROM fille WHERE pays = 'russie' AND (categorie = \'18 25 ans\');
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in d:\www\une-bellehistoire.com\htdocs\script12.php on line 54
PRECEDENT
SELECT * FROM fille WHERE pays = 'russie' AND (categorie = \'18 25 ans\');
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\www\une-bellehistoire.com\htdocs\script12.php on line 95
$clauses_cat = !$clauses_cat?($categorie?"categorie = '" . implode("' OR categorie = '", $categorie) . "'": "categorie Like '%'" ):$clauses_cat;
Pour éviter le cas SQL ".... AND ()" ..."SELECT * FROM fille WHERE pays = '". $pays."' " .($clauses_cat?" AND (". $clauses_cat .")":"").....
Personnellement je concidère cette dernière écriture correctement obligatoire car on ne peut laisser passer une valeur vide qui risque de fausser la syntaxe ou la logique de la requête.echo'<table>';
$i= 1;
while ($row =mysql_fetch_array ($result) )
{ if($i == 1){ echo'<tr>';}
echo'<td><img src="'.$row['image'].'"width="150px" height="200px"></img><BR><BR>"'.$row['filleID'].'"</td>';
echo'<td>"'.$row['prénom'].'"</td>';
$i++;
if($i> $nb) { echo'</tr>';$i= 1;}
}
echo'</table>'; quand j'affiche le prénom en dehors du tableau ce qui au passage boussille le tableau il n'y a plus de guillement
echo'<td><img src="'.$row['image'].'" width="150px" height="200px"></img><BR><BR>'.$row['filleID'].'</td><td>'.$row['prénom'].'</td>';
erf... tout à fait d'accord... tit erreur (oubliPas d'accord Truc, on ne peut concidérer le même paramètre à la fois comme un tableau et une chaîne.