Page 1 sur 1

Modifier un tableau multidimensionnel en PHP

Posté : 13 déc. 2015, 18:27
par lucieemtl
Bonsoir,

Cherchant à produire un comparateur de tableaux, j'ai plus ou moins réussi à mettre en place le système suivant :

Des données sont comprises dans un fichier csv (soit Pronoteentier), et d'autres moins récentes, dans un deuxième (soit Pronotetest). La comparaison permet de créer un fichier généré dans lequel, à chaque ligne où un élément différent est trouvé, il est placé à sa ligne respective dans un nouveau tableau. Cependant.. Les autres champs n'apparaissent pas !
Un petit coup de main s'il vous plaît ?

Code : Tout sélectionner

<!DOCTYPE> <HTML> <HEAD> <meta charset="utf-8"/> <link rel="stylesheet" href="style.css"/> <link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'> </HEAD> <BODY> <div id="entete"> <div id="espacelogo"> <img src="logo.png" id="logo"/> <img src="titrelogo.png" id="titrelogo"/> </div> <h1>Vos fichiers.csv comparés en toute qualité</h1> </div> <div id="sousmenu"></div> <div id="corpus"> <form method="POST" action="index.php" enctype="multipart/form-data"> <!-- On limite le fichier à 100Ko --> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> <div id="fichiers"> <div id="entetefichiers"> <p class="p">1. Recherche des fichiers</p> </div> Veuillez choisir un premier fichier au format (.csv) : <br/> <input type="file" name="avatar" id="avatar"> <br/> <br/> Veuillez choisir un deuxième fichier au format (.csv) : <br/> <input type="file" name="avatar2" id="avatar2"> <br/> <br/> <div id="enteteenvoyer"> <p class="p">2. Comparer !</p> </div> <p id="explications"> Veuillez cliquer sur le bouton ci-contre pour établir la comparaison de vos fichiers. <br/> Vous aurez ensuite la possibilité de télécharger le fichier .csv généré avec les mises à jour crées en format (.csv) ou en pfd.<br/> </p> <input type="submit" name="envoyer" id="envoyer" value=" "> </div> </form> </div> <div id="corpustraitement"> <?php if(isset($_POST['envoyer'])){ if (is_uploaded_file($_FILES['avatar']['tmp_name'])) { $filename = $_FILES['avatar']['tmp_name'] . "'."; } else { echo "Nom du fichier : '". $_FILES['avatar']['tmp_name'] . "'."; } $a1=Array(); if (($handle = fopen($_FILES['avatar']['tmp_name'], "r")) !== FALSE) { $key = 0; // Set the array key. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $count = count($data); //get the total keys in row //insert data to our array for ($i=0; $i < $count; $i++) { $a1[$key][$i] = $data[$i]; } $key++; } fclose($handle); //close file handle } $a2=Array(); if (($handle1 = fopen($_FILES['avatar2']['tmp_name'], "r")) !== FALSE) { $key1 = 0; // Set the array key. while (($data1 = fgetcsv($handle1, 1000, ",")) !== FALSE) { $count1 = count($data1); //get the total keys in row //insert data to our array for ($i1=0; $i1 < $count1; $i1++) { $a2[$key1][$i1] = $data1[$i1]; } $key1++; } fclose($handle1); //close file handle } foreach ($a1 as $k1 => $v1) { if ( $u = array_diff($a2[$k1], $a1[$k1]) ) { $update_items[$k1] = $u; } } print_r($update_items); // Paramétrage de l'écriture du futur fichier CSV $chemin = 'fichier.csv'; $delimiteur = ','; // Pour une tabulation, utiliser $delimiteur = "t"; // Création du fichier csv (le fichier est vide pour le moment) // w+ : consulter http://php.net/manual/fr/function.fopen.php $fichier_csv = fopen($chemin, 'w+'); // Si votre fichier a vocation a être importé dans Excel, // vous devez impérativement utiliser la ligne ci-dessous pour corriger // les problèmes d'affichage des caractères internationaux (les accents par exemple) fprintf($fichier_csv, chr(0xEF).chr(0xBB).chr(0xBF)); // Boucle foreach sur chaque ligne du tableau foreach($update_items as $ligne){ // chaque ligne en cours de lecture est insérée dans le fichier // les valeurs présentes dans chaque ligne seront séparées par $delimiteur fputcsv($fichier_csv, $ligne, $delimiteur); } // fermeture du fichier csv fclose($fichier_csv); } ?> </div> </BODY> </HTML>

Re: Modifier un tableau multidimensionnel en PHP

Posté : 13 déc. 2015, 18:34
par lucieemtl
Un exemple pour être plus précise :

Dans Pronoteentier.csv, il y aura ligne 1, Jean Lagaffe, 1STMG, champs supplémentaire 1, champs supplémentaire 2.
Dans Pronotetest.csv, il y'aura à la même ligne, Jean Lagaffe, TSTMG, champs supplémentaire 1, champs supplémentaire 2.
Le problème est que dans le fichier généré, seules les différences concernant les lignes respectives qui s'affichent.
Par exemple, dans notre fichier généré, ce qui s'affichera à la ligne de Jean Lagaffe, est TSTMG. Son nom n'apparaîtra pas, son prénom non plus etc. Et c'est la chose contre laquelle je lutte.

Quelqu'un peut-il m'aidé s'il vous plaît ?

Re: Modifier un tableau multidimensionnel en PHP

Posté : 15 déc. 2015, 00:15
par lucieemtl
Merci à tous de m'avoir aidé !!!!!
Au final, j'ai pu trouvé une solution à mon problème (nous ne sommes jamais mieux servi que par soi-même) !!
Bonne soirée, cordialement !