Modérateur PHPfrance |
10684 Messages
24 janv. 2008, 11:38
Pour ma part, je suis passé au prélevement automatique, je vais donc avoir du temps pour te répondre
Apostrophes (') et guillemets (") permettent toutes deux de définir des chaines en php. La principale différence réside dans le fait qu'une variable placée entre guillemets sera interprétée alors qu'elle ne le sera pas si elle est entre apostrophes :
$var = 123;
echo "La valeur est : $var"; // affiche : La valeur est : 123
echo 'La valeur est : $var'; // affiche : La valeur est : $var
En général, on recommande donc fortement de toujours sortir ses variables des chaines pour éviter ce genre d'erreur, ainsi que pour plus de lisibilité avec la coloration syntaxique (et puis ça évite à php d'aller inutilement regarder dans toutes tes chaines pour voir s'il n'y aurait pas une variable à remplacer) :
echo 'La valeur est : ' . $var;
En SQL en revanche, si MySQL tolère les guillemets pour délimiter une chaine, ce n'est pas une syntaxe sql correcte. On ne les utilise que pour délimiter des chaines, pas les nombres :
$sql.= " WHERE email = '".$_SESSION['email']."' AND id = " . $idNumerique;
Enfin, isSet() te permet te tester si une variable est définie (afin de savoir si tu peux l'utiliser ou pas). empty() te permet de tester non seulement si une variable est définie, mais en plus de savoir si sa valeur est vide ou nulle.
Le point d'exclamation (!) est un opérateur de négation, ainsi si " isSet($var) " retourne vrai (parce que la variable est définie) " !isSet($var) " retourne faux. Cela te permet de tester directement si une variable n'est pas définie plutôt que de devoir tester si elle est définie et coller un else pour ton traitement
Plutôt que de faire :
if (isSet($_POST['var'])) { // si la variable est définie
// ... on fait rien
}
else {
// ... traitement
}
Tu peux faire :
if (!isSet($_POST['var'])) { // si la variable n'est pas définie
// ... traitement
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...