Dédoublonnage et gestion de logs
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:
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');
#}
///////////////////////////////////////////////////////
?> |