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

Langage PHP Discussion :

Conditions et Si imbriqués


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 75
    Par défaut Conditions et Si imbriqués
    Bonsoir à tous, une fois n’est pas coutume, je suis obligé de faire appel aux experts pour des si imbriqués.

    Avant de poster le code, voici ce que je souhaite faire d’un point de vue plus « algo ».

    Si(variable_session) existe
    Si(motdepasse) correspond
    Alors
    Traitement
    Sinon
    Alerte id inexistant
    Sinonsi(variable_postée) existe
    Si(motdepasse) correspond
    Alors
    Traitement
    Sinon
    Alerte id inexistant
    Sinon
    Alerte id inexistant

    Aujourd'hui, cela fonctionne convenablement sur les SI. En fait tout fonctionne sauf les alertes contenues dans les else. Malgré mes recherches, je n'arrive pas à trouver la solution. Si vous avez une idée sur mon (ou mes) erreurs.

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    <?php
    if (isset($_SESSION['mail_espace']))
    	{
    	$req = $bdd->prepare('SELECT nom, prenom, hash, salt FROM identifiants WHERE identifiant =:identifiant');
    	$req->execute(array(
    	'identifiant' => $_SESSION['mail_espace'],
    	));	
    		while ($donnees = $req->fetch())
    		{
    			if ($donnees['hash'] == $_SESSION['mp_espace'])
    			{
    				echo 
    				'<h1>
    				Bienvenue dans l\'espace membre, '
    				.$donnees['prenom'].' '.$donnees['nom'].
    				' <br /> <br />
    				Conseils sur le CV <br /> <br />
    				</h1>';
     
    				$req2 = $bdd->query('SELECT id, title, conseil FROM conseils');
    				while ($donnees2 = $req2->fetch())
    				{	
    					echo 
    					'
    					<h2>
    					<a href="#" onclick="affichage_popup(\'detail_conseil.php?id='.urlencode($donnees2['id']).'\',\'Descriptif\');">'
    					. $donnees2['title'] .
    					'</h2></a>';
    				}
    				$req2->closeCursor();
     
    				echo '<h1> Conseils sur la Lettre de motivation <br/><br/></h1>';									
    				$req3 = $bdd->query('SELECT id2, title, conseil FROM lm');
    				while ($donnees3 = $req3->fetch())
    				{	
    					echo 
    					'
    					<h2>
    					<a href="#" onclick="affichage_popup(\'detail_conseil2.php?id2='.urlencode($donnees3['id2']).'\',\'Descriptif\');">'
    					. $donnees3['title'] .
    					'</h2></a>';
    				}
    				$req3->closeCursor();
    			}
    		}
    		$req->closeCursor();
    	}
     
    	elseif(isset($_POST['mail_espace']))
    	{
     
    		$req = $bdd->prepare('SELECT nom, prenom, hash, salt FROM identifiants WHERE identifiant =:identifiant');
    		$req->execute(array(
    		'identifiant' => htmlspecialchars($_POST['mail_espace']),
    		));	
    		while ($donnees = $req->fetch())
    		{
    			if ($donnees['hash'] == hash('sha512', $_POST['mp_espace'].$donnees['salt']))
    			{
    				$_SESSION['mail_espace']=htmlspecialchars($_POST['mail_espace']);
    				$_SESSION['mp_espace']=hash('sha512', $_POST['mp_espace'].$donnees['salt']);
     
    				echo 
    				'<h1>
    				Bienvenue dans l\'espace membre, '
    				.$donnees['prenom'].' '.$donnees['nom'].
    				' <br /> <br />
    				Conseils sur le CV <br /> <br />
    				</h1>';
     
    				$req2 = $bdd->query('SELECT id, title, conseil FROM conseils');
    				while ($donnees2 = $req2->fetch())
    				{	
    					echo 
    					'
    					<h2>
    					<a href="#" onclick="affichage_popup(\'detail_conseil.php?id='.urlencode($donnees2['id']).'\',\'Descriptif\');">'
    					. $donnees2['title'] .
    					'</h2></a>';
    				}
    				$req2->closeCursor();
     
    				echo '<h1> Conseils sur la Lettre de motivation <br/><br/></h1>';
     
    				$req3 = $bdd->query('SELECT id2, title, conseil FROM lm');
    				while ($donnees3 = $req3->fetch())
    				{	
    					echo 
    					'
    					<h2>
    					<a href="#" onclick="affichage_popup(\'detail_conseil2.php?id2='.urlencode($donnees3['id2']).'\',\'Descriptif\');">'
    					. $donnees3['title'] .
    					'</h2></a>';
    				}
    				$req3->closeCursor();
    			}
    			else 
    			{
    				echo '<h1>Nous n\'avons pas retrouvé vos identifiants, merci de vous connecter</h1>';
    			}
     
    		}		
    		$req->closeCursor();
    	}
    ?>

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    je vais te décoiffer, mais si tu ne tombes jamais dans les clauses else c'est que tes tests premiers renvoient toujours true.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 75
    Par défaut
    Bonjour Rawsrc,

    Ca me paraît effectivement logique. Mais en même temps, dans mon cas, je suis perdu.

    Effectivement les si fonctionne car l'affichage des données ne se fait que si les identifiants sont bien rentrés correctement (qu'ils proviennent d'un formulaire ou de variables de session).

    Mais il ne renvoient pas "true" à chaque fois puisque si ni l'un ni l'autre n'existe (variable de session ou variable postée), on affiche rien ! Et jusque là ca fonctionne, si les identifiants ne sont pas retrouvés, ma page est bien vide. Mais l'alerte ne s'affiche pas

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    C'est normal d'avoir une page blanche quand les identifiants sont bien renseignés mais introuvables dans la base de données.
    Regarde bien ton code, quand les données sont présentes, le select n'échoue pas, il ne renvoie simplement rien donc tu ne rentres jamais dans tes boucles while. C'est pour ça que tu obtiens des pages blanches.

    Je te laisse réfléchir sur la manière de corriger ce petit souci

  5. #5
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Sinon, pour la lisibilité du code, il y a la méthode suivante : les booléens parlants.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ecran3=$maSortie2===true && $monEntree3===true;
    $ecran2=$maSortie1===true && $monEntree2===true;
    if($ecran3){
    //je lui montre tout ce que je veux
    }
    elseif($ecran2){
    //je gère ma sortie2 et mon entree3
    }
    else{
    //je gère ma sortie1 et mon entree2
     
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

Discussions similaires

  1. Plusieurs {% if condition %} imbriqués interdits?
    Par vmonteco dans le forum Django
    Réponses: 2
    Dernier message: 21/07/2014, 12h21
  2. [WD-2003] conditions "if" imbriqués dans doc word
    Par Kin0u dans le forum Word
    Réponses: 1
    Dernier message: 22/06/2010, 17h29
  3. Spécifier des conditions/choix imbriqués
    Par zarwin dans le forum Design Patterns
    Réponses: 1
    Dernier message: 05/08/2007, 15h13
  4. "boutons" imbriqués !!
    Par biloubil dans le forum Flash
    Réponses: 9
    Dernier message: 04/12/2003, 14h03
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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