Bonjour, je vais commencer par un exemple afin d'expliquer le probleme:
Dans le formulaire les champs avec les variables $var2 et $var3 ne sont pas obligatoire mais si elles existent je doit les insérés dans la base.
Je fait donc 4 conditions, une avec $var2 et $var3, une avec seulement $var2, une avec seulement $var3, et une sans aucune des deux.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
if (!empty($var2) AND !empty($var3))
{                               
  $req = $bdd->prepare('INSERT INTO table(id, champ1, champ2, champ3)
  VALUES("", :var1, :var2, :var3)');
 
  $req->bindValue(':var1', $var1, PDO::PARAM_STR);
  $req->bindValue(':var2', $var2, PDO::PARAM_STR);
  $req->bindValue(':var3', $var3, PDO::PARAM_STR);
  $req->execute();
  $req->closeCursor();
  }
if (!empty($var2) AND empty($var3))
{    
  $req = $bdd->prepare('INSERT INTO table(id, champ1, champ2)
  VALUES("", :var1, :var2)');
 
  $req->bindValue(':var1', $var1, PDO::PARAM_STR);
  $req->bindValue(':var2', $var2, PDO::PARAM_STR);
  $req->execute();
  $req->closeCursor();
}
if (empty($var2) AND !empty($var3))
{    
 ...
}
if (empty($var2) AND empty($var3))
{    
 ....
}
C'est super long et répétitif.
Je voudrais avoir quelque chose comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
  $req = $bdd->prepare('INSERT INTO table(id, champ1, champ2, champ3)
  VALUES("", :var1, :var2, :var3)');
 
  $req->bindValue(':var1', $var1, PDO::PARAM_STR);
  if(!empty($var2)) $req->bindValue(':var2', $var2, PDO::PARAM_STR);
  if(!empty($var3)) $req->bindValue(':var3', $var3, PDO::PARAM_STR);
  $req->execute();
  $req->closeCursor();
Avec les bonnes conditions dans la requête qui font apparaitre les champs et les marqueurs nommés s'ils existent.

Il y a t-il une solution ?