Simplification code : condition multiple if PHP

Petit nouveau ! | 6 Messages

11 juin 2018, 22:14

Bonjour je voudrais simplifier le code ci-dessous, je vais essayer d'être le plus explicite possible :

Formulaire:
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf8_encode" />
<link rel='stylesheet' href='css_file1.css' type='text/css' />
 </head>
<body>
<form method="POST" action=“traitement.php">
<table>
	<tr>
		<td> Etudiant*:</td>
		<td> <input type="text" name=“numero" placeholder="saisir le numero étudiant" required="required" /></td>
	</tr>

	<tr>
		<td> Cocher les couleurs:</td>
		<td> <input type="checkbox" name=“couleur[]" value=“rouge">
			 <label for=" couleur ">rouge</label>
			 <input type="checkbox" name=" couleur[]" value=“noir">
			 <label for=" noir">Visa</label>
			 <input type="checkbox" name=" couleur[]" value=“bleue">
			 <label for=" couleur ">bleue</label>
		</td>
	</tr>
</table>
</body>
</html>

Connexion:
<?php

$connexion=mysqli_connect("localhost","root","") or die ("erreur de connexion au serveur");
mysqli_select_db($connexion, "baseBD") or die("erreur de connexion à la base de donnée");

?>

Traitement php:
<?php
include(connexion.php");


$var1=$_POST[‘couleur '];
$var2=$_POST[‘numero '];

$req="INSERT INTO ETUDIANT (Id_etudiant , numero) VALUES (' ', '$numero')";
	if (mysqli_query($connexion, $req))
	{
		$Id_cc=mysqli_insert_id($connexion2);		
	}	

$Id_save=$Id_cc;

foreach($_POST[" couleur "] as $check)
{
if( !isset($checkscouleur) ){ $checkscouleur = $check; }
else{ $checkscouleur.= ", ".$check; }
}

$Id_1='1'; 		//1 : rouge		
$Id_2='2';		//2 : bleue
$Id_3=‘3';		//3 : noire

if($checkscouleur ==‘rouge') 
{
$jointure1="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES (‘ ',  '$Id_save‘, ‘$id_1’)";
mysqli_query($connexion, $jointure1);
}

if($checkscouleur ==‘bleue') 
{
$jointure2="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES ('', '$Id_save ', '$Id_2‘)";
mysqli_query($connexion, $jointure2);
}

if($checkscouleur ==‘noire') 
{
$jointure3="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES ('', '$Id_save ', '$Id_3‘)";
mysqli_query($connexion, $jointure3);
}
if($checkscouleur ==‘rouge, bleue‘) 
{
$jointure1="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES (‘ ',  '$Id_save‘, ‘$id_1’)";
$jointure2="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES (‘ ',  '$Id_save‘, ‘$id_2’)";
mysqli_query($connexion, $jointure1);
mysqli_query($connexion, $jointure2);
}


if($checkscouleur ==‘bleue, noire') 
{
$jointure2="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES ('', '$Id_save ', '$Id_2‘)";
$jointure3="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES ('', '$Id_save ', '$Id_3‘)";
mysqli_query($connexion, $jointure2);
mysqli_query($connexion, $jointure3);
}


if($checkscouleur ==‘rouge, bleue, noire') 
{
$jointure1="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES ('', '$Id_save ', '$Id_1‘)";
$jointure2="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES ('', '$Id_save ', '$Id_2‘)";
$jointure3="INSERT INTO ETUDIANT_MAISON  (id_etudiant_maison, id_etudiant, id_maison) VALUES ('', '$Id_save ', '$Id_3‘)";
mysqli_query($connexion, $jointure1);
mysqli_query($connexion, $jointure2);
mysqli_query($connexion, $jointure3);
}

<?
Comments

Pour une entrée dans le formulaire,
L’étudiant 001 a lui seul une maison de couleur bleue et une maison de couleur noire

Pour une autre entrée dans le formulaire,
L’étudiant 002 n’a qu’une seule maison de couleur bleue

Pour une autre entrée dans le formulaire,
L’étudiant 003 a lui seul une maison de couleur noire et une autre maison de couleur rouge

Mammouth du PHP | 917 Messages

11 juin 2018, 22:53

http://php.net/manual/fr/function.explode.php pour récupérer les valeurs de $checkscouleur
un tableau :
$tab['rouge'] = '1';
$tab['bleu'] = '2';
et
foreach($resultatexplode as $couleur){
$id = $tab[$couleur];
requete insert;
}

Petit nouveau ! | 6 Messages

12 juin 2018, 19:40

Merci je vais tester celà de suite c'est super ! :)

Petit nouveau ! | 6 Messages

13 juin 2018, 14:29

Désolé j'ai essayé mais je n'ai pas pu (Je suis débutant) :
voici un cas pratique indique moi comment je peux le faire stp :
Enfaîte je veux récupérer l'id (1, 2, 3) que j'ai fixé dans ma base de donnée de c'st clé Parking, Transport, Ouvrage,
pour l’insérer dans une table de jointure.
et dans le cas ou l'utilisateur coche plus d'une case par exemple : pour 2 cases cochées alors dans ma table de jointure je dois avoir deux enregistrements, une correspondant à la première table et une autre correspondant à la seconde table.
Je précise que j'ai déjà l'id de la table à laquelle je veux joindre celle ci pour laquel je veux récupérer que les correspondantes.

Cordialement,
(en attente de réponse, je veux joindre une image plus explicite pour me faire mieux comprendre mais j'ai du mal).

Code formulaire :
<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf8_encode" />
  <link rel='stylesheet' href='css_file1.css' type='text/css' />	
 </head>

 
<form method="post" action="test1.php">
         
<fieldset>
<legend><h4>Schemes - Biens - Configurations </h4></legend>
<table>

	<tr>
		<td> Cocher le MCC:</td>
		<td> <input type="checkbox" name="mcc[]" value="Parking">
			 <label for="mcc">Parking</label>
			 <input type="checkbox" name="mcc[]" value="Transport">
			 <label for="mcc">Transport</label>
			 <input type="checkbox" name="mcc[]" value="Ouvrage">
			 <label for="mcc">Ouvrage</label>
		</td>
	</tr>
	
</table>
	<tr>
		<td colspan="2" align="center-right">
		</br> </br> <input type="submit" value="Soumettre" />
		<input type="reset" value="Annuler" /> 
		</td>
	</tr> 
	
</table>

</fieldset>
</form>
     
</body>
</html>
Code Traitement:
<?php
include("connect1.php");

$a=$_POST["mcc"];
$a['Parking']=1;
$a['Transport']=2;
$a['Ouvrage']=3;
foreach($a as $mcc)
	{

		echo "$a[$mcc]";
	}

?>

Petit nouveau ! | 6 Messages

13 juin 2018, 14:40

Pour illustrer mon besoin :

Image
Image
[/img]

Petit nouveau ! | 6 Messages

13 juin 2018, 14:43

Image

Petit nouveau ! | 6 Messages

08 août 2018, 11:08

bonjour,
en faite je veux que si c'est un UPDATE OU UNE INSERTION qU'il m'affiche le tableau figurant dans le if et et pas d'affiche dans le cas ou c'est un DELETE ou le nom que l(utilisateur essaieras d'entrer existe dejà !
mais je vous assure je tourne en rond !
il ne m'affiche pas rien quand c'est une insertion (INSERT INTO) et quand c'est une mise à jour (UPDATE)

vous voyez c'est un peu dans mon code.

autrement si y a possibilité de faire une FUNCTION pour ça guidez moi
<?php
	require('../login/control-session.php');
?>
<!DOCTYPE html>
<head>
   <link rel='stylesheet' href='../css/table.css' type='text/css' />
<head>

<?php
include("../connect1.php");

$datecrea=$_POST['datecre'];
$datep=$_POST['datepout'];
$Nam=$_POST['Name'];
#print_r($_POST);

 
if(isset($_POST['idRules'])) {
	if(isset($_POST['Delete'])){
	$reqx="DELETE FROM rules WHERE idRules=".$_POST['idRules']." ";
		$reqq_del=mysqli_query($connexion2, $reqx);
		if ($reqq_del) {
			echo"Record deleted successfully";
			echo"</br><a href='formulaire_rules.php'>cliquez pour retourner</a><br>";
		}else{
			echo"Error deleting record: " . mysqli_error($connexion2); }
	}				
}

#insertion table rules et stockage de son id
else{
	if(isset($_POST['Update'])){		
	$req="UPDATE rules SET Max_contract_creation_date='".$_POST['datecre']."', Requested_phase_out='".$_POST['datepout']."' 
	WHERE idRules='".$_POST['idRules']."'  ";
	$reqqu=mysqli_query($connexion2, $req);
	echo $req;	
		if ($reqqu) {
			echo"Record updated successfully";
		}else{
			echo"Error updating record: " . mysqli_error($connexion2); }
	}	



	else{
		$reqd = mysqli_query($connexion2, "SELECT idRules, Rules_Name FROM rules WHERE Rules_Name ='$Nam' ");
		if(mysqli_num_rows($reqd) >0){
		echo"<b>Ce Nom de certification existe déjà dans la base de donnée !<b><br> "; 
		echo" <a href='formulaire_rules.php'>cliquez pour retourner à l'enregistrement</a><br>";
		}
		else{
			$sql="INSERT INTO rules (idRules, Rules_Name, Max_contract_creation_date, Requested_phase_out , Scheme_id, Concerned_Specification_id, Region_id)
			VALUES ('', '$Nam', '$datecrea', '$datep', '".$_POST['scheme']."', '".$_POST['spec']."', '".$_POST['region']."')";
			$reqq=mysqli_query($connexion2, $sql);
			if ($reqq)
			{
				$rule_id=mysqli_insert_id($connexion2);
			}
			$rules_id=$rule_id; 
		}
	}

#--------------------------***----------------------

if (((mysqli_num_rows($reqd) <0) and ((isset($_POST['Update'])))) and (!isset($_POST['Delete']))) {
	$fr="SELECT ru.idRules, spec.Specifications_Name, sch.Schemes_Name, reg.Region_Name, ru.Rules_Name, ru.Max_contract_creation_date, ru.Requested_phase_out
	FROM rules ru, specifications spec, schemes sch, region reg
	WHERE ru.Concerned_Specification_id=spec.idSpecifications AND ru.Scheme_id=sch.idSchemes AND ru.Region_id=reg.idRegion
	AND ru.idRules='$rules_id' ";
	$result=mysqli_query($connexion2, $fr);
	$cert=mysqli_fetch_array($result);
	
	if((mysqli_num_rows($reqd) <0) and (!isset($_POST['Update'])) ){
	echo" </br><img src='../images/successful_reg.png'width='50' height='50' align='middle'/><br>
	</br><a href='formulaire_rules.php'>cliquez pour retourner</a><br>
	</br><b>Enregistrement successful ! <b><br>"; 
	}
}
	elseif ((isset($_POST['Update'])) || mysqli_num_rows($reqd) <0 ){
		
	echo"<h1 align='center'> Recorded Rule </h1>\n";
	echo"<table border='1' style='width:50%'; align='center' id='idtable' >\n";
	echo"<tr>\n";
		echo"<th><strong>Id</strong></th>\n";
		echo"<td>$rules_id</td>\n";
	echo"</tr>\n";
	echo"<tr>\n";
		echo"<th><strong>Rules Name</strong></th>\n";
		echo"<td>$Nam</td>\n";
	echo"</tr>\n";
	echo"<tr>\n";
		echo"<th><strong>Choose the scheme</strong></th>\n";
		echo"<td>".$cert['Schemes_Name']."</td>\n";
	echo"</tr>\n";
	echo"<tr>\n";
		echo"<th><strong>Max contract creation date</strong></th>\n";
		echo"<td>$datecrea</td>\n";
	echo"</tr>\n";
	echo"<tr>\n";	
		echo"<th><strong>Requested Phase Out</strong></th>\n";
		echo"<td>$datep</td>\n";
	echo"</tr>\n";	
	echo"<tr>\n";	
		echo"<th><strong>Choose the specification</strong></th>\n";
		echo"<td>".$cert['Specifications_Name']."</td>\n";
	echo"</tr>\n";
	echo"<tr>\n";
		echo"<th><strong>Chosen la region</strong></th>\n";
		echo"<td>".$cert['Region_Name']."</td>\n";
	echo"</tr>\n"; }

}
?>	

<?php
mysqli_close($connexion2);
?>