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 :

probleme d'incrementation dans ma boucle


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut probleme d'incrementation dans ma boucle
    bonjour à tous!
    je vous explique, je travaille sur deux tables qui me ressortent des factures téléphonique.
    sur l'une d'entre elle je n'ai pas le numéro de poste ni le nom. Donc je les prend sur la deuxième et je les ajoute grâce à des conditions. d'abord je teste la taille des numero que je normalise en les ayant retourné puis je les
    compare
    si c'est bon j'ecrit dans mon tableau sinon et c'est la que ca coince je voudrai incrementer que la ligne du deuxieme tableau pour recomencer le test.

    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
     
    <?php
    $sql4 = "select * from neufrgbn where (GROUPE_JURIDICTIONS like 'Internationales et DOM-TOM') 
    								order by POSTE_APPELE asc, DATE_APPEL desc, MONTANT_APPEL asc";
    $res4 = mysql_query($sql4) or die('Erreur SQL !<br />'.$sql4.'<br />'.mysql_error());
     
    $sql5 =  "select * from autocom5 where 	((Coût >'0.00000' and	N_composé like '___________') or
    										(Coût >'0.00000' and N_composé like '___________%')or
    										(Coût >'0.00000' and N_composé like '06________')
    										) 
    										order by N_composé asc,Date_________Heure desc, Coût asc  ";  
    $res5 = mysql_query($sql5) or die('Erreur SQL !<br />'.$sql5.'<br />'.mysql_error());
     
    ?>
    <table border 1>
    <center><u><h1>numero international sup a 1€<h1></u></center> 	
    <?php
    echo '<tr><th>DATE APPEL</th><th>ORIGINE APPEL</th><th>UNITES FACTUREES</th><th>UNITES APPEL</th><th>POSTE APPELE</th>
    		<th>DESTINATION</th><th>JURIDICTION</th><th>GROUPE JURIDICTIONS</th><th>MONTANT APPEL</th><th>nom</th><th>poste</th></tr>';
     
    while($ligne4 = mysql_fetch_object($res4) and ($ligne5 = mysql_fetch_object($res5))) 
     
    	{
    	if ((strlen($ligne5->N_composé) >8) 
    	and (strlen($ligne4->POSTE_APPELE) >8) )
     
    			{
    			$ligne4->POSTE_APPELE = substr ((strrev($ligne4->POSTE_APPELE)),0,8);
    			$ligne5->N_composé = substr ((strrev($ligne5->N_composé)),0,8);
     
     
     
    				if ((strncasecmp($ligne5->N_composé,$ligne4->POSTE_APPELE,8) !=0) 
    				and (strncasecmp($ligne5->Date_________Heure,$ligne4->DATE_APPEL,5) !=0))
     
    					{
    					$res4=$res4-1;
    					}
    						else	
    							{
    							echo '<tr><td>'.$ligne4->DATE_APPEL.'</td>.<td>'.$ligne4->ORIGINE_APPEL.'</td>.<td>'.$ligne4->UNITES_FACTUREES.'</td>.
    							<td>'.$ligne4->UNITES_APPEL.'</td>.<td>'.strrev($ligne4->POSTE_APPELE).'</td>.<td>'.$ligne4->DESTINATION.'</td>.
    							<td>'.$ligne4->JURIDICTION.'</td>.<td>'.$ligne4->GROUPE_JURIDICTIONS.'</td>.<td>'.round($ligne4->MONTANT_APPEL,2).'</td>.
    							<td>'.$ligne5->Nom.'</td>.<td>'.$ligne5->Poste.'</td></tr>';
    							}	
     
    			}
    	}
    ?>
    </table>


    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Bonjour,

    pourquoi ne fais-tu pas 2 boucles au lieu d'1 seule ?
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while ($o_res1 = mysql_fetch_object($r_query1))
    {
      // query & exec
      while ($o_res2 = mysql_fetch_object($r_query2))
      {
        // if / else
      }
    }
    De cette manière tu as accès indépendamment de l'object "res1" et l'object "res2". Le soucis va être que tu vas devoir refaire ta requête à chaque fois que tu bougera $o_res1;. (si c'est pas bien pensé) Ou alors tu peux faire un while / if.
    Sinon pour "incrémenté" ce genre de boucle, il suffit de faire une lecture sur la ressource. Pour éviter d'avancer dans ta stack si tu veux refaire des test, tu peux mettre en place un système de flag que tu utilisera avec un "or".
    Exemple :
    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
    $b_flag = false;
    while ($b_flag || ($o_res1 = mysql_fetch_object($r_query1)))
    {
      $b_flag = false;
      if (($o_res2 = mysql_fetch_object($r_query2)))
      {
        if (// true)
        {
          // other
        }
        else
        {
          $b_flag = true; // Enter in the first loop without move ptr1
          mysql_fetch_object($r_query2); // ptr2 += 1 in your stack
          // other
        }
      }
    }
    Bonne chance.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    merci pour ta réponse je vais essayer.

    je n'ai fais pas deux boucles parce je voulais compléter une ligne d'un tableau deja existant avec les données de l'autre tableau.

    je n'y arrive toujours pas.
    je vais rexpliquer peut être que je n'ai pas était très claire.

    j'ai deux tables

    une avec pour champs: DATE_APPEL .ORIGINE_APPEL .UNITES_FACTUREES .UNITES_APPEL .POSTE_APPELE. DESTINATION. JURIDICTION. GROUPE_JURIDICTIONS. et MONTANT_APPEL

    et la deuxième avec pour champs: Poste. N_composé. Durée_de_conv. Coût. Date et Heure. Nom.

    mon but étant de rajouter aux champs de la première table les champs poste et nom de la deuxième.

    le problème est que les numéros de POSTE_APPELE sont le chiffres que l'on tape vraiment et que les numéros de N_composé sont normalisés à 10 chiffres

    dans mon script j'inverse l'ordre les coupe et les compare.

    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
    while(($ligne4 = mysql_fetch_object($res4)) and ($ligne5 = mysql_fetch_object($res5))) 
     
    	{
    	if ((strlen($ligne5->N_composé) >8)   // si longueur n° >8
    	and (strlen($ligne4->POSTE_APPELE) >8) ) //et  si longueur n° >8
     
    			{
    			$ligne4->POSTE_APPELE = substr ((strrev($ligne4->POSTE_APPELE)),0,8); //alors j'inverse l ordre et je coupe apres le 8eme chiffre
    			$ligne5->N_composé = substr ((strrev($ligne5->N_composé)),0,8); //alors j'inverse l ordre et je coupe apres le 8eme chiffre
     
     
     
    				if ((strncasecmp($ligne5->N_composé,$ligne4->POSTE_APPELE,8) !=0) //  si les  n° sont different 
    				and (strncasecmp($ligne5->Date_________Heure,$ligne4->DATE_APPEL,5) !=0)) // et si les date sont differentes
     
    					{
    					$ligne5 = $ligne5+8; // alors j'incremente ligne 5
    					}
    						else	// sinon je rempli le tableau
    mon soucis est que lorsqu'il y a une différence entre les numéros, je n'incrémente pas ma ligne pour tester le numéro suivant.
    comment faire?
    merci

Discussions similaires

  1. probleme de variable dans une boucle
    Par www.rubis dans le forum Linux
    Réponses: 2
    Dernier message: 04/09/2007, 16h06
  2. Réponses: 12
    Dernier message: 15/05/2007, 16h34
  3. probleme de passage dans une boucle
    Par EssaiEncore dans le forum ASP
    Réponses: 16
    Dernier message: 15/02/2005, 17h39
  4. probleme de recordset dans une boucle do while
    Par Shoryu dans le forum ASP
    Réponses: 18
    Dernier message: 05/07/2004, 15h30
  5. Probleme de test dans un boucle
    Par PrinceMaster77 dans le forum ASP
    Réponses: 14
    Dernier message: 15/06/2004, 12h32

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