affectation de variable selon 3 champs html

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 : affectation de variable selon 3 champs html

Re: affectation de variable selon 3 champs html

par moogli » 10 mai 2014, 15:18

salut,

Tu utilise parfois $title et $titre (qui n'existe pas).

Pourquoi avoir deux séries de if ? la première série suffit.

Tu peux générer la requête directement en fonction de tes critères en utilisant la concaténation pour construire le select.


@+

affectation de variable selon 3 champs html

par mloiz » 10 mai 2014, 12:13

Bonjour,
je suis en train de faire mon premier moteur de recherche en php/mySql et je rencontre un problème pour la sélection du type de recherche.

J'ai trois champ de recherche auteur, titre et annee à partir desquels je distingue 7 type de recherches : recherche par auteur, ou titre, ou année, ou auteur + titre, ou auteur + année, ou titre + année, ou auteur + titre + année.
(le champ annee peut prendre uniquement les valeurs suivantes : all ou 2009 ou 2010 ou 2010 ou 2011 )
je fais la distiction en php selon que mes champ de recherche soit vide ou non.
Le problème c'est que je n'arrive jamais à activer les recherches doubles (e.g. auteur + titre)
code php :
// restrictions des variables a html et simplification des noms. 
$author = htmlspecialchars($_GET['author']); 
$title = htmlspecialchars($_GET['title']); 
$year = htmlspecialchars($_GET['year']); 

$kindOfSearch = "lesCellulesSontVides";

if(!empty($author) && empty($title) && $year=="all"){
$kindOfSearch = "author";
}
elseif(!empty($title) && empty($author) && $year=="all"){
$kindOfSearch = "title";
}

elseif($year!="all" && empty($auteur) && empty($titre)){
$kindOfSearch = "year";
}

elseif(!empty($author) && !empty($title) && $year=="all" ){
$kindOfSearch = "authorNtitre";
}

elseif(!empty($author) && $year!="all" && empty($titre) ){
$kindOfSearch = "authorNyear";
}

elseif(!empty($title) && $year!="all" && empty($author) ){
$kindOfSearch = "titleNyear";
}
elseif(!empty($author) && !empty($title) && $year!="all" ){
$kindOfSearch = "all";
}

echo "<b>".$kindOfSearch."</b> ; ";

mysql_query("SET NAMES UTF8"); // on met les données en UTF 8

// recherche par auteur : 
if( strcmp($kindOfSearch,"author") == 0){
	$query="Select * FROM memoireIFU where Auteur like '%$author%'" ;
}

// recherche par année : 
if( strcmp($kindOfSearch,"year") == 0){
	$query="Select * FROM memoireIFU where Annee like '%$year%'" ;
}

// recherche par titre : 
if( strcmp($kindOfSearch,"title") == 0){
	$query="Select * FROM memoireIFU where Titre like '%$title%' " ;
}
// recherche par auteur et titre
if( strcmp($kindOfSearch,"authorNtitre") == 0){
	$query="Select * FROM memoireIFU where Auteur like '%$author%' AND Titre like '%$title%'";
}
// recherche par auteur et année
if( strcmp($kindOfSearch,"authorNyear") == 0){
	$query="Select * FROM memoireIFU where Auteur like '%$author%' AND Annee like '%$year%'";
}
// recherche par titre et année
if( strcmp($kindOfSearch,"titleNyear") == 0){
	$query="Select * FROM memoireIFU where Titre like '%$title%' AND Annee like '%$year%'";
}
// recherche par Auteur et titre et année
if( strcmp($kindOfSearch,"all") == 0){
	$query="Select * FROM memoireIFU where Auteur like '%$author%' AND Titre like '%$title%' AND Annee like '%$year%'";
}
// recherche rien = afficher tt les items
if( strcmp($kindOfSearch,"lesCellulesSontVides") == 0){
	$query="Select * FROM memoireIFU ";
}
concrètement ma variable kindOfSearch ne prend jamais les valeurs authorNtitre, titleNyear ..
ou dit autrement, dès que la variable annee prend une valeur différente que all, une recherche par année est systematiquement effectué...

d'avance merci.