Page 1 sur 1

problème sur récuperation de ligne

Posté : 01 juil. 2007, 17:42
par sacco
Bonjour,

j'ai un petit problème sur mes conditions

Voila je récupère des lignes ex:

Début génération des cubes quotidiens - le 2/10/2006 11:45
Fin génération des cubes quotidiens - le 4/10/2006 09:43

tout fonctionne sauf sur l'ex suivant

Début génération des cubes quotidiens - le 2/10/2006 11:45
Début génération des cubes quotidiens - le 3/10/2006 05:15
Début génération des cubes quotidiens - le 4/10/2006 06:30
Fin génération des cubes quotidiens - le 4/10/2006 09:43

car il faut que je recupere la ligne 11:45 et la ligne 09:43. Mais je n'arrive pas à by-pass les deux lignes du milieu

mon script
foreach ($Log as $ligne)
    					{
    					   if(ereg($debfortunaq,$ligne))	
    					      	{    					      		
    					      		$Pos1 = strpos($ligne,0);
    						  		$Pos2 = strpos($ligne,"l");
    						  		$Pos3 = strpos($ligne,"/");
    						  		$Entetedeb = substr($ligne,$Pos1,$Pos2-2);
    						  		$JHeuredeb = substr($ligne,$Pos3+9,5);
    						  		$JDatedeb = substr($ligne,$Pos2+2,11);
    					      	}
    					   
    					    if (ereg($fnfortunaq,$ligne))
    					       		{	
    					       			$Pos3 = strpos($ligne,0);
    						        	$Pos4 = strpos($ligne,"l");
    						        	$Pos5 = strpos($ligne,"/");
    					            	$Entetefn = substr($ligne,$Pos3,$Pos4-2);
    					            	$JHeurefn = substr($ligne,$Pos5+9,5);
    						        	$JDatefn = substr($ligne,$Pos4+2,11);
    					       	   }    					       	
    					 	    					       		    					       	    
    					            
    					       	    					
    					
       						        //*****
    						        $stmt->bindParam(':JDatedeb',$JDatedeb);
        				   			$stmt-indParam(':JHeuredeb',$JHeuredeb);
        				   			$stmt->bindParam(':JDatefn',$JDatefn);
        				   			$stmt->bindParam(':JHeurefn',$JHeurefn);        				   
        				   			$stmt->execute();
    						      			   	        
    					      }   

donc j'ai essayé avec do while mais ko

bref je ne vois pas .

Posté : 01 juil. 2007, 18:20
par jpaul
Bonjour,

Que ce soit do ou while ou tout autre structure de contrôle ne changera pas grand chose à la logique.
Si j'ai bien compris ton cas (tu as 3 deb et un seul fin et tu ne veux tenir compte que du premier deb), dans ce cas, il faut simplement que tu n'initialises les variables deb que la première fois (donc si elle ne contiennent rien) tu en initialises au moins une avec une ligne vide et tu rajoutes une condition au if :
$JDatedeb = ""; // initialisation à vide

foreach ($Log as $ligne)
                        {
                           if((ereg($debfortunaq,$ligne)) && ($JDatedeb == "")) // condition modifiée
                                  {                                      
                                      $Pos1 = strpos($ligne,0);
                                      $Pos2 = strpos($ligne,"l");
                                      $Pos3 = strpos($ligne,"/");
                                      $Entetedeb = substr($ligne,$Pos1,$Pos2-2);
                                      $JHeuredeb = substr($ligne,$Pos3+9,5);
                                      $JDatedeb = substr($ligne,$Pos2+2,11);
                                  }
                           
                            if (ereg($fnfortunaq,$ligne))
                                       {    
                                           $Pos3 = strpos($ligne,0);
                                        $Pos4 = strpos($ligne,"l");
                                        $Pos5 = strpos($ligne,"/");
                                        $Entetefn = substr($ligne,$Pos3,$Pos4-2);
                                        $JHeurefn = substr($ligne,$Pos5+9,5);
                                        $JDatefn = substr($ligne,$Pos4+2,11); 
                                      }                                   
                                                                                                           
                                    
                              } 
                                                           
// Si j'ai bien compris, le code qui suit n'a rien à faire dans la boucle...                        
                                       //*****
                                    $stmt->bindParam(':JDatedeb',$JDatedeb);
                                       $stmt-indParam(':JHeuredeb',$JHeuredeb);
                                       $stmt->bindParam(':JDatefn',$JDatefn);
                                       $stmt->bindParam(':JHeurefn',$JHeurefn);                           
                                       $stmt->execute();
                                                             

Posté : 01 juil. 2007, 20:06
par sacco
je suis d'accord mais cela fonctionne que si j'avais que trois ligne à traité mais j'ai un fichier entier ex:

Début génération des cubes quotidiens - le 2/10/2006 11:45
Début génération des cubes quotidiens - le 3/10/2006 05:15
Début génération des cubes quotidiens - le 4/10/2006 06:30
Fin génération des cubes quotidiens - le 4/10/2006 09:43
*****************************************************************
Début génération des cubes quotidiens - le 5/10/2006 07:45
Fin génération des cubes quotidiens - le 5/10/2006 11:50
*****************************************************************
Début génération des cubes quotidiens - le 6/10/2006 05:15
Fin génération des cubes quotidiens - le 6/10/2006 09:34
*****************************************************************
Début génération des cubes quotidiens - le 9/10/2006 05:30
Fin génération des cubes quotidiens - le 9/10/2006 09:32
*****************************************************************
Début génération des cubes quotidiens - le 10/10/2006 05:15
Fin génération des cubes quotidiens - le 10/10/2006 09:19

Posté : 01 juil. 2007, 22:44
par jpaul
Ben dans ce cas qu'est ce qui t'empêche quand tu détectes fin de remettre la variable à "" ?
Ca devrait matcher :
$JDatedeb = ""; // initialisation à vide

foreach ($Log as $ligne)
                        {
                           if((ereg($debfortunaq,$ligne)) && ($JDatedeb == "")) // condition modifiée
                                  {                                      
                                      $Pos1 = strpos($ligne,0);
                                      $Pos2 = strpos($ligne,"l");
                                      $Pos3 = strpos($ligne,"/");
                                      $Entetedeb = substr($ligne,$Pos1,$Pos2-2);
                                      $JHeuredeb = substr($ligne,$Pos3+9,5);
                                      $JDatedeb = substr($ligne,$Pos2+2,11);
                                  }
                           
                            if (ereg($fnfortunaq,$ligne))
                                       {    
                                           $Pos3 = strpos($ligne,0);
                                        $Pos4 = strpos($ligne,"l");
                                        $Pos5 = strpos($ligne,"/");
                                        $Entetefn = substr($ligne,$Pos3,$Pos4-2);
                                        $JHeurefn = substr($ligne,$Pos5+9,5);
                                        $JDatefn = substr($ligne,$Pos4+2,11); 
 // On traite quand on a detecté fin              
                                       //*****
                                    $stmt->bindParam(':JDatedeb',$JDatedeb);
                                       $stmt-indParam(':JHeuredeb',$JHeuredeb);
                                       $stmt->bindParam(':JDatefn',$JDatefn);
                                       $stmt->bindParam(':JHeurefn',$JHeurefn);                           
                                       $stmt->execute();
//puis on remet à ""
                                       $JDatedeb = ""; // ré-initialisation à vide
                                     }                                   
                                                                                                           
                                    
                              }

Posté : 04 juil. 2007, 07:14
par sacco
merci .