IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Conception] Pb boucle if else dans formulaire


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de urbalk
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 135
    Par défaut [Conception] Pb boucle if else dans formulaire
    Bonjour,

    Je recontre un petit pb avec une boucle if else.

    Dans un formulaire de renvoie de login/mdp une personne entre sont adresse mail pour lui retourner son login et mdp perdu.

    la premiere partie de la boucle (IF) fonctionne.
    la deuxième (ELSE) ne fonctionne pas et je ne comprends pas pourquoi

    Merci de votre aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?php
    include_once ('fichierdeconf.php');
    echo '<br>';echo '<font color=red>';
    echo 'titre de la page :FICHIER ESSAIS A METTRE AU PROPRE';
    echo '<br>';echo '</font>';
     
    // recuperation de la variable 
    if(isset($_POST['maillost']))      $maillost=$_POST['maillost']; else      $maillost="";
     
    // affichage de la variable passée par POST
    echo $maillost; 
     
    // creation de la croquette
    $sql = "SELECT  email,login,mdp 
    		FROM associations
    		WHERE email = '$maillost' 
    		";
    // envoie de la croquette
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
     
    // boucle pour lire la table dans la DB
    while($data = mysql_fetch_assoc($req)) 
        {
        // affichage des infos contenue dans la table
    	echo 'DONNEES RETOURNEES PAR LA DB';
    	// declaration de la variable maillost
    	$var_maillost = $maillost;
    	// SI la valeur de la variable $maillost est EGALE a la variable passée via POST j'affiche (juste pour la prog)les infos.
    	if ($var_maillost == $data['email']) 
    	{ 
    		echo $data['email'];echo '<br>';
    		echo $data['login'];echo '<br>';
    		echo $data['mdp'];echo '<br>';
    		// toutes les infos sont OK j'envoie tout par e-mail
    		//*************inserer script d'envoie de mail *********
    		// include_once ('postmail.php');
    	}
    	// AUTREMENT les infos n'existent pas dans la table
    	else {
    	// j'affiche un message d'erreur
    	print ("Aucun Login et mot de passe pour cette adresse mail");
    	// j'insere un fichier de redirection sur la page acceuil
       	include('return.htm');
    	//je quitte ce script
    	exit(); 
    	} 
    	echo $data['mdp'];
    // fin du while		
    	}
    // fermeture de la connection 
    mysql_close();
    ?>

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Je suppose que dans ta base de données tu n'auras qu'un seul login/mot de passe pour une adresse email donnée?
    Donc il faut plutot qu'après ta requete dans la base tu regardes si tu as bien un résultat qui est retourné avec mysql_num_rows(). Si oui alors tu fais un fetch pour envoyer l'email, sinon tu indiques qu'il n'y a pas de réponses.

    Et si ton else ne marche pas c'est surement parce que tu passes toujours dans le if (parce que l'adresse email est bien dans ta base).

  3. #3
    Membre confirmé Avatar de urbalk
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 135
    Par défaut
    Je suppose que dans ta base de données tu n'auras qu'un seul login/mot de passe pour une adresse email donnée?
    Oui.
    Donc il faut plutot qu'après ta requete dans la base tu regardes si tu as bien un résultat qui est retourné avec mysql_num_rows(). Si oui alors tu fais un fetch pour envoyer l'email, sinon tu indiques qu'il n'y a pas de réponses.
    Je vais jeter un oeil de ce coté la.

    Et si ton else ne marche pas c'est surement parce que tu passes toujours dans le if (parce que l'adresse email est bien dans ta base).
    Même si je rentre une adresse e-mail non présente dans la table le if-else ne fonctionne pas.

    merci.

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Normal qu'il ne fonctionne pas parce que si tu rentres une adresse présente, tu as un résultat donc ton fetch_assoc_array() retourne le résultat. Par contre pour une adresse non présente tu n'as aucun résultat et le fetch_assoc_array() te retourne alors false, donc tu ne rentres pas dans la boucle et donc pas du tout dans le if/else.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    salut

    D'abord, une remarque en passant : il manque une ' dans ton include_once ('fichierdeconf.php') au début du script. C'est probablement une faute de copie, mais on se sait jamais

    Ensuite, tu recherches les associations ayant un email égal à $maillost. Donc comme ton if vérifie que l'email trouvé est égal à maillost, il est toujours vérifié
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // creation de la croquette ;)
    $sql = "SELECT  email,login,mdp 
    	FROM associations
    	WHERE email = '$maillost' 
    	";
    //...
    $var_maillost = $maillost;
    if ($var_maillost == $data['email']) 
    {}
    [hors propos] J'aime bien l'idée d'utiliser des croquettes mysql [/hors propos]
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre confirmé Avatar de urbalk
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 135
    Par défaut
    Bonjour,

    [hors propos ON] croquette... ce jours la ma fille de 2 ans 1/2 ma fais mourrir de rire !!! Aujourd'hui, c'est a coup de ROQUETTE que je vais finir ce bout de script qui me rend dingue !!![hors propos OFF]

    Depuis hier am je cherche une solution en vain...
    voici mon bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?php
    echo '*******************************************************************';echo '<br>';
    // variable qui passe par POST
    $sc = 'testg@test.fr';
     
    // connection
    $mysql_link = mysql_connect("localhost", "root", "_o_");
     
    // creation de la croquette
    $requete = "SELECT * 
    			FROM associations
    			WHERE email = '$sc'
    			";
     
    // envoi de la croquette
    $result = mysql_db_query("annonceurs", $requete);
     
    // boucle while pour lire la table
    while ($voir = mysql_fetch_array($result))
     
    if(empty($voir['email'])) // SI $voir['email'] est VIDE
        {
    	$maillost != 'Perdu ;o('; // je declare ma variable 
    	echo $maillost; // affichage de la variable
        }
    else  // SINON 
    	{
    	$maillost == 'gagné !!! ;o)';
    	echo $maillost;
    	}
    echo '<br>';
    //end while
     
    // fermeture
         mysql_close();
    ?>
    Je n'arrive pas a attribuer une valeur à la variable maillost après le while sur la table.
    Dans l'etat, le script me renvois même une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: maillost in c:\program files\
    comme quoi la variable maillost est indéfinie !!!

    Pourquoi tant de haine !

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je crains que tes déclarations ne soient incorectes syntaxiquement. En clair, l'affectation d'une variable c'est = et non != ou ==
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $maillost != 'Perdu ;o('; // je declare ma variable : ben non
    ...
    $maillost == 'gagné !!! ;o)'; // la non plus
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre confirmé Avatar de urbalk
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 135
    Par défaut
    Oups, pas vu !!!

    J'ai donc modifier de cette mannière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // boucle while pour lire la table
    while ($voir = mysql_fetch_array($result))
     
    if(empty($voir['email'])) // SI $voir['email'] est VIDE
        {
    	$maillost = "Perdu ;o("; // je declare ma variable 
    	echo $maillost; // affichage de la variable
        }
    else  // SINON 
    	{
    	$maillost = "gagné !!! ;o)";
    	echo $maillost;
    	}
    mais le problème est toujours là !
    Quand la variable '$sc' est présente dans la table le script retourne bien "gagné !!! ;o)" par contre quand la variable '$sc' n'existe pas dans la table, la variable '$maillost' ne prend aucne valeur...

    merci de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération $_FILES dans formulaire en boucle
    Par AurelienNF dans le forum Langage
    Réponses: 6
    Dernier message: 27/09/2011, 16h58
  2. [AC-2007] test if then else dans boucle for next
    Par markuus dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2011, 11h41
  3. [AC-2000] Boucle lors de certains déplacements dans formulaire
    Par yves210420 dans le forum IHM
    Réponses: 1
    Dernier message: 26/06/2011, 17h39
  4. [PHP 5.0] boucle et checkbox dans un formulaire
    Par Kuchiki Byakuya dans le forum Langage
    Réponses: 4
    Dernier message: 23/03/2010, 23h45
  5. [Conception] Ecrire le contenu d'un formulaire dans un fichier
    Par omeada dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 27
    Dernier message: 26/04/2007, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo