par
Ryle » 05 août 2007, 11:53
@Skafari : ah ben c'est déjà beaucoup plus lisible en tout cas
Sur le principe ca devrait être bon, par contre tu vas avoir un soucis ici :
$sql = 'SELECT count(*) FROM membres WHERE pseudo="'.$_POST['pseudo'].'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$pseudo = mysql_fetch_array($req);
elseif($pseudo[0] == 0)
{
echo 'Un membre du site posséde déjas ce Pseudo, désolée du désagrément ! Choisis-en un autre.<br /><br />
<a href="" onClick="javascript:window.history.go(-1)">Retour</a>.<br />';
}
Tu ne peux pas avoir un elseif placé ici, un if() tout au plus. Le elseif() doit nécessairement être la suite d'une instruction if() (ou d'un autre elseif())
@hakazizi : Au final oui, mais les conditions que tu testes ne seront pas interprétées de la même manière et ne retourneront pas toujours les résultats attendus :
<?php
if ( $a && $b || $c ) // ce test équivaut à " (a et b) ou c "
if ( $a AND $b || $c ) // ce test équivaut à " a et (b ou c) "
?>
On peu effectivement éviter cela en ne mélangeant pas les AND/OR ou des &&/||, mais l'autre différence entre les deux opérateurs vient surtout de la priorité de l'opérateur d'affectation "=". Il est prioritaire sur AND et OR, mais passe après && et || :
<?php
if ( $a = $b && $c ) // Le résultat du test entre $b et $c est stocké dans $a
if ( $a = $b AND $c ) // $b est stocké dans $a avant d'être testé avec $c
?>
On peut aussi rajouter une foultitude de parenthèses pour rétablir l'ordre que l'on veut et obtenir le résultat souhaité, mais disons que préférer && et || évitera de perdre de nombreuses heures à s'arracher les cheveux

(et puis c'est la syntaxe utilisée dans quasiment tous les autres langages de dev, donc autant s'y habituer et garder les AND / OR pour du SQL

)