Déplacer le curseur d'un fichier

Résolu
Augustin_couval Messages postés 22 Statut Membre -  
Augustin_couval Messages postés 22 Statut Membre -
Bonjour,

j'écris le contenu d'un fichier sur un autre fichier, en première ligne j'ajoute des noms de colones et je souhaiterais que l'écriture du fichier commence à la deuxième ligne avec la doc php sur les fichier je n'ai pas trouvé.

Avez vous une idée?

Voici le code :

if (($handle_result = fopen("C:/Users/augustin.couvale/Documents/Projet/fiche_produit_initial.txt", "a+")) !== FALSE) 
{
//ouverture du fichier initial
if(($handle = fopen("C:/Users/augustin.couvale/Documents/Projet/PRICE.TXT", "r+")) !== FALSE)
{
	fwrite($handle_result, "nom_fabricant_description_1 , description_2 , ref_unique , statut_produit , code_barre , poids_produit ");
	$row = 1;
	while(($data = fgetcsv($handle , 1000, ",")) !== FALSE)
	{
		$row ++;
		if ($row <10000) 
		{

		fputcsv($handle_result, 
		array($data[1].$data[4],$data[5],$data[7],$data[12],
			  $data[13],$data[16]));
		}
		else
		{
			break;
		}

	
	}
}

	//fermeture du fichier inital
	fclose($handle);
}
//fermeture du fichier resultat
fclose($handle_result);




Configuration: Windows / Chrome 87.0.4280.141

4 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Tu peux faire fseek (https://www.php.net/manual/en/function.fseek.php) pour te déplacer à un endroit précis.
    Pour avancer d'une ligne sans connaître à l'avance sa taille, par contre, tu dois pouvoir faire un fgets() même sans récupérer le résultat, s'il ne t'intéresse pas.

    Xavier
    0
  2. Augustin_couval Messages postés 22 Statut Membre
     
    oui mais un fgets() permet de récupérer la ligne courrante pas de faire avancer le pointeur il me semble a part si je me trompe
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Bonjour,

      $row = 1;
          $firstLine = fgetcsv($handle , 1000, ",");
          //on passe aux lignes suivantes
      	while(($data = fgetcsv($handle , 1000, ",")) !== FALSE)
      	{
      
      
      0
  3. Augustin_couval Messages postés 22 Statut Membre
     
    ça ne fonctionne pas,



    j'aimerais que après "poids_produit" sa écrive à la ligne suivante

    
    if (($handle_result_pix = fopen("C:/Users/augustin.couvale/Documents/Projet/prix_achat_fournisseur.txt", "a+")) !== FALSE)
    {
    
    
    //ouverture du fichier resultat ou création si il n'existe pas
    if (($handle_result_produit = fopen("C:/Users/augustin.couvale/Documents/Projet/fiche_produit_initial.txt", "a+")) !== FALSE) 
    {
    //ouverture du fichier initial
    if(($handle = fopen("C:/Users/augustin.couvale/Documents/Projet/PRICE.TXT", "r+")) !== FALSE)
    {
    	//ecriture nom colone fichier prix
    	fwrite($handle_result_pix, " ref_ingram , prix_achat");
    	//ecriture nom colones fiche produit
    	fwrite($handle_result_produit, "nom_fabricant_description_1 , description_2 , ref_unique , statut_produit , code_barre , poids_produit ");
    	$row = 1;
    	$fistline = fgets($handle_result_produit, 1000);
    	while(($data = fgetcsv($handle , 2000, ",")) !== FALSE)
    	{
    		
    		$row ++;
    		if ($row <10000) 
    		{
    
    		fputcsv($handle_result_produit, 
    		array($data[1].$data[4],$data[5],$data[7],$data[12],
    			  $data[13],$data[16]));
    
    		fputcsv($handle_result_pix, array($data[3].$data[8]));
    		}
    		else
    		{
    			break;
    		}
    
    	
    	}
    }
    
    	//fermeture du fichier inital
    	fclose($handle);
    }
    //fermeture du fichier resultat
    fclose($handle_result_produit);
    
    }
    fclose($handle_result_pix);
    
    
    
    
    
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Ton souci n'est donc pas de ne pas lire la première ligne....
      mais d'ajouter un retour à la ligne après le mot poids produit ?

      Ben.. il faut le mettre ce retour à a la ligne....
      Dans ta ligne de code
      	fwrite($handle_result_produit, "nom_fabricant_description_1 , description_2 , ref_unique , statut_produit , code_barre , poids_produit ");
      


      NB: Un retour à a ligne, ça se traduit par \n ou par \r\n
      0
  4. Augustin_couval Messages postés 22 Statut Membre
     
    Je pensais à quelque chose de plus compliquer mdr,
    merci à toi c'est résolu
    0