Déplacer le curseur d'un fichier

Résolu/Fermé
Augustin_couval Messages postés 20 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 18 février 2021 - 8 janv. 2021 à 09:59
Augustin_couval Messages postés 20 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 18 février 2021 - 8 janv. 2021 à 10:37
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
A voir également:

4 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 8 janv. 2021 à 10:19
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
Augustin_couval Messages postés 20 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 18 février 2021
8 janv. 2021 à 10:19
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
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
8 janv. 2021 à 10:22
Bonjour,

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

0
Augustin_couval Messages postés 20 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 18 février 2021
8 janv. 2021 à 10:28
ç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
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
8 janv. 2021 à 10:31
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
Augustin_couval Messages postés 20 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 18 février 2021
8 janv. 2021 à 10:37
Je pensais à quelque chose de plus compliquer mdr,
merci à toi c'est résolu
0