Page 1 sur 1

Introduire une condition dans une instruction SQL

Posté : 28 nov. 2007, 16:13
par phrq
Bonjour

J'essaie d'insérer des valeurs dans une BD MySQL via une page php, avec le script ci dessous.
Le pb est que je voudrais que certains GetSQLValueString ne soient écrits que sous condition.

Par exemple, à la place de :

Code : Tout sélectionner

GetSQLValueString($_POST['titrelang2'], "text"),
je souhaiterais qq chose du type:
 if (isset($_POST['titrelang2'])) {GetSQLValueString($_POST['titrelang2'], "text") ;}
L'ennui, c'est que je ne parviens pas à réécrire le sript pour introduire cette condition. Comment faire?

Merci d'avance

Philippe
 $insertSQL = sprintf("INSERT INTO tlistedetail (".$sommetitres." archive, ".$sommecontenus."date) VALUES (%s ".$sommevaleurs.", %s)",
GetSQLValueString($_POST['titrelang1'], "text"),
GetSQLValueString($_POST['titrelang2'], "text"),
GetSQLValueString($_POST['titrelang3'], "text"),
GetSQLValueString($_POST['archive'], "text"),
GetSQLValueString($_POST['contenulang1'], "text"),
GetSQLValueString($_POST['contenulang2'], "text"),
GetSQLValueString($_POST['contenulang3'], "text"),
GetSQLValueString($_POST['date'], "text"));

Posté : 28 nov. 2007, 17:40
par Ryle
Modération :
phrq, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ


A noter par ailleurs, le nombre de variables dans ta requête (les %s, %d, etc.) ne correspond pas aux nombre de valeur que tu spécifies ensuite... pas logique tout ça, va falloir revoir la doc de sprintf() :)

Quant à la création d'une requête SQL, il s'agit après tout d'une simple chaine de caractère, tu peux dons aisément la construire en concatenant plusieurs chaines sous condition :
$sql = "SELECT .... ";
$sql.= " FROM .... ";
$sql.= " WHERE .... ";
if (...)
  $sql.= " AND .... ";
$sql.= " ORDER BY .... ";

Posté : 28 nov. 2007, 18:43
par phrq
Pour les balises, oups! désolé, je serai plus attentif la prochaine fois (C'est mon 1er post) :?

Pour le nombre de variables, cela vient du fait que plusieurs variables sont regroupées sous une seule. L'alchimie est, certes, un peu complexe, mais c'est sous contrôle

L'idée de concaténer est effectivement séduisante. Ce sera plus simple.

Grand merci, donc

:)