Comment éviter faire beaucoup de if ?

nguyen0000 Messages postés 11 Statut Membre -  
nguyen0000 Messages postés 11 Statut Membre -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    1. nguyen0000 Messages postés 11 Statut Membre
       
      Merci beaucoup d'avoir pris le temps pour m'aider
      Genial ton aide !
      0