Comment éviter faire beaucoup de if ?

Fermé
nguyen0000 Messages postés 11 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 7 décembre 2016 - 31 mars 2016 à 00:41
nguyen0000 Messages postés 11 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 7 décembre 2016 - 4 avril 2016 à 23:11
Bonjour, dans le cadre d'un projet de l'université , je dois faire un projet en php et je débute. Pour ce projet je dois faire un annuaire . J'ai fait un formulaire

Je voudrais savoir comment faire pour que l'utilisateur n'a pas besoin de remplir tout les champs , ça m'éviterait de faire 10 000 if tout en bas du code

Le code est un peu long mais répétitif car j'ai fait plusieurs fonction pour faire plusieurs requêtes sql, a chaque fonction j'utilise des différentes paramètres qui récupèrent les valeurs des champs de saisie.

Je vous remercie d'avance
<?php 
// déclaration des variables necessaire
$nom_entite="";
$type_entite="";
$secteur_client="";
$ville_entite="";


// recuperation des valeurs saisies
foreach ($_POST as $key => $value)
{
	if ($key == 'nomEntites'){
		if(!empty($value)){
			$nom_entite=$value;
		}	
	}
	if ($key == 'Type')
	{
		$type_entite=$value;
	}
	if ($key == 'ClientSecteur')
	{
		$secteur_client=$value;
	}
	if ($key == 'Ville')
	{
		$ville_entite=$value;
	}

}

//fonction  de recherche par nom entite
function recherche_by_nom($nom_entite)
{
$hote = "localhost";
$utilisateur = "root"; 
$mPasse = "";
$nomBase = "chef_oeuvre" ; // à completer
$connexion = mysqli_connect($hote,$utilisateur,$mPasse,$nomBase)
			or die ( " Connexion impossible !");

$query =  "Select * FROM entite WHERE NomEntite LIKE '$nom_entite%'";							
$result = mysqli_query($connexion,$query); // execute la requete

//$assoc = mysqli_fetch_assoc($result); // recupere les resultats
//var_dump($assoc); // affiche le contenu de la requete

//stock les champs nécessaire à l'affichage dans un tableau gauche : champ de array droite : champ de bdd
while ($row=mysqli_fetch_assoc($result)) {
	$array= array(
		"nom_entite" => $row['NomEntite'],
		"adresse" => $row['Adresse'],
		"type_entite" => $row['Type'],
		"ville" =>  $row['Ville'],
		"codePostal" => $row['CodePostal'],
		"pays" => $row['Pays'],
		"email" =>  $row['Mail'],
		"contact" => $row['Contact'],
		"numero_telephone" =>  $row['NumeroTelephone'],
		"TVA_Intracommunautaire" =>  $row['TVA_intra'],
		"Numero_Siret" => $row['NumeroSiret'],
		);
}
afficherInfo($array);
}

//fonction de recherche par ville
function recherche_by_ville($ville_entite)
{
$hote = "localhost";
$utilisateur = "root"; 
$mPasse = "";
$nomBase = "chef_oeuvre" ; // à completer
$connexion = mysqli_connect($hote,$utilisateur,$mPasse,$nomBase)
			or die ( " Connexion impossible !");

$query =  "Select * FROM entite WHERE Ville LIKE '$ville_entite%'";								
$result = mysqli_query($connexion,$query); // execute la requete


//stock les champs nécessaire à l'affichage dans un tableau gauche : champ de array droite : champ de bdd
while ($row=mysqli_fetch_assoc($result)) {
	$array= array(
		"nom_entite" => $row['NomEntite'],
		"adresse" => $row['Adresse'],
		"type_entite" => $row['Type'],
		"ville" =>  $row['Ville'],
		"codePostal" => $row['CodePostal'],
		"pays" => $row['Pays'],
		"email" =>  $row['Mail'],
		"contact" => $row['Contact'],
		"numero_telephone" =>  $row['NumeroTelephone'],
		"TVA_Intracommunautaire" =>  $row['TVA_intra'],
		"Numero_Siret" => $row['NumeroSiret'],
		);
}
afficherInfo($array);
}

//fonction de recherche par membre ou sous-traitant ou client avec secteur non renseigné
function recherche_by_MCS($type_entite)
{
$hote = "localhost";
$utilisateur = "root"; 
$mPasse = "";
$nomBase = "chef_oeuvre" ; // à completer
$connexion = mysqli_connect($hote,$utilisateur,$mPasse,$nomBase)
			or die ( " Connexion impossible !");

$query =  "Select * FROM entite WHERE Type LIKE '$type_entite%'";								
$result = mysqli_query($connexion,$query); // execute la requete


//stock les champs nécessaire à l'affichage dans un tableau gauche : champ de array droite : champ de bdd
while ($row=mysqli_fetch_assoc($result)) {
	$array= array(
		"nom_entite" => $row['NomEntite'],
		"adresse" => $row['Adresse'],
		"type_entite" => $row['Type'],
		"ville" =>  $row['Ville'],
		"codePostal" => $row['CodePostal'],
		"pays" => $row['Pays'],
		"email" =>  $row['Mail'],
		"contact" => $row['Contact'],
		"numero_telephone" =>  $row['NumeroTelephone'],
		"TVA_Intracommunautaire" =>  $row['TVA_intra'],
		"Numero_Siret" => $row['NumeroSiret'],
		);
}
afficherInfo($array);
}


//fonction de recherche par client avec secteur renseigné
function recherche_by_MS($type_entite,$secteur_client)
{
$hote = "localhost";
$utilisateur = "root"; 
$mPasse = "";
$nomBase = "chef_oeuvre" ; // à completer
$connexion = mysqli_connect($hote,$utilisateur,$mPasse,$nomBase)
			or die ( " Connexion impossible !");

$query =  "Select * FROM entite WHERE Type LIKE '$type_entite%'
								AND   ClientSecteur LIKE '$secteur_client%'";								
$result = mysqli_query($connexion,$query); // execute la requete


//stock les champs nécessaire à l'affichage dans un tableau gauche : champ de array droite : champ de bdd
while ($row=mysqli_fetch_assoc($result)) {
	$array= array(
		"nom_entite" => $row['NomEntite'],
		"adresse" => $row['Adresse'],
		"type_entite" => $row['Type'],
		"ville" =>  $row['Ville'],
		"codePostal" => $row['CodePostal'],
		"pays" => $row['Pays'],
		"email" =>  $row['Mail'],
		"contact" => $row['Contact'],
		"numero_telephone" =>  $row['NumeroTelephone'],
		"TVA_Intracommunautaire" =>  $row['TVA_intra'],
		"Numero_Siret" => $row['NumeroSiret'],
		);
}
afficherInfo($array);
}



//fonction de recherche
function afficherInfo($tab)
{
	echo "<p style='font-weight:bold'>";
	echo "Nom de l'entité: "; echo $tab['nom_entite']; // affichage de nom_entite
	echo "</p>";
	echo "Adresse : ";echo $tab['adresse']; // affichage de adresse
	echo "<br>";
	echo " Ville: ";echo $tab['ville']; // affichage de la ville
	echo " ";
	echo " Code postal: ";echo $tab['codePostal']; // affichage de codePostal
	echo " ";
	echo "<br>";
	echo " Email: ";echo $tab['email']; // affichage de Email
	echo "<br>";
	echo " Numero_telephone: ";echo $tab['numero_telephone']; // affichage de Numero telephone
	echo "<br>";
	echo " TVA_Intracommunautaire: ";echo $tab['TVA_Intracommunautaire']; // affichage de N° de TVA Intracommunautaire
	echo "<br>";
	echo " Numero Siret: ";echo $tab['Numero_Siret']; // affichage de Numero Siret
	echo "<br>";
}
$nom_entite="";
$type_entite="";
$secteur_client="";
$ville_entite="";


if (!empty($nom_entite) || empty($type_entite) || empty($secteur_client) || empty($ville_entite) )
{
	$EntiteInfo= recherche_by_nom($nom_entite);
}





?> 

<form action="annuaire1.php" method="post">
<p><input type="submit" value="NOUVELLE RECHERCHE"></p>
</form>

1 réponse

jordane45 Messages postés 38391 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 janvier 2025 4 731
Modifié par jordane45 le 31/03/2016 à 10:56
Bonjour,

Primo .. place le code de connexion à ta BDD dans un fichier à part
que tu n'auras qu'à inclure lorsque tu en as besoin au lieu de le copier/coller partout
dans ton code

<?php //Fihcier de connexion à la BDD  cnxBDD.php
$hote = "localhost";
$utilisateur = "root"; 
$mPasse = "";
$nomBase = "chef_oeuvre" ; // à completer
$connexion = mysqli_connect($hote,$utilisateur,$mPasse,$nomBase)
   or die ( " Connexion impossible !");
?>



Ensuite, A moins que tu n'aies vraiment un besoin bien spécifique (que je ne voie pas...)
tu peux tout faire en UNE seule requête.
En jouant avec de la concaténation....

Par exemple :

<?php 
//------------------------------------------------------------------------------------//
//Connexion à la BDD
//------------------------------------------------------------------------------------//
require_once "cnxBDD.php";



//------------------------------------------------------------------------------------//
// FONCTIONS
//------------------------------------------------------------------------------------//

//fonction de recherche
function afficherInfo($tab)
{
 echo "<p style='font-weight:bold'>";
 echo "Nom de l'entité: "; echo $tab['nom_entite']; // affichage de nom_entite
 echo "</p>";
 echo "Adresse : ";echo $tab['adresse']; // affichage de adresse
 echo "<br>";
 echo " Ville: ";echo $tab['ville']; // affichage de la ville
 echo " ";
 echo " Code postal: ";echo $tab['codePostal']; // affichage de codePostal
 echo " ";
 echo "<br>";
 echo " Email: ";echo $tab['email']; // affichage de Email
 echo "<br>";
 echo " Numero_telephone: ";echo $tab['numero_telephone']; // affichage de Numero telephone
 echo "<br>";
 echo " TVA_Intracommunautaire: ";echo $tab['TVA_Intracommunautaire']; // affichage de N° de TVA Intracommunautaire
 echo "<br>";
 echo " Numero Siret: ";echo $tab['Numero_Siret']; // affichage de Numero Siret
 echo "<br>";
}

//------------------------------------------------------------------------------------//
// Récupération "propre"  des variables necessaire
//------------------------------------------------------------------------------------//
$NomEntite = !empty($_POST['nomEntites']) ? $_POST['nomEntites'] : NULL;
$Ville = !empty($_POST['Ville']) ? $_POST['Ville'] : NULL;
$Type = !empty($_POST['Type']) ? $_POST['Type'] : NULL;
$ClientSecteur = !empty($_POST['ClientSecteur']) ? $_POST['ClientSecteur'] : NULL;


//------------------------------------------------------------------------------------//
//Construction de la requête en fonctions des champs remplis par l'utilisateur.
//------------------------------------------------------------------------------------//

$sql = "Select * FROM entite ";

//Si au moins un des champs est rempli :
if($NomEntite || $Type || $ClientSecteur || $Ville){
  $a_params = array();
  if($NomEntite){$a_params[] = " NomEntite LIKE '$NomEntite%' "; }
  if($Ville){$a_params[] = " Ville LIKE '$Ville%' "; }
  if($Type){$a_params[] = " `Type` LIKE '$Type%' "; }
  if($ClientSecteur){$a_params[] = " ClientSecteur LIKE '$ClientSecteur%' "; }
}

//on conmplete la requete en y a joutant le WHERE et les éventuels AND
$strWhere = !empty($a_params) ? " WHERE " . join(' AND ',$a_params) : "" ;
$query = $sql . $strWhere;

//On exécute la requete :
$result = mysqli_query($connexion,$query); // execute la requete

while ($row=mysqli_fetch_assoc($result)) {
 $array= array(
  "nom_entite" => $row['NomEntite'],
  "adresse" => $row['Adresse'],
  "type_entite" => $row['Type'],
  "ville" =>  $row['Ville'],
  "codePostal" => $row['CodePostal'],
  "pays" => $row['Pays'],
  "email" =>  $row['Mail'],
  "contact" => $row['Contact'],
  "numero_telephone" =>  $row['NumeroTelephone'],
  "TVA_Intracommunautaire" =>  $row['TVA_intra'],
  "Numero_Siret" => $row['NumeroSiret'],
  );
}


//-----------------------------------------//
// Affichage des informations
//-----------------------------------------//
afficherInfo($array);

?>


Cordialement, 
Jordane                                                                 
0
nguyen0000 Messages postés 11 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 7 décembre 2016
4 avril 2016 à 23:11
Merci beaucoup d'avoir pris le temps pour m'aider
Genial ton aide !
0