Il existe une possibilité de définir une expression SQL qui doit être appliqué au domaine particulier lors de la lecture ou de l'écriture dans la base de données. C'est très utile lorsque vous voulez interpréter le le contenu du champ d'une manière différente de celle qui est stockée dans la base de données. Pour être plus clair, voir les exemples suivants.

Exemple 4-34. Lire des expressions SQL

$opts[fdd][surname][sql] = CONCAT(surname, , , firstname);
$opts[fdd][title][sql] = IF(TRIM(title) != ””, title, title2);

Le premier exemple joint (concatenne) le champ nom et prénom. Parce que cela se fait au niveau de la base de données, le tri et la recherche (la page de filtrage dans le tableau) sur ce champ sera fait correctement. De même, dans le deuxième exemple, le champ title2 sera utilisé si le titre est vide. Dans cette manière vous pouvez définir une chaîne statique, qui pout être utilisé dans le cas où un champ est vide. Il suffit juste de substituer une chaîne à guillemets à la place de title2.

De même, vous pouvez utiliser des expression SQL pour le stockage des données dans la base de données.

Exemple 4-35. Ecrire des expressions SQL

$opts[fdd][surname][sqlw] = UPPER($val_qas);
$opts[fdd][title][sqlw] = TRIM(“$val_as”);

Le premier exemple ci-dessus passe le contenu du champ en majuscules lors du stockage dans la base de données terrain. La seconde supprime tous les espaces autour titre avant de l'écrire à la base de données.

Comme un espace réservé pour le champ de contenu, il ya trois variables disponibles.

$val –valeur du champ
$val_as –valeur avec la fonction addslashes() est appliquée
$val_qas –identique à $ val_as avec les guillemets autour

Si $val est some”nice”thing, alors $val_as devient somme\”nice\”thing et $ val_qas devient “some\”nice\”thing”. Vous devez utiliser correctement ces variables dans vos expressions [sqlw], sinon une erreur d'analyse MySQL pourrait se produire. Nous vous recommandons d'utiliser la variable $val_qas à chaque fois que cela est possible, car il est le plus sûr.

Un usage très pratique et utile est l'usage de l'option [sqlw] qui demande explicitement à phpMyEdit de stocker une valeur NULL au lieu d'une chaîne vide pour la colonne particulière. Il existe une différence entre une valeur chaine vide et un NULL. Beaucoup de gens n'aiment pas vraiment les chaînes vides dans leurs tableaux, ils ont donc maintenant possible de les changer pour NULL lorsque l'utilisateur entre tout simplement rien en forme champ de saisie.

Exemple 4-36. Stocker un NULL au lieu d'une chaîne vide

$opts[fdd][col_name][sqlw] = IF($val_qas = ””, NULL, $val_qas);

Un autre exemple de l'usage de [sqlw] est l'utilisation des mots de passe des utilisateurs. C'est une bonne idée pour l'utilisateur d'avoir un mot de passe en utilisant certaines fonctions de hachage bien connues avant un enregistrement dans la base de données. La déclaration suivante est utilisée dans le but d'éviter la répétition de hachage, d'une chaine déjà haché. Cela signifie que si la valeur col_name n'a pas été changé, alors il ne faut pas lui appliquer MD5(). Si la valeur col_name été changé, alors il applique la fonction MD5().

Exemple 4-37. Conserver le mot de passe de hachage MD5

$opts[fdd][col_name][sqlw] = IF(col_name = $val_qas, $val_qas, MD5($val_qas));

 
les_expressions_sql.txt · Dernière modification: 2007/12/13 22:54 par fabrice
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki