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 :

Imbrication de boucle if /else et while [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Imbrication de boucle if /else et while
    Bonsoir,

    Je vous soumets le 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
    <?php
    $idbienav=$_GET['idbienav']; 
    include("connect.php");
    $sql="SELECT * FROM bail WHERE idbienav='$idbienav'  AND bail='1' ";
    $result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data=mysql_fetch_array($result);
    if (empty($data))
    {
    echo("
    			<form  method=\"post\" action=\"\">
    				insertion * 
    				<input name=\"bailleur\" />
    				<input type=\"submit\" name=\"Submit\" value=\"Envoyer\" />
    			 bail =0 
    			</form>
    			</body>
    			</html> ");
    }
    else
    {
    while($data=mysql_fetch_array($result))
    	{
    			echo("<body>
    			<form method=\"post\" action=\"\">modifica * <input name=\"bailleur\" value=\" ");
    				echo $data['bailleur']; 
    				echo(" \" />
    				<input type=\"submit\" name=\"Submit2\" value=\"Envoyer\" />
    			</form> 
    			");
    	}	
    	echo("</body>
    					</html> ");		
    }
    ?>
    La difficulté vient apres le 'else' la boucle while ne s'effectue pas complètement, j'affiche que le premier enregistrement. (Aucune erreur n'est retournée ...)

    Merci de votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Bonsoir, essaie comme ça pour voir :

    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
    <?php
    $idbienav=$_GET['idbienav']; 
    include("connect.php");
    $sql="SELECT * FROM bail WHERE idbienav='$idbienav'  AND bail='1' ";
    $result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data=mysql_fetch_array($result);
    $num_rows = mysql_num_rows($data);
    if ($num_rows == 0)
    {
    echo("
    			<form  method=\"post\" action=\"\">
    				insertion * 
    				<input name=\"bailleur\" />
    				<input type=\"submit\" name=\"Submit\" value=\"Envoyer\" />
    			 bail =0 
    			</form>
    			</body>
    			</html> ");
    }
    else
    {
    while($data=mysql_fetch_array($result))
    	{
    			echo("<body>
    			<form method=\"post\" action=\"\">modifica * <input name=\"bailleur\" value=\" ");
    				echo $data['bailleur']; 
    				echo(" \" />
    				<input type=\"submit\" name=\"Submit2\" value=\"Envoyer\" />
    			</form> 
    			");
    	}	
    	echo("</body>
    					</html> ");		
    }
    ?>

  3. #3
    Membre actif Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Points : 246
    Points
    246
    Par défaut
    Bonjour,

    Il faut que tu intègres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $data=mysql_fetch_array($result);
    dans ton ELSE.

    Tu te mélanges les pinceaux dans l'ordre d'éxécution des appels de fonctions MySQL.

    En résumé :

    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
     
     
    // Mise en place de la requête de sélection des données
    $sql="SELECT * FROM bail WHERE idbienav='$idbienav'  AND bail='1' ";
     
    // Exécution de la requête
    $result = mysql_query($sql);
     
    // On test si la requête renvoie x lignes
    $num_rows = mysql_num_rows($result);
     
    // Si nombre de lignes = 0 alors ton formulaire
    if ($num_rows == 0){}
     
    // Si nombre de lignes != 0 alors on traite les résultats
    else if ($num_rows != 0)
    {
         while($data = mysql_fetch_array($result)){//affiche}
    }
    Cordialement
    while (true) echo 'comique';
    Du comique de répétition ...
    Pour des questions de lisibilité, utilisez la balise [code]
    Si votre problème est résolu, n'oubliez pas le tag

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Precision
    Bonjour,
    En fait mon code d'origine fonctionne, mais mal.
    J'ai ajouté des enregistrements dans la base et il me renvoie les bons résultats SANS une ligne (en fait le premier enregistrement)

    La requête effectuée directement dans phpmyadmin par contre renvoie TOUS les bons résultats ...

    Je teste les codes que vous m'avez soumis et vous tiens au courant.

    En tout cas, merci de vos réponses.
    Jean-Marc

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Merci à tous et particulièrement à JmL40
    Bonjour,

    Pour ceux que cela pourra intéresser, voici un code qui fonctionne.
    (Affichage d'un formulaire ou d'un autre en fonction d'une condition)

    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
     <?php
    $idbienav=$_GET['idbienav']; 
    include("connect.php");
     
    // Mise en place de la requête de sélection des données
    $sql="SELECT * FROM bail WHERE idbienav='$idbienav'  AND bail='1' ";
    // Exécution de la requête
    $result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    // On test si la requête renvoie des lignes
    $num_rows = mysql_num_rows($result);
    // Si nombre de lignes = 0 alors ton formulaire d'insertion
    if ($num_rows == 0){
    echo("
    			<form  method=\"post\" action=\"PageInsert.php?idbienav = ");
    			echo $idbienav;
    			echo (" \">
    				insertion * 
    				<input name=\"bailleur\" />
    				<input type=\"submit\" name=\"Submit\" value=\"Envoyer\" />
    			 bail =0 
    			</form>
    			</body>
    			</html> ");
    }
    // Si nombre de lignes != 0 alors on traite les résultats
    else if ($num_rows != 0)
    {
         while($data = mysql_fetch_array($result)) //affiche les resultats
    	  { 
    	  echo("<body>
    			<form method=\"post\" action=\"\">modifica * <input name=\"bailleur\" value=\" ");
    				echo $data['bailleur']; 
    				echo(" \" />
    				<input type=\"submit\" name=\"Submit2\" value=\"Envoyer\" />
    			</form> 
    			");
    		}
    }
    	echo("</body>
    					</html> ");		
    ?>
    Bonne journée à tous

  6. #6
    Membre actif Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Points : 246
    Points
    246
    Par défaut
    Ce fut un plaisir !
    while (true) echo 'comique';
    Du comique de répétition ...
    Pour des questions de lisibilité, utilisez la balise [code]
    Si votre problème est résolu, n'oubliez pas le tag

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

Discussions similaires

  1. [XL-2007] Plantage boucle if (do loop while) else
    Par conrad1218 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/05/2015, 12h57
  2. boucle "for" dans "do while"
    Par oranoutan dans le forum C#
    Réponses: 13
    Dernier message: 05/06/2007, 21h13
  3. [Conception] Pb boucle if else dans formulaire
    Par urbalk dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 16/05/2007, 17h03
  4. [MySQL] Problème boucle if else
    Par urbalk dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/04/2007, 16h46
  5. Réponses: 3
    Dernier message: 03/11/2005, 19h22

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