problème sur récuperation de ligne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème sur récuperation de ligne

par sacco » 04 juil. 2007, 07:14

merci .

par jpaul » 01 juil. 2007, 22:44

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
                                     }                                   
                                                                                                           
                                    
                              }

par sacco » 01 juil. 2007, 20:06

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

par jpaul » 01 juil. 2007, 18:20

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();
                                                             

problème sur récuperation de ligne

par sacco » 01 juil. 2007, 17:42

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 .