Comparateur de deux tableaux php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comparateur de deux tableaux php

Re: Comparateur de deux tableaux php

par lucieemtl » 13 déc. 2015, 10:40

C'est fait pourtant..

Re: Comparateur de deux tableaux php

par sirakawa » 12 déc. 2015, 10:01

Il faut d'abord lire lews deux fichiers en entrée et les stocker dans des tableaux avant de les comparer et de lexws traiter.
Il n'y a auci=un besoin de passer par des boucles pour faire les comparaisons.

Re: Comparateur de deux tableaux php

par @rthur » 11 déc. 2015, 18:42

Modération :
15h19, 15h36, 15h53, 16h22... Pour rappel, il est interdit sur PHPfrance de poster plusieurs fois sur un message juste pour attirer l'attention dessus.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

En cas de récidive, ce message sera verrouillé.

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 18:06

Le fait de modifier n'a rien changer.

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 18:04

C'est assez urgent en fait... cela fait 3 heures que je suis dessus, et je suis sûre que je bloque pour pas grand chose ! Donc des yeux supplémentaires seraient très probablement d'une très grande aide...

Je modifie ça, et je vous redis quoi.

Re: Comparateur de deux tableaux php

par Spols » 11 déc. 2015, 17:54

affiche la valeur de tes variables a différent endroit du code pour trouver où elles ne prennent pas la valeur que tu voudrais

Le double, triple, ... post est très mal vu, ce n'est pas en polluant ton propre sujet que les gens vont y répondre plus vite

Je viens de voir, dans un if l'égalité c'est un double == et pas un simple

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 17:47

S'il vous plaît.... Le problème est juste qu'il ne passe pas par mon else...

[...]

Code : Tout sélectionner

if($test = 1){ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." est un étudiant dans l'établissement.</br>"; //vérification redoublement if($test2 = 1){ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." a redoublé </br>"; } } else{ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." n'est plus présent </br>"; }

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 17:22

:(

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 16:53

S'il vous plaît pouvez-vous m'aider :(

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 16:36

Déjà array_intersect ne fonctionne pas avec les fichiers apparemment :/

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 16:19

Je devrais pouvoir me débrouiller avec ça, je vais y jeter un coup d'oeil ! Merci !

Re: Comparateur de deux tableaux php

par sirakawa » 11 déc. 2015, 16:14

Bjr,
Il existe de nombreuses fonctions de comparaison de tableaux:
En particulier
http://php.net/manual/fr/language.operators.array.php
(Si admettons, l'élève Jean Lagaffe est en terminale STMG dans le fichier1.csv et apparaît de cette même façon dans le fichier fichier2.csv, alors cela signifie que celui-ci a redoublé.)
http://php.net/manual/fr/function.array-intersect.php donne tous les redoublants dans un NOUVEAU tableau.

Code : Tout sélectionner

$redoublants = array_intersect ($t1, $t2);
et
http://php.net/manual/fr/function.array-diff.php (tab1, tab2) rend ceux qui sont dans tab1 et pas dans tab2

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 16:13

Donc voici mon code mais ça ne change rien :

Code : Tout sélectionner

<!DOCTYPE> <HTML> <HEAD> <meta charset="utf-8"/> </HEAD> <BODY> <form method="POST" action="index.php" enctype="multipart/form-data"> <!-- On limite le fichier à 100Ko --> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> Fichier 1 : <input type="file" name="avatar"> Fichier 2 : <input type="file" name="avatar2"> <input type="submit" name="envoyer" value="Envoyer le fichier"> </form> <?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'] . "'."; } //Tableau 1 $tableau1 = array(); if(($handle = fopen($_FILES['avatar']['tmp_name'], "r")) !== FALSE){ $key = 0; while(($data = fgetcsv($handle, 1000, ",")) !== FALSE){ $count = count($data); for ($i0=0; $i0 < $count; $i0++){ $tableau1[$key][$i0] = $data[$i0]; } $key++; } fclose($handle); } echo "<br/>"; print_r($tableau1); echo "<br/>"; //Tableau 2 $tableau2 = array(); $filename2 = "Pronoteentier.csv"; if(($handle2 = fopen($_FILES['avatar2']['tmp_name'], "r")) !== FALSE){ $key2 = 0; while(($data = fgetcsv($handle2, 1000, ",")) !== FALSE){ $count2 = count($data2); for ($i1=0; $i1 < $count2; $i1++){ $tableau2[$key2][$i1] = $data[$i1]; } $key2++; } fclose($handle2); } echo "<br/>"; print_r($tableau2); echo "<br/>"; //Parcours des deux tableaux for ($i=0; $i < count($tableau1); $i++) { $test = 0; $test2 = 0; for ($i2=0; $i2 < count($tableau2); $i2++) { //vérification de l'élève présent if( $tableau1[$i][0] === $tableau2[$i2][0] && $tableau1[$i][1] === $tableau2[$i2][1]){ //si élèves présent initialisation de vérificateur a 1 $test = 1; //vérification redoublement if ($tableau1[$i][2] === $tableau2[$i2][2]) { $test2 = 1; } } } //vérification du vérificateur pour l'èleve if($test= 1){ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." est un étudiant dans l'établissement.</br>"; //vérification redoublement if($test2 = 1){ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." a redoublé </br>"; } } else{ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." n'est plus présent </br>"; } } } ?> </BODY> </HTML>

Re: Comparateur de deux tableaux php

par Spols » 11 déc. 2015, 16:09

met cette initialisation juste entre tes deux for, il faut que ces variables soit "vierge" à chaque itération de ta première boucle.

Re: Comparateur de deux tableaux php

par lucieemtl » 11 déc. 2015, 16:06

Code : Tout sélectionner

//Parcours des deux tableaux $test = 0; $test2 = 0; for ($i=0; $i < count($tableau1); $i++) { for ($i2=0; $i2 < count($tableau2); $i2++) { //vérification de l'élève présent if( $tableau1[$i][0] === $tableau2[$i2][0] && $tableau1[$i][1] === $tableau2[$i2][1]){ //si élèves présent initialisation de vérificateur a 1 $test = 1; //vérification redoublement if ($tableau1[$i][2] === $tableau2[$i2][2]) { $test2 = 1; } } } //vérification du vérificateur pour l'èleve if($test= 1){ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." est un étudiant dans l'établissement.</br>"; //vérification redoublement if($test2 = 1){ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." a redoublé </br>"; } } else{ echo "L'èleve ".$tableau1[$i][0]." ".$tableau1[$i][1]." n'est plus présent </br>"; } } }