Tu utilises quel editeur ?
lene me retourne aucune erreur si je mets du text à la colonne K avez vous une idée (c'est le cas pour plusieurs colonnes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(!is_numeric($line['K']))
C'est correct chez moi. Tu dois bosser sur la mauvaise feuille.
Ajoute cecijuste avant
Code : Sélectionner tout - Visualiser dans une fenêtre à part $objPHPExcel->setActiveSheetIndexByName("2G");ça te permettra d'être sur de travailler sur la feuille 2G (ou 3G si tu veux le changer)
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, false, true);
Il y a aussi un autre problème:Excel traite tous les chiffres comme des double (float) et non des entiers. Tous tes tests utilisant is_int échouent donc même si les valeurs sont valides.
Il faut donc les remplacer par la fonction suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function is_intval($value) { return 1 === preg_match('/^[+-]?[0-9]+$/', $value); } //puis dans le code, au lieu de if(!is_int(x)) //utiliser if(!is_intval(x))
je nous vous ai pas dit que j'ai un probleme quand j'ouvre le fichier que je vous ai envoyé je reçois une erreurdonc depuis toute à l'heure je copie le contenu de la feuille dans le fichier test que vous avez envoyé pour tester le code . peut etre c'est un probleme d'extension qu'en pensez vous.?could not open BDD_DE_BASE.xls for reading!File does not exist' in .........\Excel5.php on line 519
je sais c'est trop compliqué chez moi
Min_altitude est défini comme –500–8000. Est-ce que cette altitude négative est correcte? D'autant que le texte précise "above the sea level".
Et je pense que ton test n'est pas correct:
tu teste pour une altitude entre - 8000 et -500. Au moins - 8000 est incorrect je pense. le - n'est pas un signe négatif, mais plutôt un signe d'intervalle (comme 0–999 dans la ligne précédente).
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (!(is_intval($line['AD']) and ($line['AD'] >= -8000 and $line['AD'] <= -500)))
Aucune idée, mais par contre ton fichier est beaucoup trop lourd (1,2 Mo) et PHP mets trop de temps à l'analyser. Donc, moi aussi j'ai copié les tableaux dans un autre fichier qui ne fait que 27 Ko pour les mêmes données. Si ce sont des fichiers excel générés par un programme et qu'ils font tous cette taille, ça consommera énormément de mémoire.
Ok, tu trouveras 2 fichiers en PJ: index.php (qui prends un fichier en local, à toi d'adapter ça ensuite), et invalid_cells.php que tu devras mettre dans le répertoire Classes.
En fait, j'ai déplacé toutes les vérifications dans invalid_cells.php et les ai mises dans une fonction afin de pouvoir les réutiliser.
Note que je n'ai pas corrigé les problèmes d'altitude négative dans les vérifications, donc il faut que tu les changes.
Comme avant, ce script prends la feuille "2G", vérifie les cellules, et ensuite affiche à l'utilisateur dans un formulaire les champs invalides. L'utilisateur les corrige, puis soumets le formulaire. Les champs corrigés sont ensuite fusionnés avec le tableau contenant la feuille d'origine (stocké en session), puis le tout est re-vérifié.
S'il y a encore des erreurs, les erreurs sont ré-affichés. Sinon, on passe à l'enregistrement dans une base de données (partie absente du script).
Regarde, et dis-moi demain s'il y a des choses que tu n'arrives pas à suivre.
Reste à faire:
écrire les règles de validation pour 3G, à mettre dans une fonction dans invalid_cells.php, pour traiter 3G de la même manière.
Et éventuellement le stockage de tout cela dans une base de données (MySQL ?).
merciiiiiiiiii infiniment votre aide.
oui les données doivent etre stockées dans une BDD mysql
pouvez vous m'expliquer ce que affiche cette portion du code est ce que seleument les cellulles invalides parceque j'ai en resultat des champs rempli de valeurs et aussi bcp de champs vides et est ce qu'on peut afficher ça sous forme de tableaux?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php foreach($invalid_cells as $cell):?> <p> <label><?php echo $headers[$cell[1]] ?> </label> <input type="text" value ="<?php echo $sheetData[$cell[0]][$cell[1]]?>" name="validsheetdata[<?php echo $cell[0]?>][<?php echo $cell[1]?>]" /> </p> <?php endforeach ?> <p><input type="submit" value="Envoyer" /></p>
les champs vide qui sont affiché sont peut etre causés des cellules vides du fichier excel qui sont aussi considérés invalides.
qu'en pensez vous?
j'ai créer la fonction qui invalid_cells2 pour la verification des pour la feuille 3G
et elle marche bien
comment vous pensez doit etre le traitement
c'est a dire le script doit analyser 2G et demander à l'utilisateur de corriger jusqu'à ce que tout va bien et il passe au traitement de 3G
comment on peut le faire
et est ce que vous avez une proposition pour resoudre le probleme des cellulles vide qui seront toujours considérées comme erronnées mem si l'utilisateur corrige les autre données ?
et pour l'enregistrement dans une bases mysql comment on peut procèder?
merci encore une fois
Vois le MP que je t'ai envoyé, stp.
L'idéal serait de mettre le traitement des feuilles dans une fonction (qui effectuera un traitement différent selon le nom du fichier), puis de réutiliser cette fonction pour chaque feuille. Cela permettrait de réutiliser le reste du script sans grandes modifications.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager