Bonjour à tous,

voici mon problème :

je pars d'un fichier csv dans le lequel mes données sont rangées de la manière suivante :

champ(1)/champ(2)/..../champ(n)

mais sur certaines lignes de mon fichier csv j'ai cela :

champ(1)/champ(2)/..../champ(i)
suite du champ(i)/.../champ(n)

Je souhaiterai réécrire correctement mes données dans un nouveau fichier csv.

Mon but est ensuite de pouvoir importer ce nouveau fichier correctement réécrit dans une base MySQL.

De plus, j'effectue des traitements sur mes lignes de données pour que je puisse correctement les exploiter par la suite.

Grâce à mon code je parviens à réécrire mes données dans le nouveau fichier csv mais elles sont toujours sous la forme :
champ(1)/champ(2)/..../champ(i)
suite du champ(i)/.../champ(n)

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
 
<?php
// On se connecte à la base
	mysql_connect("localhost", "root", "");
	mysql_select_db("bdd_evenementsmajeurs_backbonerbci");
 
// ENREGISTREMENT DU FICHIER A IMPORTER ET VERIFICATIONS
//---------------------------------------------------------------------
// On enregistre le fichier sur le disque dans le dossier upload :
//---------------------------------------------------------------------
	if (!(isset($_POST['annuler']) or isset($_POST['mettreAJour'])))
	{
		$dossier = 'upload/'; 	// Dossier où tous les fichiers importés seront stockés
		$fichier = basename($_FILES['ticket']['name']);	 // On récupère le nom du fichier
		$taille_maxi = 100000; // On limite la taille des fichiers à 100ko
		$taille = filesize($_FILES['ticket']['tmp_name']); // On récupère la taille du fichier chargé
		$extensions = array('.csv'); //Extension du fichier à importer
		$extension = strrchr($_FILES['ticket']['name'], '.'); // On récupère l'extension du fichier chargé
		//Début des vérifications de sécurité...
		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
		{
			$erreur = 'Vous devez uploader un fichier de type csv ...';
		}
		if($taille>$taille_maxi) // Si le fichier chargé est trop gros
		{
			$erreur = 'Le fichier est trop gros...<br/> Vous êtes limité à 100ko';
		}
 
		//On formate le nom du fichier ici...
		$fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 	'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
		$fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $fichier); // On remplace le nom du fichier chargé
		}
	// FIN DES VERIFICATIONS
 
	if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
	{
// On regarde si le fichier a déjà été téléchargé
	if (!(file_exists($dossier . $fichier))) // S'il n'existe pas, c'est qu'on le charge pour la première fois
	{
		move_uploaded_file($_FILES['ticket']['tmp_name'], $dossier . $fichier);
					//--------------------------------------------------------
// On ouvre le fichier pour effectuer les modifications :
//--------------------------------------------------------
		$handle = @fopen($dossier.$fichier, "r+"); // on ouvre le fichier chargé
		$csv_ok = @fopen('C:\\Program Files\\wamp\\www\\projet_tickets\\admin\\upload_ok\\ok_' . $fichier, "w+"); // on ouvre le fichier sui sera chargé dans la base, s'il n'existe pas il est créé
		// Test d'ouverture des fichiers
		if (!($handle))
		{
		echo 'impossible d\'ouvrir le fichier' . $fichier . '<br/>';
		}
		else
		{
		echo $fichier . ' ouvert<br/>';
		}
 
		if (!($csv_ok))
		{
		echo 'impossible d\'ouvrir le fichier ok_' . $fichier . '<br/>';
		}
		else
		{
		echo 'ok_' . $fichier . ' ouvert<br/>';
		}
 
	// On regarde si le fichier est accessible en écriture
		if (is_writable('C:\\Program Files\\wamp\\www\\projet_tickets\\admin\\upload_ok\\ok_' . $fichier))
		{
			$date_fr = "/([a-z]{3} \d{1,2}\/\d{1,2}\/\d{4} \d{1,2}\:\d{2})/";
			$impact_pt = "/(\d{1}\,\d{2})/";
			$impact_pondere = "/(\d{1,10}\:\d{2}\:\d{2})/";
			// On effectue toutes les modifications nécéssaires
				while(!feof($handle))
				{
					$ligne_en_cours = fgets($handle);
 
					if (!feof($handle)) 
					{
					// On supprime les fins de ligne sur les lignes non complètes
					if (!preg_match("/(\r)$/",$ligne_en_cours)) // \r correspond au retour chariot
					{	
					$ligne_en_cours = preg_replace("/(\r\n|\n|\r)/", "", $ligne_en_cours);
					}
	// On modifie les formats de date pour les exploiter dans MySQL
					if(preg_match_all($date_fr, $ligne_en_cours, $datetrouvee, PREG_PATTERN_ORDER))
					{
					$date_a_modifier = $datetrouvee[0][0];
					$date_a_mettre = datefr2en($datetrouvee[0][0]);
					$ligne_en_cours = str_replace($date_a_modifier, $date_a_mettre, $ligne_en_cours);
					}
								if(preg_match_all($impact_pt, $ligne_en_cours, $impactTrouve, PREG_PATTERN_ORDER))
					{
						$impact_a_modifier = $impactTrouve[0][0];
						$impact_a_mettre = modifImpact($impactTrouve[0][0]);
						$ligne_en_cours = str_replace($impact_a_modifier, $impact_a_mettre, $ligne_en_cours);
					}
 
								if(preg_match_all($impact_pondere, $ligne_en_cours, $impactPondereTrouve, PREG_PATTERN_ORDER))
								{
									$impact_pondere_a_modifier = $impactPondereTrouve[0][1];
									$impact_pondere_a_mettre = duree2sec($impactPondereTrouve[0][1]);
 
									$ligne_en_cours = str_replace($impact_pondere_a_modifier, $impact_pondere_a_mettre, $ligne_en_cours);
								}
 
								$ligne_en_cours = str_replace("'", "_", $ligne_en_cours);
								$ligne_en_cours = str_replace("; ", ";", $ligne_en_cours);
 
								// On écrit que les bonnes lignes dans le fichier
								if(preg_match("/^(\d{1,9})/",$ligne_en_cours))
								{
									if(strlen($ligne_en_cours))
									{
										fwrite($csv_ok,$ligne_en_cours);
									}
								}
								else
								{
									fwrite($csv_ok,$ligne_en_cours);
								}
 
							}
						}
						echo 'Le chargement a été effectué</br>';
 
					   // On n'oublie pas de fermer les fichiers
						fclose($handle);
						fclose($csv_ok);   
					}
					else 
					{
						echo 'Impossible d\'écrire dans le fichier ok_' . $fichier . '</br>';
					}
 
 
					// On charge le fichier correct dans la base
					mysql_query("LOAD DATA INFILE 'C:/Program Files/wamp/www/projet_tickets/admin/upload_ok/ok_" . $fichier . "' INTO TABLE `qpr` FIELDS TERMINATED BY ';' (`oceane`,`date_debut`,`duree`,`gravite`,`equipement`,`type_vendor`,`nb_clients_impactes`,`commentaires`,`cause`,`coeff_impact`,`impact_pondere`)") or die(mysql_error());
					?>

Merci à tous pour votre aide