Listing du fichier l2aprog11.php
00001 <?php
00002
00003 # (gH) -_- l2aprog04.php ; TimeStamp (unix) : 07 Mars 2013 vers 17:58
00004
00005 error_reporting(E_ALL | E_NOTICE | E_STRICT ) ;
00006
00007 ###########################################################################
00008 # #
00009 # exemple de programme php pour le cours Développement Web Avancé en L2 #
00010 # #
00011 ###########################################################################
00012 # #
00013 # #
00014 # Gestion de ficher-Excel fourni par formulaire #
00015 # #
00016 # #
00017 ###########################################################################
00018
00019 # lecture d'un fichier Excel à l'aide de excel_reader2_ghv3.php
00020 # adapté du Google-code :
00021 #
00022 # http://code.google.com/p/php-excel-reader/
00023 #
00024 # Voir http://forge.info.univ-angers.fr/~gh/Idas/Ccd/mcps/
00025 # comme exemple d'utilisation
00026
00027 $dbgLecXls = 0 ; # 0 en normal, 1 pour debug
00028 if ($dbgLec == 1) { $dbgLecXls = 1 ; } ;
00029 $errXls = 0 ;
00030
00031 $tmpfile = tempnam("/tmp","mcpsdata") ;
00032
00033 # il faut vérifier que le fichier existe,
00034 # que c'est un document XLS avec les bonnes infos
00035
00036 $xlsfile = $_FILES["dataxls"]["tmp_name"] ;
00037
00038 if ($dbgLecXls == 1) {
00039 pre() ;
00040 echo " xls : $xlsfile \n" ;
00041 } ; # fin si
00042
00043 if (file_exists($xlsfile)) {
00044 #$contenuXML = file_get_contents($xmlfile) ;
00045 # echo htmlentities($contenuXML) ;
00046 if ($dbgLecXls == 1) {
00047 echo " vu !\n" ;
00048 } ; # fin si
00049 } else {
00050 if ($dbgLecXls == 1) {
00051 echo " pas vu \n" ;
00052 } ; # fin si
00053 $errXls++ ;
00054 } ; # fin si
00055
00056 if ($dbgLecXls == 1) {
00057 finpre() ;
00058 } ; # fin si
00059
00060 if ($errXls>0) {
00061 return(array($xmlfile,$nbg,$nbe,$nbc,$tGrp,$tCol,$tLig,$g2Gname,$c2Cname)) ;
00062 } ; # finsi
00063
00064 try {
00065 $mcpsXls = new Spreadsheet_Excel_Reader($xlsfile) ;
00066 } catch (Exception $err) {
00067 } # fin de cath
00068
00069 # mode DDEBUG :
00070 # pre() ;
00071 # print_r($mcpsXls) ;
00072 # finpre() ;
00073
00074 $nfData = getSheetIndex($mcpsXls,"Data") ;
00075 if (($nfData<0) or (strlen(trim($nfData))==0)) {
00076 $errXls++ ;
00077 if ($lng=="fr") {
00078 h2("Feuille/Onglet nommée \"Data\" non vu dans votre fichier Excel.","grouge") ;
00079 } else {
00080 h2("Sheet named \"Data\" not found in your Excel file.","grouge") ;
00081 } ; # finsi
00082 } else {
00083 if ($dbgLecXls == 1) {
00084 h2("Feuille/Onglet \"Data\" vu en position $nfData","gvert") ;
00085 } ; # fin si
00086 } ; # fin si
00087
00088 $nfGroup = "" ;
00089 $nfGroup1 = getSheetIndex($mcpsXls,"Groups") ;
00090 $nfGroup2 = getSheetIndex($mcpsXls,"Groupes") ;
00091 if ($nfGroup1) { $nfGroup = $nfGroup1 ; } ;
00092 if ($nfGroup2) { $nfGroup = $nfGroup2 ; } ;
00093
00094 if (($nfGroup<0) or (strlen(trim($nfGroup))==0)) {
00095 $errXls++ ;
00096 if ($lng=="fr") {
00097 h2("Feuille/Onglet nommée \"Groupes\" ou \"Groups\" non vu dans votre fichier Excel.","grouge") ;
00098 } else {
00099 h2("Sheet named \"Groupes\" ou \"Groups\" not found in your Excel file.","grouge") ;
00100 } ; # finsi
00101 } else {
00102 if ($dbgLecXls == 1) {
00103 h2("Feuille/Onglet \"Groupes\" ou \"Groups\" vu en position $nfGroup","gvert") ;
00104 } ; # fin si
00105 } ; # fin si
00106
00107 if ($errXls>0) {
00108 return(array($xmlfile,$nbg,$nbe,$nbc,$tGrp,$tCol,$tLig,$g2Gname,$c2Cname)) ;
00109 } ; # finsi
00110
00111 if ($dbgLecXls == 1) {
00112 pre("cadre") ;
00113 echo " == onglet Groupes index $nfGroup \n" ;
00114 print_r($mcpsXls -> boundsheets[$nfData]) ;
00115 } ; # fin si
00116
00117 ## echo " clé $key valeur ".$item['name']." \n" ;
00118
00119 $outs = array();
00120 $sheet = $nfGroup ;
00121 for($row=1; $row<=$mcpsXls->rowcount($sheet); $row++) {
00122 $outs_inner = array();
00123 for($col=1; $col<=$mcpsXls->colcount($sheet); $col++) {
00124 // Account for Rowspans/Colspans
00125 $rowspan = $mcpsXls->rowspan($row, $col, $sheet);
00126 $colspan = $mcpsXls->colspan($row, $col, $sheet);
00127 for($i=0; $i<$rowspan; $i++) {
00128 for($j=0; $j<$colspan; $j++) {
00129 $mcpsXls->sheets[$sheet]['cellsInfo'][$row+$i][$col+$j]['dontprint']=0;
00130 if ($i>0 || $j>0) {
00131 $mcpsXls->sheets[$sheet]['cellsInfo'][$row+$i][$col+$j]['dontprint']=1;
00132 }
00133 }
00134 } # fin pour chaque ligne
00135
00136 #if (isset($mcpsXls->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint'])) {
00137 if (!$mcpsXls->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) {
00138 $val = $mcpsXls->val($row, $col, $sheet);
00139 $val = ($val=='')?'':addslashes(htmlentities($val));
00140
00141 $outs_inner[] = "\"{$val}\""; # Quote or not?
00142
00143 #$outs_inner[] = $val;
00144 }
00145 #}
00146 } ; # fin pour chaque colonne
00147 $outs[] = implode(',', $outs_inner);
00148 } ; # fin pour chaque ligne
00149 $out = implode("\r\n", $outs);
00150 # print_r($out) ;
00151 $outTab = preg_split("/\n/",$out) ;
00152 # print_r($outTab) ;
00153
00154 $tGrp = array() ;
00155 $g2Gname = array() ;
00156 $nbl = count($outTab) ;
00157 for ($idl=0;$idl<$nbl;$idl++) {
00158 # echo " ligne $idl \n" ;
00159 $ligTab = preg_split("/,/",$outTab[$idl]) ;
00160 $nbe = count($ligTab) ;
00161 $numG = trim(strtr($ligTab[0],'"',' ')) ;
00162 # echo " en position 0 on a $numG \n" ;
00163 if (is_numeric($numG)) {
00164 $valGrp = "" ;
00165 for ($ide=1;$ide<$nbe;$ide++) {
00166 $eltG = trim(strtr($ligTab[$ide],'"',' ')) ;
00167 $eltG = preg_replace("/\s+/","_",trim(strtr($ligTab[$ide],'"',' '))) ;
00168 $valGrp .= trim(strtr($eltG,"\n"," "))." " ;
00169 } ; # fin pour chaque élément dans la ligne
00170 $nomGxls = "g$numG" ;
00171 $tGrp[$numG] = $nomGxls ;
00172 $g2Gname[$nomGxls] = $valGrp ;
00173 } ; # fin si
00174 } ; # fin pour chaque ligne
00175 if ($dbgLecXls == 1) {
00176 echo " -- tGrp est : \n" ;
00177 print_r($tGrp) ;
00178 } ; # fin si
00179 $nbg = $numG ;
00180
00181 ?>
La coloration syntaxique est réalisée par un enrobage de la function php nommée highlight_file
mais si vous préférez, vous pouvez utiliser celle de SyntaxHighlighter ou même celle de geshi.
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)