Déplacer le curseur d'un fichier [Résolu]

Signaler
Messages postés
15
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
18 janvier 2021
-
Messages postés
15
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
18 janvier 2021
-
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

Messages postés
3668
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 janvier 2021
981
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
Messages postés
15
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
18 janvier 2021

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
Messages postés
31088
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
3 193
Bonjour,

$row = 1;
    $firstLine = fgetcsv($handle , 1000, ",");
    //on passe aux lignes suivantes
	while(($data = fgetcsv($handle , 1000, ",")) !== FALSE)
	{

Messages postés
15
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
18 janvier 2021

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




Messages postés
31088
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
3 193
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
Messages postés
15
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
18 janvier 2021

Je pensais à quelque chose de plus compliquer mdr,
merci à toi c'est résolu