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

MS SQL Server Discussion :

[MSSQL et PHP] Problème de boucle


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut [MSSQL et PHP] Problème de boucle
    Bonjour,

    Je rencontre un petit souci avec mon imbrication de While qui, je pense, devrait théoriquement fonctionner...

    Voilà le code PHP avec lequel je tente de réaliser un tableau, affichant les données issues d'une base SQL Server 2003, en executant une procédure stockée.

    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
    107
    108
    109
    110
     
    <?
     
      [...]
     
      $date1 = $jour1.'/'.$mois1.'/'.$an1;
      $date2 = $jour2.'/'.$mois2.'/'.$an2;
     
    // execution de la requete sur la base  (procedure stockee)
    $sql2 = "execute dbo.etatComptProd_dicut '".$date1."', '".$date2."';";
    $result = mssql_query($sql2, $cnx);
     
    // Haut du tableau
    $titre = '<tr><td colspan = "4" id = "titretab">
            Suivi du tonnage Dicut par mode de transport pour la période du '.$date1.' au '.$date2.'</td>';
     
    $nb_lignes = mssql_num_rows($result);
     
    $entete_tableau = "<tr id = 'reftab'>
      <td width=30%><br /></td>
      <td width=30%><br /></td>
      <td width=20%><br />Poids brut</td>
      <td width=20%><br />Cpt</td></tr>";
     
    echo "<table border = '0' id = 'chiffres'>";
    echo $titre;
    echo $entete_tableau;
     
    while($row= mssql_fetch_object($result)) {
    $mois = $row-> libmois;
     
    	while($mois == $row-> libmois){
    	echo "<tr id = 'grostitre'><td>Mois : $mois</td>";
    	echo "<td></td>";
    	echo "<td></td>";
    	echo "<td></td></tr>";
     
    	$totalPdsBrutMois = 0;
    	$modetransp = $row-> libelléTRS;
     
    		while($modetransp == $row-> libelléTRS){
    		echo "<tr><td id = 'bilan'>$modetransp</td>";
    		echo "<td></td>";
    		echo "<td></td>";
    		echo "<td></td></tr>";
     
    		$totalPdsBrutTransp = 0;	
    		$date = $row-> DATEEXP;
     
    			while ($date == $row-> DATEEXP){			
    			echo "<tr><td>$date</td>";
    			echo "<td></td>";
    			echo "<td></td>";
    			echo "<td></td></tr>";	
     
    			$totalPdsBrutJour = 0;
    			$totalCptJour = 0;	
    			$numVEH =  $row-> NUMVEH;
     
    				while($numVEH == $row-> NUMVEH){
    				$poidsBrut =  $row-> SommeDePOIDSBRUT;
    				$cpt =  $row-> cpt;				
     
    				echo "<tr><td></td>";
    				echo "<td>$numVEH</td>";
    				echo "<td>$poidsBrut</td>";
    				echo "<td>$cpt</td></tr>";	
     
    				$totalPdsBrutJour += $poidsBrut;
    				$totalCptJour += $cpt;	
     
    				}
     
    			echo "<tr><td id = 'bilan'>Total jour</td>";
    			echo "<td></td>";
    			echo "<td id = 'bilan'>$totalPdsBrutJour</td>";
    			echo "<td id = 'bilan'>$totalCptJour</td></tr>";
     
    			$totalPdsBrutTransp += $totalPdsBrutJour;
     
    			}
     
    		echo "<tr><td id = 'bilan'>Total transport</td>";
    		echo "<td></td>";
    		echo "<td id = 'bilan'>$totalPdsBrutTransp</td>";
    		echo "<td></td></tr>";
     
    		$totalPdsBrutMois += $totalPdsBrutTransp;	
     
    		}
     
    	echo "<tr><td id = 'bilan'>Total mois</td>";
    	echo "<td></td>";
    	echo "<td id = 'bilan'>$totalPdsBrutMois</td>";
    	echo "<td></td></tr>";
     
    	}	
     
    }
     
        echo '</table>';
     
        // fermer la connexion à sql server
        mssql_close($cnx); 
     
    ?>
     
     </div>
     
     </center>
    J'obtiens alors la première ligne du tableau, qui boucle infiniment...
    Mes "While" ne semblent donc pas boucler correctement, serait-ce l'équivalent du "movenext()" en ASP qu'il manquerait à mon code ?...

    Merci par avance pour votre aide,
    Alex

  2. #2
    Membre expérimenté Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $numVEH =  $row-> NUMVEH;
     
    				while($numVEH == $row-> NUMVEH){
    $row est jamais modifié, $numVEH est jamais modifié.
    Ils seront toujorus egaux, et c'est comme ça dans toutes tes boucles

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut
    Bonjour Sebou,

    ...et merci pour ta réponse.

    Comment faire pour incrémenter $row dans ce cas ?


  4. #4
    Membre expérimenté Avatar de Sebou77
    Inscrit en
    Mars 2006
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 212
    Par défaut
    Je n'ai pas vraiment regarder en détail mais je vois pas pourquoi tu as autant de while imbriqué, puisque le premier avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row= mssql_fetch_object($result)
    va se charger d'incrémenter ton row et donc avec ce while tu les parcoureras tous

Discussions similaires

  1. Problème du boucle while en PHP
    Par kimpak dans le forum Langage
    Réponses: 6
    Dernier message: 11/08/2011, 13h28
  2. [XML] générer un fichier xml avec du php : problème de boucle
    Par freija dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/02/2007, 18h25
  3. Problème de boucles Php/mysql
    Par Atwight dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/08/2006, 15h44
  4. [PHP]problème avec strftime()...
    Par sanosuke85 dans le forum Langage
    Réponses: 5
    Dernier message: 26/05/2005, 10h02
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

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