Problème avec les conditions
Posté : 28 oct. 2009, 02:10
Bonsoir,
Je suis actuellement en train d'apprendre le php et j'ai réalisé, à la fois pour m'entraîner et pour un ami, un module de membres pour son site internet. Seulement, je planche actuellement sur la page d'inscription qui me donne du fil à retordre !
Ici, le problème que j'ai rencontré et que je n'arrive pas à résoudre vient de la première condition. D'après mes connaissances (certes peu développées), avec un IF (affirmation), suivi d'un ELSE ou d'un ELSEIF (inverse de l'affirmation), si l'affirmation est vraie, seule le IF s'effectue et pas le ELSE, et de même pour l'inverse.
Seulement, ici, avec la première condition, les deux s'effectuent :
J'en profite pour aller me coucher, en espérant que quelqu'un puisse m'expliquer où est mon erreur/incompréhension d'ici demain!
Je suis actuellement en train d'apprendre le php et j'ai réalisé, à la fois pour m'entraîner et pour un ami, un module de membres pour son site internet. Seulement, je planche actuellement sur la page d'inscription qui me donne du fil à retordre !
Ici, le problème que j'ai rencontré et que je n'arrive pas à résoudre vient de la première condition. D'après mes connaissances (certes peu développées), avec un IF (affirmation), suivi d'un ELSE ou d'un ELSEIF (inverse de l'affirmation), si l'affirmation est vraie, seule le IF s'effectue et pas le ELSE, et de même pour l'inverse.
Seulement, ici, avec la première condition, les deux s'effectuent :
<?php
if (isset($_POST['ok']) == FALSE)
{
$form = 2;
}
elseif (isset($_POST['ok']) == TRUE)
{
// ------- On défini des variables --------
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$mdp = $_POST['mdp'];
$mdpc = $_POST['mdpc'];
$mail = $_POST['mail'];
$sexe = $_POST['sexe'];
$tel = $_POST['tel'];
// --------- Fin de la définition ------------
mysql_connect("localhost","root",""); // On ouvre la table "membres" ou prenom = POSTprenom -> $reponse
mysql_select_db("csamb-taa");
$reponse = mysql_query("SELECT * FROM membres WHERE prenom='$prenom' AND nom='$nom'") or die(mysql_error());
if (mysql_num_rows($reponse) != 0) // Si $reponse est = 0
{
$validlog = 0;
}
elseif (mysql_num_rows($reponse) == 0) // Sinon si $reponse != 0
{
$validlog = 1;
}
if ($mdp == NULL) // Si POSTmdp est vide
{
echo "ERROR MDP MISSING";// Affichage message d'erreur, et $form = 1
$form = 1;
}
elseif ($mdp != $mdpc)
{
echo "ERROR : WRONG PASS CONFIRMATION";
$form = 1;
}
elseif ($prenom == NULL) // Sinon si POSTprenom=vide
{
echo "ERROR PRENOM MISSING"; // Affichage message d'erreur, et $form = 1
$form = 1;
}
elseif ($nom == NULL)
{
echo "ERROR NOM MISSING";
$form = 1;
}
elseif ($validlog == 0) // Sinon si $validlog == 0
{
echo "ERROR : Prenom & Nom déjà utilisés : débrouille toi cette ligne de code me gave"; // Affichage message d'erreur : prénom déjà utilisé, et $form = 1
$form = 1;
}
elseif ($mail == NULL) // Sinon si POSTmail est vide
{
echo "ERROR : MAIL MISSING"; // Affichage message d'erreur et $form=1
$form = 1;
}
elseif (strlen($tel) != 10 OR $tel == NULL)
{
echo "ERROR : TELEPHONE NUMBER SYNTAX";
$form = 1;
}
else // Sinon
{
echo "gros caca";
$form = 0; // Aucune erreur roulez jeunesse
}
}
if ($form = 2)
{ echo "caca";
?>
<form method="post" action="signup.php">
<p>
<label for="nom">Votre nom : </label><input type="text" name="nom" id="nom"/><br/>
<label for="prenom">Votre prénom : </label><input type="text" name="prenom" id="prenom"/><br/>
Votre (gros) sexe :
<label for="sexe1">Masculin</label><input type="radio" name="sexe" id="sexe1" value="1"/>
<label for="sexe2">Féminin</label><input type="radio" name="sexe" id="sexe2" value="2"/><br/>
<label for="mail">Votre e-mail : </label><input type="text" name="mail" id="mail"/><br/>
<label for="tel">Votre n° de téléphone : </label><input type="text" name="tel" id="tel"/><br/>
<label for="mdp">Votre mot de pass : </label><input type="password" name="mdp" id="mdp"/><br/>
<label for="mdpc">Confirmation du mot de pass : </label><input type="password" name="mdpc" id="mdpc"/>
<input type="submit" value="ENVOIE LA SAUCE BEBEY" name="ok"/>
</p>
</form>
<?php }
elseif ($form = 1) // Si $form=1
{
// Si sexe = 1 à la précédente : alors sexe1 checked, ce qui met "checked" dans la case "homme" (par exemple)
if ($sexe = 1)
{ $sexe1 = "checked"; }
elseif ($sexe = 2)
{ $sexe2 = "checked"; }
// Affichage du formulaire
?>
<form method="post" action="signup.php">
<p>
<label for="nom">Votre nom : </label><input type="text" name="nom" id="nom" value="<?php echo $nom; ?>"/><br/>
<label for="prenom">Votre prénom : </label><input type="text" name="prenom" id="prenom" value="<?php echo $prenom; ?>"/><br/>
<label for="sexe">Votre (gros) sexe : </label><input type="radio" name="sexe" id="sexe" value="1" checked="<?php echo $sexe1; ?>"/><br/>
<input type="radio" name="sexe" id="sexe" value="2" checked="<?php echo $sexe2; ?>"/><br/>
<label for="mail">Votre e-mail : </label><input type="text" name="mail" id="mail" value="<?php echo $mail; ?>"/><br/>
<label for="tel">Votre n° de téléphone : </label><input type="text" name="tel" id="tel" value="<?php echo $tel; ?>"/><br/>
<label for="mdp">Votre mot de pass : </label><input type="password" name="mdp" id="mdp"/><br/>
<label for="mdpc">Confirmation du mot de pass : </label><input type="password" name="mdpc" id="mdpc"/>
<input type="submit" value="ENVOIE LA SAUCE BEBEY" name="ok"/>
</p>
</form>
<?php }
elseif ($form = 0) // Sinon si $form=0
{
echo "REGISTERING SUCCESSFULL!"; // Enregistrement réussi, on entre les données dans la base de données
mysql_connect("localhost","root","");
mysql_select_db("csamb-taa");
mysql_query("INSERT INTO membres('nom', 'prenom', 'mdp', 'sexe', 'mail', 'tel', 'id', 'accessadmin') VALUES('$nom', '$prenom', '$mdp', '$sexe', '$mail', '$tel', '', '1')");
}
?>
Ainsi, ici, quoi qu'il arrive, que la variable $_POST['ok'] existe ou non, on passe par les deux boucles : le if(isset($_POST['ok'] == FALSE) et le elseif(isset($_POST['ok']))... Et le résultat n'est pas particulièrement satisfaisant... :pJ'en profite pour aller me coucher, en espérant que quelqu'un puisse m'expliquer où est mon erreur/incompréhension d'ici demain!