<?php
/**
* Class Where
* Class permettant de construire les arguments du WHERE
* Params : (boolean) $this->table->many
* Return : (string) WHERE + une liste d'arguments' || ''
**/
class Where{
public $i; // nombre d'arguments (calculé en fonction des opérateurs logiques (AND, WHERE)
function __construct()
{
$this->i = 0;
}
// on construit le WHERE: plusieurs étape: 1.build() 2.data() 3.build_arg() 4.la fonction correspondant à l'input
public function build($many)
{
//plusieurs tables selectionnées
if($many)
{
retrurn $this->operateur_logique().'(conso1.id = conso2.id)'.$this->data();
}
//sinon il n'y a qu'une table de selectionner donc on réduit la recherche
else
{
return $this->operateur_logique().$this->data();
}
}
// fonction qui vérifie les cases à cocher pour ensuite donner accès à la creation d'un argument
private function data()
{
foreach ($_POST as $varname)
{
//exception: pas de verification si le post est membre 1,2,3,4 ou 5
if($varname='membre1' OR $varname='membre2' OR $varname='membre3' OR $varname='membre4' OR $varname='membre5')
{
return $this->build_arg($varname);
}
// verifie si on a bien coché la case à cocher du haut pour les champs constitués d'une case et d'un formulaire
elseif (!empty($_POST[${$varname.1}]))
{
if(!empty($_POST[$varname]))
{
return $this->build_arg($varname); // on construit en fonction du type de formulaire
}
else
{
echo 'Vérifiez que vous avez bien rentré une valeur dans le formulaire sous la case cochée('.$varname.')';
}
}
// pour touts les champs constitués d'une case à cocher
elseif (preg_match('#^[a-z_]+$#i', $varname)// questionnaire_ligne entretiens... , mais pas de varname avec un nombre à la fin ex: situation1
{
return $this->build_arg($varname);
}
}
}
private function build_arg($varname)
{
if($varname='nom' OR $varname='prenom' OR $varname='profession')
{
return $this->like($varname);
}
elseif($varname='age')
{
return $this->age();
}
elseif($varname='option_paris')
{
return $this->option_paris();
}
elseif($_POST[$varname]=='on')
{
return $this->checkbox($varname);
}
elseif(preg_match('#^[a-z_]+$]#i', $_POST[$varname]))
{
return $this->value($varname);
}
}
private function operateur_logique()
{
if($this->i=o)
{
$operateur_logique=' WHERE ';
$this->i++;
}
elseif($this->i>0)
{
$operateur_logique=' AND ';
$this->i++;
}
return $operateur_logique;
}
//fonction pour les noms et prenoms (recherche en LIKE)
private function like($varname)
{
return $this->operateur_logique().'('.$varname."LIKE '%".$_POST[$varname]."%')";
}
// fonction pour tout les values des input qui constituent un argument
private function value($varname)
{
return $this->operateur_logique().'('.$varname.'='.$_POST[$varname].')';
}
//fonction pour les checkboxs
private function checkbox($varname)
{
if($varname='membre1' OR $varname='membre2' OR $varname='membre3' OR $varname='membre4' OR $varname='membre5' OR $varname='enfants')
{
return $this->operateur_logique().'('.$_POST[$varname].'>= 1)';
}
else
{
return $this->operateur_logique().'('.$_POST[$varname].'= oui)';
}
}
// fonction pour l'age
private function age()
{
if($_POST['age2'] >= $_POST['age'])
{
// Calcul des années
private function annee($age)
{
$today = date('Y');
$annees = $today - $age;
}
return $this->operateur_logique().'(naissance BETWEEN'.$this->annee($_POST['age2']).' AND '.$this->annee($_POST['age']).')';
else
{
echo 'Veuillez insérer un premier age inférieur au second <br/>';
}
}
// fonction pour l'option région parisienne
private function option_paris()
{
return $this->operateur_logique().'(departement IN ('75','77','78','91','92','93','94','95'))';
}
}//fin de la class Where
?>