Bonjour à tous,
Alors voilà, je suis débutant et je dois faire un code qui permet d'effectuer ceci*:

- Aller chercher un fichier CSV
- Vérifier si le fichier existe ou non
- Afficher la taille du fichier.
- Lecture du fichier ligne à ligne.
- Comptage du nombre de ligne.
- Création d'une clé unique par ligne non implémentée au fichier.

Jusqu'à là c'est bon tout marche
Maintenant ça se complique .

- Vérification de doublons sur le fichier.
- Si doublon indiquer l'endroit (la /les lignes concernées) du fichier ou les doublons sont présents et stopper le traitement.
- Si pas de doublons on continue le traitement.

- Connexion à Mysql
- Importation du fichier dans Msql
- créer un rapport sur l'importation du fichier.
- Déconnexion de la bdd

le truc c'est que j'arrive pas à faire un dédoublonnage qui soit correcte.
Je m'explique quand je met un fichier sans doublons mon code m'en trouve quand même et quand j'en met un avec un ou deux doublons il en trouve à chaque lignes.

Enfin bref plutôt qu'un long discourt 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
#######################	TEST #######################
<?php 
###################################################
			// Définition du fichier \\
 
//On définit notre fichier cible. 
$fic=("C:/Users/PCj/www/depot_csv/fichier.csv");
 
//On indique si le fichier est présent ou non. 
if (file_exists($fic))
	{
    echo "<br />Le fichier ciblé existe.<br />";
 
###################################################
			// Taille du fichier \\
 
	echo "<br />La taille du fichier est de :" . filesize("$fic")." octets. <br />"; 
	}
else 
	{
    echo "<br />Le fichier ciblé n'est pas présent à l'endroit indiqué.<br />";
	}
 
###################################################
		// Ouverture du CSV dans PHP\\
 
$doublon = 0 ; // On initialise la variable doublon.
$row = 1 ; 	  // On initialise les lignes.
$clé = array(); // On initialise un tableau vide pour nos clé
 
// Si $fic est bien ouvert on commence le traitement. 
if (($fic = fopen ("$fic", "r+")) !== FALSE) 
{
// Tant qu'il y a des lignes, lis les et fait en un tableau.
while (($data = fgetcsv($fic,0, '"')) !== FALSE)
{
	foreach ( $row as $fic); // Pour chaques lignes...
	{
	$num = count($row);// compte combien il y a de lignes.
 
//Concaténation des colonnes 0 et 1. 
 
		$clé = ($data[0].$data[1]);	
 
			//affiche les clé.
	#print_r  ($clé. "<br />");
 
	// Vérification de la concaténation. 
	if ( $clé != ($data[0].$data[1]))
	{
	print_r ($clé . "<br />Erreur de concatennation.<br />");
	EXIT;
	}
	}
}
}	
###################################################
			// Dédoublonnage \\
 
 
foreach ($clé [CODLIG] as $clé)
	{
 
	if ((in_array($clé[CODELIG], $clé, FALSE)))
		{
		echo "Pas de doublon.<br  />";
		}
	else
		{
		echo ($num);
		$doublon++;
		count ($doublon);
 
 
	echo "<br  /> Il y a $doublon doublon(s)<br  />";
	echo "<br  /> Doublon détecté, ligne n° $num <br  />";
		}
	}	
###################################################	 	
			   // Affichage rapport \\
 
if ($doublon > 1)
{
	echo "<br  /> $doublon Doublons détectés dans le fichier. <br  />";
foreach ($doublon as $clé)
	{	
	print_r("<br  />Les doublons sont présents sur les lignes n° $num . <br  />");
	}
}
 
elseif ($doublon = 1)
	{
	echo "<br  /> $doublon Doublon détecté dans le fichier. <br  />";
	print_r ("<br  />Le doublon est présent sur la ligne n° $num . <br  />");
	exit;
	}
 
else 
	{
	echo"<br  />Le fichier ne comporte pas de doublon. <br  />";
	}
 
 
###################################################
			   // Connexion à la BDD \\
 
// On initialise nos données de connexion 
#	$serveur = "localhost/mysql";
#	$nom_base = "MySql";
#	$login = "****";
#	$motdepasse = "****";
 
// On se connecte et si erreur => rapport. 				
 
#if (doublon < 1)
#{
#	mysql_connect ($serveur,$login,$pwd) or die ('ERREUR '.mysql_error());
 
#	if (mysql_connect ($serveur,$login,$pwd)) 
#	{
#		echo 'connexion réussie';
#	}
#	else 
#	{
#		echo 'connexion impossible...'.mysql_error();
#	}
#	include('.localhost/mysql');
#}
///////////////////////////////////////////////////////
 
?>