Valid XHTML     Valid CSS2    

Listing du fichier statuno.php avec syntaxhighlighter


        <?php
        
        error_reporting(E_ALL | E_NOTICE) ;
        
        #    (gH)   -_-  statuno.php  ;  TimeStamp (unix) : 24 Octobre 2011 vers 09:18
        
        include_once("std7.php") ;
        
        $versionStatuno = 3.35 ;
        
        # version 3.35 : ajout de echo"\n" pour entree_R et sortie_R
        
        # version 3.33 : ajout de source("statgh.r") dans fonction execute_R
        
        # version 3.31 : fonction execute_R pour calcstat/aqt_det.php (voir vers ligne 580)
        
        # version 3.29 : fonctions entree_sortie_R entree_R sortie_R graphique_R_png
        #                pour gérer les TD de biostat MasterTPV et EDA
        
        # version 3.27 : fonction_R() permet de renvoyer une seule valeur par
        # l'appel de la fonction R correspondante
        
        # version 3.25 : on peut mettre plusieurs tables MYSQL concaténées par des +
        # les + sont convertis en virgules et le tour est joué
        
        ###############################################################
        
        function statgh($nomf="",$cla="orange_stim") {
        
        ###############################################################
        
        if ($nomf=="") {
          return(href("../statghfns.php","statgh.r")) ;
        } else {
          return(href("../statghfns.php?lafns=$nomf","$nomf()",$cla)) ;
        } # finsi
        
        } # fin de fonction statgh
        
        ###############################################################
        
        function hrr($nomf,$package="base",$cla="orange_stim") {
        
        ###############################################################
        
          # renvoie le lien sur finzi pour la fonction
        
          # exemple d'utilisation :
          #   echo href(hrr("mode"),"storage.mode()").". " ;
        
          return("http://finzi.psych.upenn.edu/R/library/$package/html/$nomf".".html") ;
        
        } # fin de fonction hrr
        
        ###############################################################
        
        function hrrr($nomf,$package="base",$nomh="",$cla="gvert") {
        
        ###############################################################
        
          # renvoie le lien sur finzi pour la fonction
          # avec un nom différent dans le lien, si besoin est
        
          # exemple d'utilisation :
          #   echo hrrr("class") ;
          #   echo hrrr("nrow","base","ncol","gvert").". " ; # car ncol est référencé dans la page de nrow
        
          if ($package=="") {
            $package = "base" ;
          } # fin si
          if ($nomh=="") {
            $nomh = $nomf."()" ;
          } # fin si
          return(href(hrr($nomf,$package),$nomh,$cla)) ;
        
        } # fin de fonction hrrr
        
        ###############################################################
        
        function hrrp($package="base",$nomp="",$cla="gbleuf") {
        
        ###############################################################
        
          # renvoie le lien sur finzi pour le package
          # avec un nom différent dans le lien, si besoin est
        
          # exemple d'utilisation :
          #   echo hrrr("phyloseq") ;
          #   echo hrrr("nrow","base","ncol","gvert").". " ; # car ncol est référencé dans la page de nrow
        
          if ($package=="") {
            $package = "base" ;
          } # fin si
          if ($nomp=="") {
            $nomp = $package ;
          } # fin si
          return(href(hrr("00Index",$package),$nomp,$cla)) ;
        
        } # fin de fonction hrrp
        
        
        
        ###############################################################################
        ###############################################################################
        
        function decritQT($titreQT,$tabQT,$uniteQT="?",$lang="FR",$grf="") {
        
        ###############################################################################
        
        #
        # calcul QT sur un tableau PHP
        # voir aussi decritQT_Sql pour calcul QT sur un champ SQL
        #
        
          if ($lang=="FR") {
             h2("Analyse QT de la variable $titreQT") ;
          } else {
             h2("Analysis of the variable '$titreQT'") ;
          } ; # fin de si
        
          if (count($tabQT)==0) {
            h3(" no data found.") ;
          } ; # fin de si
        
          $ftmp1 = tempnam("/tmp","statuno_data.tmp")    ; # fichier des donn&eacute;es issues de mysql utilis&eacute;es par R
          $ftmp2 = tempnam("/tmp","statuno_calculs.r")   ; # programme R
          $ftmp3 = tempnam("/tmp","statuno_calcstats.r") ; # pour "sourcer" le programme
          $ftmp4 = tempnam("/tmp","statuno_calculs.sor") ; # sorties du programme R
        
          # transfert des donn&eacute;es du tableau $tabQT dans le fichier tmp1
        
          if ($fh = fopen($ftmp1,"w")) {
               # pre() ;
               $nbvQT = count($tabQT) ;
               for  ($idvQT=0; $idvQT<$nbvQT;$idvQT++) {
                    $ligs = $tabQT[$idvQT]."\n" ;
                    ## echo $ligs ;
                    fputs($fh, $ligs) ;
               } ; # fin pour chaque
               # finpre() ;
               fclose($fh) ;
        ## print "<pre> fichier $ftmp1 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp1 \n</pre>" ;
            return("") ;
          } ; # fin de si
        
          # pr&eacute;paration des commandes R, on lit dans phpmp1
        
          $cmdr = "" ;
          $cmdr .= "    source(\"../statgh.r\",echo=TRUE)       \n" ;
          $cmdr .= "                                        \n" ;
          $cmdr .= "    alldata <- read.table(\"$ftmp1\")      \n" ;
          $cmdr .= "                                        \n" ;
          $cmdr .= "    valQT   <- alldata[,1]                \n" ;
          $cmdr .= "                                        \n" ;
          $cmdr .= "    cat(\"STAT_DEB\\n\") ;               \n" ;
          $cmdr .= "    cat(\"\\n\")                          \n" ;
          $cmdr .= "                                         \n" ;
          $cmdr .= "    decritQT(\"$titreQT\",valQT,\"$uniteQT\")       \n" ;
          $cmdr .= "                                         \n" ;
          $cmdr .= "    cat(\"\\n\")                          \n" ;
        
          if ($lang=="FR") {
             $cmdr .= "    cat(\"DIAGRAMME TIGE-FEUILLES\")                          \n" ;
          } else {
             $cmdr .= "    cat(\"STEM and LEAF DIAGRAM\")                          \n" ;
          } ; # fin de si
        
          $cmdr .= "    cat(\"\\n\")                          \n" ;
          $cmdr .= "    stem(valQT,width=130)                          \n" ;
          $cmdr .= "    cat(\"\\n\")                          \n" ;
          $cmdr .= "    cat(\"STAT_FIN\\n\") ;                \n" ;
        
        ## print "<pre> CMD = $cmdr \n\n</pre>" ;
        
          # &eacute;criture des commandes R dans le fichier ftmp2
        
          if ($fh = fopen($ftmp2,"w")) {
             fputs($fh, $cmdr) ;
             fclose($fh) ;
             # print "<pre> fichier $ftmp2 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp2 \n</pre>" ;
          } ; # fin de si
        
          # afin de simplifier les affichages, on ne met que source
          # dans le fichier tmp3 qui sera ex&eacute;cut&eacute; :
        
          if ($fh = fopen($ftmp3,"w")) {
             $ligs = "  source(\"$ftmp2\",echo=FALSE) \n ";
             fputs($fh, $ligs) ;
             fclose($fh) ;
             # print "<pre> fichier $ftmp3 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp3 \n</pre>" ;
          } ; # fin de si
        
          # ex&eacute;cution standard de R avec redirection
        
          unlink($ftmp4) ;
        
        /*
          pre() ;
          system("head $ftmp1") ;
          system("head $ftmp2") ;
          system("head $ftmp3") ;
          finpre() ;
        */
        
          $cmd = "R --quiet --vanilla < $ftmp3 > $ftmp4  2> $ftmp4 " ;
        
        ##  h3("$cmd") ;
        
          # si cela ne marche pas, essayer : $cmd = "R --quiet --vanilla < $ftmp3 " ;
        
          system($cmd) ;
          # system("head $ftmp4") ;
        
          # filtrage des r&eacute;sultats et affichage
        
          pre() ;
          print "\n" ;
          clearstatcache();
          if ($fh = fopen($ftmp4,"r")) {
               $ok = 0 ;
               while (!feof ($fh)) {
                 $lig = fgets($fh, 4096) ;
        ## print "<pre>  on voit $ligs dans $ftmp4 </pre>";
                 if ($lig == "STAT_FIN\n") { $ok = 0 ; } ;
                 if ($ok==1) { echo "  $lig " ; } ;
                 if ($lig == "STAT_DEB\n") { $ok = 1 ; } ;
               } ; # fin tant que
               fclose($fh) ;
          } else {
            print "<pre> pas de valeurs pour $ftmp4 </pre>" ;
          } ; # fin de si
        
          print "\n" ;
          finpre() ;
          flush() ;
        
          #$cmd = "perl alng.pl LNG $tmp1 $tmp3" ;
          #print("<pre> $cmd \n</pre>") ;
          #
          #system("$cmd ") ;
          #calcstat_en_R($tmp1,$tmp2) ;
        
          unlink($ftmp1) ;
          unlink($ftmp2) ;
          unlink($ftmp3) ;
          unlink($ftmp4) ;
        
        # tracé via jpgrah
        
          if (!$grf=="") {
        
          sort($tabQT) ;
        
           $ydval   = "" ;
           for  ($idvQT=0; $idvQT<$nbvQT;$idvQT++) {
                $ydval .= $tabQT[$idvQT] ;
                if ($idvQT<$nbvQT-1){  $ydval .= "_" ; } ;
           } ; # fin pour chaque
        
           echo "<blockquote>" ;
           echo "<p>" ;
           echo("<img src='../traceydata.php?ydval=$ydval' alt='graph' />");
           echo "</p>" ;
           echo "</blockquote>" ;
        
          } ; # fin de si
        
        
        } # function decritQT
        
        ###############################################################################
        
        function decritQT_Sql($titreQT,$uniteQT="?",$tablesSQL,$champSQL,$conditions="",$lang="FR",$grf="") {
        
        ###############################################################################
        
          # remarques : on suppose la connexion SQL faite
          #             $tableSQL peut contenir plusieurs noms
          #             et meme du code SQL tant que cela va dans la partie FROM
        
        
          # 1. transfert des données dans un tableau
        
          $lestablesSQL = str_replace("+",",",$tablesSQL) ;
          $que = " select $champSQL from $lestablesSQL $conditions " ;
          $res = mysql_query($que) ;
          $tabQT = array() ;
          $indqt = -1 ;
          while ($tdr=mysql_fetch_array($res)) {
              $indqt++ ;
              $tabQT[$indqt] = $tdr[$champSQL] ;
          } ; # fin de tant que
        
          ## echo "<pre>\n".print_r($tabQT)."\n</pre>\n" ;
        
        
          # 2. appel de la fonction  decritQT($titreQT,$tabQT,$uniteQT="?")
        
          decritQT($titreQT,$tabQT,$uniteQT,$lang,$grf) ;
        
        } # fin function decritQT_Sql
        
        ###############################################################################
        ###############################################################################
        
        function decritQL($titreQL,$tabQL,$tmodaQL) {
        
        ###############################################################################
        
          h2("Analyse QL de la variable $titreQL") ;
        
          $ftmp1 = tempnam("/tmp","statuno_data.tmp")    ; # fichier des donn&eacute;es issues de mysql utilis&eacute;es par R
          $ftmp2 = tempnam("/tmp","statuno_calculs.r")   ; # programme R
          $ftmp3 = tempnam("/tmp","statuno_calcstats.r") ; # pour "sourcer" le programme
          $ftmp4 = tempnam("/tmp","statuno_calculs.sor") ; # sorties du programme R
        
          # transfert des donn&eacute;es du tableau $tabQT dans le fichier tmp1
        
          if ($fh = fopen($ftmp1,"w")) {
               # pre() ;
               $nbvQL = count($tabQL) ;
               for  ($idvQL=0; $idvQL<$nbvQL;$idvQL++) {
                    $ligs = $tabQL[$idvQL]."\n" ;
                    ## echo $ligs ;
                    fputs($fh, $ligs) ;
               } ; # fin pour chaque
               # finpre() ;
               fclose($fh) ;
              # print "<pre> fichier $ftmp1 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp1 \n</pre>" ;
            return("") ;
          } ; # fin de si
        
          # pr&eacute;paration des commandes R, on lit dans phpmp1
        
          $cmdr = "" ;
          $cmdr .= "    source(\"../../statgh.r\",echo=FALSE)       \n" ;
          $cmdr .= "                                        \n" ;
          $cmdr .= "    alldata <- read.table(\"$ftmp1\")      \n" ;
          $cmdr .= "                                        \n" ;
          $cmdr .= "    valQL   <- alldata[,1]                \n" ;
          $cmdr .= "                                        \n" ;
          $cmdr .= "    cat(\"STAT_DEB\\n\") ;               \n" ;
          $cmdr .= "    cat(\"\\n\")                          \n" ;
          $cmdr .= "                                         \n" ;
          $cmdr .= "    decritQL(\"$titreQL\",valQL,\"$tmodaQL\")       \n" ;
          $cmdr .= "                                         \n" ;
          $cmdr .= "    cat(\"\\n\")                          \n" ;
          $cmdr .= "    cat(\"STAT_FIN\\n\") ;                \n" ;
        
          # print "<pre> CMD = $cmdr \n\n</pre>" ;
        
          # &eacute;criture des commandes R dans le fichier ftmp2
        
          if ($fh = fopen($ftmp2,"w")) {
             fputs($fh, $cmdr) ;
             fclose($fh) ;
             # print "<pre> fichier $ftmp2 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp2 \n</pre>" ;
          } ; # fin de si
        
          # afin de simplifier les affichages, on ne met que source
          # dans le fichier tmp3 qui sera ex&eacute;cut&eacute; :
        
          if ($fh = fopen($ftmp3,"w")) {
             $ligs = "  source(\"$ftmp2\") \n ";
             fputs($fh, $ligs) ;
             fclose($fh) ;
             # print "<pre> fichier $ftmp3 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp3 \n</pre>" ;
          } ; # fin de si
        
          # ex&eacute;cution standard de R avec redirection
        
          unlink($ftmp4) ;
          $cmd = "R --quiet --vanilla < $ftmp3 > $ftmp4  2> $ftmp4 " ;
          # si cela ne marche pas, essayer : $cmd = "R --quiet --vanilla < $ftmp3 " ;
        /*
          h3("$cmd") ;
        
          pre() ;
          system("head $ftmp1") ;
          system("head $ftmp2") ;
          system("head $ftmp3") ;
          finpre() ;
        */
        
          system($cmd) ;
          # system("head $ftmp4") ;
        
          # filtrage des r&eacute;sultats et affichage
        
          pre() ;
          print "\n" ;
          clearstatcache();
          if ($fh = fopen($ftmp4,"r")) {
               $ok = 0 ;
               while (!feof ($fh)) {
                 $lig = fgets($fh, 4096) ;
          #if ($dbgr == 1) { print "<pre>  on voit $ligs dans $ftmp4 </pre>"; } ;
                 if ($lig == "STAT_FIN\n") { $ok = 0 ; } ;
                 if ($ok==1) { echo "  $lig " ; } ;
                 if ($lig == "STAT_DEB\n") { $ok = 1 ; } ;
               } ; # fin tant que
               fclose($fh) ;
          } else {
            print "<pre> pas de valeurs pour $ftmp4 </pre>" ;
          } ; # fin de si
        
          print "\n" ;
          finpre() ;
          flush() ;
        
          #$cmd = "perl alng.pl LNG $tmp1 $tmp3" ;
          #print("<pre> $cmd \n</pre>") ;
          #
          #system("$cmd ") ;
          #calcstat_en_R($tmp1,$tmp2) ;
        
          unlink($ftmp1) ;
          unlink($ftmp2) ;
          unlink($ftmp3) ;
          unlink($ftmp4) ;
        
        } # function decritQT
        
        ###############################################################################
        
        function decritQL_Sql($baseQL,$tableQL,$titreQL,$tabQL,$tmodaQL) {
        
        ###############################################################################
        
        } # fin function decritQT_Sql
        
        ###############################################################################
        ###############################################################################
        
        function decritQX($titreQX,$txtQX,$lang="FR",$histopct="no") {
        
        ###############################################################################
        
          if ($lang=="FR") {
             h2("Analyse QX de la variable textuelle $titreQX") ;
          } else {
             h2("Analysis of the textual variable '$titreQX'") ;
          } ; # fin de si
        
          $minu = 1 ;
          if ($lang=="FR") {
             echo '<h3>Texte analys&eacute;' ;
          } else {
             echo '<h3>Analysed text' ;
          } ; # fin de si
          nbsp(2) ;
          ## if ($minu==1) { echo '<font size="-1">(apr&egrave;s conversion en minuscules)</font>' ; } ;
          echo '</h3>' ;
        
          div() ;
          echo '<textarea name="mat" rows="8" cols="80" class="fond_jaune">' ;
          echo "\n" ;
        
          $tta = $txtQX ; # transfert du texte
          $tta = strtr($tta, "\\"," ") ;
          $tta = str_replace(" '","'",$tta) ;
          $tta = str_replace(" -- "," ",$tta) ;
        
          if ($minu==1) { $tta = strtolower($tta) ; } ;
          echo $tta ;
        
          echo '</textarea>' ;
          findiv() ;
        
          $tta = urldecode($tta) ;
          $tta = strtr($tta, ",.;()&\"\n'\\:?","            ") ;
        
          $tabmot = split(" ",$tta)   ;
          $nbmd   = count( $tabmot )  ;
          $nbm    = 0 ;
          $dico   = array() ; # pour php 4.x
        
          # premier passage, on met 0 &agrave; tout le monde
        
          $vnbmd = 0 ;
          for ($im = 0 ; $im < $nbmd ; $im++) {
            $mot = trim($tabmot[ $im ])  ;
            if (strlen($mot)>0) {
          #echo " mot $im soit $mot \n<br>" ;
               $dico[$mot] = 0 ;
               $vnbmd++ ;
            } ; # fin de si
          } ; # fin de pour im
        
          # premier passage, on met 0 &agrave; tout le monde
        
          for ($im = 0 ; $im < $nbmd ; $im++) {
            $mot = trim($tabmot[ $im ])  ;
            if (strlen($mot)>0) {
               $dico[$mot] = $dico[$mot] + 1 ;
               # si valeur 1, il s'agit d'un mot diff&eacute;rent
               if ($dico[$mot] == 1) {
                   $nbm++ ;
          #echo " mot $im soit $mot donc nbm $nbm\n<br>" ;
               } ; # fin de si
            } ; # fin de si
          } ; # fin de pour im
        
          p() ;
          if ($lang=="FR") {
            echo "Dans le texte il y a sans doute $vnbmd mots en tout et $nbm mots diff&eacute;rents ;\n<br /> " ;
          } else {
            echo "In this text there are probably $vnbmd words on the whole and $nbm distinct words;\n<br /> " ;
          } ; # fin de si
          if ($nbm>0) {
             $nbf = $nbmd/$nbm ;
             $nbf = sprintf("%5.2f",$nbf) ;
             if ($lang=="FR") {
                echo " chaque mot est donc r&eacute;p&eacute;t&eacute; $nbf fois en moyenne.\n" ;
             } else {
                echo " each word is therefore repeated $nbf times on the average.\n" ;
             } ; # fin de si
          }
          finp() ;
        
          table() ;
          tr() ;
        
          td() ;
          p() ;
          if ($lang=="FR") {
             echo '<b>Dictionnaire alphab&eacute;tique</b>' ;
          } else {
             echo '<b>Alphabetical dictionnary</b>' ;
          } ; # fin de si
          finp() ;
          echo '<textarea name="mat" rows="15" cols="50" class="fond_jaune">' ;
          $dicNom = $dico ;
          ksort($dicNom) ;
          reset($dicNom) ;
        
          $lcnt = "" ;
          $lnom = "" ;
          foreach ($dicNom as  $ind=>$cnt) {
          #for(reset($dicNom); $ind = key($dicNom); next($dicNom)) {
              $mnd = $ind ;
              if (strlen($mnd)>30) {
                 $mnd = substr($ind,0,29) ;
              } ;
              echo "  ".sprintf("%-30s",$mnd)."  ".sprintf("%7d",$cnt)."\n";
              $lcnt .= $cnt."_" ;
              $lnom .= $ind."_" ;
          } ; # fin pour
          if (substr($lcnt,strlen($lcnt)-1,1)=="_") {
            $lcnt = substr($lcnt,0,strlen($lcnt)-1)  ;
          } ; # fin si
          if (substr($lnom,strlen($lnom)-1,1)=="_") {
            $lnom = substr($lnom,0,strlen($lnom)-1)  ;
          } ; # fin si
        
          echo '</textarea>' ;
          fintd() ;
        
          td() ; nbsp(3) ; fintd() ;
        
          td() ;
          p() ;
          if ($lang=="FR") {
            echo '<b>Dictionnaire par occurences</b>' ;
          } else {
            echo '<b>Occurences dictionnary</b>' ;
          } ; # fin de si
          finp() ;
          echo '<textarea name="mat" rows="15" cols="50" class="fond_jaune">' ;
          $dicOcc = $dico ;
          arsort($dicOcc) ;
          reset($dicOcc) ;
        
          #for(reset($dicOcc); $ind = key($dicOcc); next($dicOcc)) {
          foreach ($dicOcc as  $ind=>$cnt) {
          #for(reset($dicNom); $ind = key($dicNom); next($dicNom)) {
              $mnd = $ind ;
              if (strlen($mnd)>30) {
                 $mnd = substr($ind,0,29) ;
              } ;
              echo "  ".sprintf("%-30s",$mnd)."  ".sprintf("%7d",$cnt)."\n";
          } ; # fin pour
        
          echo '</textarea>' ;
          fintd() ;
        
          fintr() ;
          fintable() ;
        
          # si le paramètre $histopct ne vaut pas "no"
          # on fait un histogramme du dico alphabétique
        
          if ($histopct!="no") {
        
          p() ;
          echo "<b>Frequency histogram</b>" ;
          br() ;
          nbsp() ;
          br() ;
          $url = "../jphistopct.php?vdata=$lcnt&amp;xmrks=$lnom&amp;titr=&amp;tailx=800" ;
          echo "<img src='$url' alt='histogramme' />\n" ;
          finp() ;
        
          } ; # fin si
        
        } # fin function decritQX
        
        ###############################################################################
        
        function decritQX_Sql($titreQX,$tableSQL,$champQX,$conditions="",$lang="FR",$histopct="no",$cusm=0) {
        
        ###############################################################################
        
        # exemples : decritQX_Sql("leadata","TISSUE TYPE","devstage") ;
        #            decritQX_Sql("leadata","TISSUE TYPE","devstage","","EN","no",1)
        
        
          # remarques : on suppose la connexion SQL faite
          #             $tableSQL peut contenir plusieurs noms
          #             et meme du code SQL tant que cela va dans la partie FROM
          # le dernier paramètre considère tout le champ comme un seul mot
        
          # extraction des données
        
          $lestablesSQL = str_replace("+",",",$tableSQL) ;
        
          $qry  = " SELECT $champQX FROM $lestablesSQL  $conditions "  ;
        #echo"<pre>$qry</pre>\n" ;
          $rdq = mysql_query($qry) ;
          $numlig = - 1 ;
          $letexte = "" ;
          $numlig = -1 ;
          while ($tdr=mysql_fetch_array($rdq)) {
            $numlig++ ;
            $vdc =  trim($tdr[$champQX]) ; # contenu original du champ
            if ($cusm==1) {
                $vdc = str_replace(" ","_",$vdc) ;
                $vdc = str_replace(".","_",$vdc) ;
                $vdc = str_replace("'","_",$vdc) ;
                $vdc = str_replace("-","_",$vdc) ;
            } ; # fin de si
            $letexte .= $vdc." " ;
          } ; # fin de tant que
        
          # construction des dictionnaires
        
          decritQX($titreQX,$letexte,$lang,$histopct) ;
        
        } # fin function decritQX_Sql($titreQX,$tabQX) {
        
        ###############################################################################
        
        function execute_R($tabCmd,$dbgExt=1) {
        
        ###############################################################################
        
        # ceci permet d'exécuter un fichier R quelconque et d'afficher ses résultats
        # (entre STAT_DEB et STAT_FIN)
        # voir par exemple vd.php ou progstat.php pour des exemples d'utilisation
        # comme ci-dessous :
        
        /*
        
        # calculs stat via execute_R de statuno.php
        
        $tcmdR = array() ;
        $nbcmd = -1 ;
        
        $nbcmd++ ; $tcmdR[$nbcmd] = "  source(\"statgh.r\",encoding='latin1') \n" ;
        $nbcmd++ ; $tcmdR[$nbcmd] = "  lesd <- read.table(\"$ficdat\") \n" ;
        $nbcmd++ ; $tcmdR[$nbcmd] = "  attach(lesd) \n" ;
        $nbcmd++ ; $tcmdR[$nbcmd] = "  vqtGH <- V1\n" ;
        $nbcmd++ ; $tcmdR[$nbcmd] = "  cat(\"STAT_DEB\n\")\n" ;
        #$nbcmd++ ; $tcmdR[$nbcmd] = "  cat(\"\nVoici vos données: \")\n" ;
        #$nbcmd++ ; $tcmdR[$nbcmd] = "  print(vqtGH) \n" ;
        #$nbcmd++ ; $tcmdR[$nbcmd] = "  cat(\"et leur analyse: \")\n" ;
        $nbcmd++ ; $tcmdR[$nbcmd] = "  dtQT(\"DataWeb\",vqtGH,\"$uni\",TRUE,\"$png1\",\"$png2\") \n" ;
        $nbcmd++ ; $tcmdR[$nbcmd] = "  cat(\"STAT_FIN\n\")\n" ;
        
        if ($dbg==1) {
          p() ;
           echo " on utilise la fonction ".b("execute_R()")." avec comme paramètre le tableau suivant&nbsp;" ;
          finp() ;
          pre() ;
            print_r($tcmdR) ;
          finpre() ;
        } ; # fin si
        
        pre() ;
          execute_R($tcmdR,$dbg) ; # la fonction execute_R est dans statuno.php
        finpre() ;
        
        */
        
          $dbgR = 0 ; # 0 en mode normal, 1 pour debug
          if ($dbgExt==1) { $dbgR = 1 ; } ;
        
          $ftmp2 = tempnam("/tmp","statuno_calculs.r")   ; # programme R
          $ftmp3 = tempnam("/tmp","statuno_calcstats.r") ; # pour "sourcer" le programme
          $ftmp4 = tempnam("/tmp","statuno_calculs.sor") ; # sorties du programme R
        
          # transfert des commandes R dans le fichier tmp2
        
          if ($fh = fopen($ftmp2,"w")) {
               # pre() ;
               $nblc = count($tabCmd) ;
               for  ($idlc=0; $idlc<$nblc;$idlc++) {
                    if (isset($tabCmd[$idlc])) {
                       $ligc = $tabCmd[$idlc]."\n" ;
                       if ($dbgR==1) {
                          echo $ligc ;
                       } ; # fin si
                       fputs($fh, $ligc) ;
                    } ; # fin si
               } ; # fin pour chaque
               # finpre() ;
               fclose($fh) ;
              # print "<pre> fichier $ftmp1 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp2 \n</pre>" ;
            return("") ;
          } ; # fin de si
        
          # afin de simplifier les affichages, on ne met que source
          # dans le fichier tmp3 qui sera ex&eacute;cut&eacute; :
        
          if ($fh = fopen($ftmp3,"w")) {
             $ligs = "  source(\"$ftmp2\",encoding='latin1') \n ";
             if ($dbgR==1) {
                $ligs = "  source(\"$ftmp2\",print.eval=TRUE,echo=TRUE,encoding='latin1') \n ";
             } ; # fin de si
             fputs($fh, $ligs) ;
             fclose($fh) ;
             # print "<pre> fichier $ftmp3 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp3 \n</pre>" ;
          } ; # fin de si
        
          # ex&eacute;cution standard de R avec redirection
        
          unlink($ftmp4) ;
          $cmd = "R --quiet --no-save < $ftmp3 > $ftmp4  2>> $ftmp4 " ;
          if ($dbgR==1) {
              $cmd = "R --quiet --no-save < $ftmp3 > $ftmp4  2>> $ftmp4 " ;
          } ; # fin si
        
          # si cela ne marche pas, essayer : $cmd = "R --quiet --vanilla < $ftmp3 " ;
        
          if ($dbgR==1) {
        
             echo b("$cmd") ;
        
             system("head $ftmp2") ;
             system("head $ftmp3") ;
        
          } ; # fin si
        
          system($cmd) ;
          if ($dbgR==1) {
             system("head $ftmp4") ;
          } ; # fin si
        
          # filtrage des r&eacute;sultats et affichage
        
          clearstatcache();
          if ($fh = fopen($ftmp4,"r")) {
               $ok = 0 ;
               while (!feof ($fh)) {
                 $lig = fgets($fh, 4096) ;
        # quelques nettoyages
                 if (strpos($lig,"vous pouvez utiliser")>-1) { $lig = "" ; } ;
                 if (strpos($lig,"The decimal point is")>-1) { $lig = "" ; } ;
                 if (strpos($lig,"la moyenne est en rouge")>-1) { $lig = "" ; } ;
        
          #if ($dbgr == 1) { print "<pre>  on voit $ligs dans $ftmp4 </pre>"; } ;
                 if ($lig == "STAT_FIN\n") { $ok = 0 ; } ;
                 if ($ok==1) { echo "  $lig " ; } ;
                 if ($lig == "STAT_DEB\n") { $ok = 1 ; } ;
               } ; # fin tant que
               fclose($fh) ;
          } else {
            print "<pre> pas de valeurs pour $ftmp4 </pre>" ;
          } ; # fin de si
        
          print "\n" ;
          flush() ;
        
          # nettoyage des fichiers
        
          if ($dbgR==1) {
             unlink($ftmp2) ;
             unlink($ftmp3) ;
             unlink($ftmp4) ;
          } ; # fin si
        
        } # fin function execute_R
        
        ###############################################################################
        ###############################################################################
        
        function fonction_R($txt) {
        
        ###############################################################################
        
        # exécute une fonction R et renvoie la valeur résultat
        
          $dbgR = 0 ; # 0 en mode normal, 1 pour debug
        
          if ($dbgR==1) { pre() ; } ;
        
          $ftmp2 = tempnam("/tmp","statuno_calculs.r")   ; # programme R
          $ftmp3 = tempnam("/tmp","statuno_calcstats.r") ; # pour "sourcer" le programme
          $ftmp4 = tempnam("/tmp","statuno_calculs.sor") ; # sorties du programme R
        
          # transfert des commandes R dans le fichier tmp2
        
          if ($fh = fopen($ftmp2,"w")) {
               fputs($fh, "source(\"statgh.r\") ; " ) ;
               fputs($fh, "cat(\"STAT_DEB\",\"\\n\") ; " ) ;
               fputs($fh, "cat( $txt ,\"\\n\") ; " ) ;
               fputs($fh, "cat(\"STAT_FIN\",\"\\n\") ; " ) ;
               fclose($fh) ;
               if ($dbgR==1) { finpre() ; } ;
              # print "<pre> fichier $ftmp1 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp2 \n</pre>" ;
            return("") ;
          } ; # fin de si
        
          # afin de simplifier les affichages, on ne met que source
          # dans le fichier tmp3 qui sera ex&eacute;cut&eacute; :
        
          if ($fh = fopen($ftmp3,"w")) {
             $ligs = "  source(\"$ftmp2\") \n ";
             fputs($fh, $ligs) ;
             fclose($fh) ;
             # print "<pre> fichier $ftmp3 ok sans doute \n</pre>" ;
          } else {
            print "<pre> pb  avec $ftmp3 \n</pre>" ;
          } ; # fin de si
        
          # ex&eacute;cution standard de R avec redirection
        
          unlink($ftmp4) ;
          $cmd = "R --quiet --vanilla --encoding=latin1 < $ftmp3 > $ftmp4  2>> $ftmp4 " ;
          # si cela ne marche pas, essayer : $cmd = "R --quiet --vanilla < $ftmp3 " ;
        
          if ($dbgR==1) {
        
             h3("$cmd") ;
             pre() ;
             system("head $ftmp2") ;
             system("head $ftmp3") ;
             finpre() ;
        
          } ; # fin si
        
          system($cmd) ;
          if ($dbgR==1) {
             system("head $ftmp4") ;
          } ; # fin si
        
          # filtrage des r&eacute;sultats et affichage
        
          clearstatcache();
          if ($fh = fopen($ftmp4,"r")) {
               $ok = 0 ;
               while (!feof ($fh)) {
                 $lig = fgets($fh, 4096) ;
                 $lig = trim(strtr($lig,"\n"," ")) ;
        if ($dbgR == 1) { print "<pre>  on voit *$lig* dans $ftmp4 et ok vaut $ok</pre>"; } ;
                 if ($lig=="STAT_FIN") { $ok = 0 ; } ;
                 if ($ok==1) { $ligret = $lig ; } ;
                 if ($lig=="STAT_DEB") { $ok = 1 ; } ;
               } ; # fin tant que
               fclose($fh) ;
          } else {
            print "<pre> pas de valeurs pour $ftmp4 </pre>" ;
          } ; # fin de si
        
          print "\n" ;
          flush() ;
        
          # nettoyage des fichiers
        
          if ($dbgR==1) {
             unlink($ftmp2) ;
             unlink($ftmp3) ;
             unlink($ftmp4) ;
          } ; # fin si
        
        return($ligret) ;
        
        } # fin function fonction_R
        
        ###############################################################################
        ###############################################################################
        
        function entree_sortie_R($es,$nomfic) {
        
        ###############################################################
        
        # écrit le contenu du fichier-paramètre en mode pre, style cadrebleu ou cadrejaune
        
          if ($es=="entree") {
              pre("cadrebleu") ;
          } else {
             pre("cadrejaune") ;
          } ; # fin si
        
          echo "\n" ;
        
          if (!file_exists($nomfic)) {
             print " fichier $nomfic non vu\n" ;
          } else {
          $fh = fopen($nomfic,"r") ;
          while (!feof ($fh)) {
           $lig = fgets($fh, 4096) ;
              $lig = preg_replace("/\n/","",$lig);
              $ligs = "     " ;
              $lng  = strlen($lig) ;
              $idc = 0 ;
              while ($idc<$lng) {
                $cc = substr($lig,$idc,1) ;
                if ($cc=="<") { $cc = "&lt;" ; } ;
                if ($cc==">") { $cc = "&gt;" ; } ;
                if ($cc=="&") { $cc = "&amp;" ; } ;
                $ligs .= $cc ;
                $idc++ ;
              } ; # fintant que
              echo $ligs;
              nbsp(5) ;
              echo"\n" ;
          } ; # fin tant que
          fclose($fh) ;
          } ; # fin si le fichier existe
        
          finpre() ;
        
        } # fin de fonction entree_sortie_R
        
        ###############################################################
        
        function pre_cadre($nomfic) {
        
        ###############################################################
        
        # écrit le contenu du fichier-paramètre en mode pre, style cadre
        
          pre("cadre") ;
          echo"\n" ;
          if (!file_exists($nomfic)) {
             print " fichier $nomfic non vu\n" ;
          } else {
          $fh = fopen($nomfic,"r") ;
          while (!feof ($fh)) {
           $lig = fgets($fh, 4096) ;
              $lig = preg_replace("/\n/","",$lig);
              $ligs = "     " ;
              $lng  = strlen($lig) ;
              $idc = 0 ;
              while ($idc<$lng) {
                $cc = substr($lig,$idc,1) ;
                if ($cc=="<") { $cc = "&lt;" ; } ;
                if ($cc==">") { $cc = "&gt;" ; } ;
                $ligs .= $cc ;
                $idc++ ;
              } ; # fintant que
              echo $ligs ;
              nbsp(5) ;
              echo"\n" ;
          } ; # fin tant que
          fclose($fh) ;
          } ; # fin si le fichier existe
        
          finpre() ;
        
        } # fin de fonction pre_cadre
        
        ###############################################################
        
        function entree_R($nomfic) {
        
        ###############################################################
        
        # affiche le code source d'un fichier R
        
          entree_sortie_R("entree",$nomfic) ;
        
        } # fin de fonction entree_R
        
        ###############################################################
        
        function sortie_R($nomfic) {
        
        ###############################################################
        
        # affiche le résutat d'exécution d'un fichier R
        
          entree_sortie_R("sortie",$nomfic) ;
        
        } # fin de fonction sortie_R
        
        ###############################################################
        
        function graphe_R($nomfic,$taille=400) {
        
        ###############################################################
        
        # appel de graphique_R_png avec le meme nombre de lettres
        # que pour entree_R et sortie_R
        
        graphique_R_png($nomfic,$taille) ;
        
        } # fin de fonction graphe_R
        
        ###############################################################
        
        function graphique_R_png($nomfic,$taille=400) {
        
        ###############################################################
        
        # affiche un graphique-paramètre
        
         div("cadrejaune") ;
          blockquote() ;
          p("center") ;
              echo href($nomfic,img($nomfic,$nomfic,$taille)) ;
          finp() ;
          finblockquote() ;
          findiv() ;
        
        } # fin de fonction graphique_R_png
        
        ###############################################################
        
        function graphiques_R_png($nomfic1,$nomfic2,$nomfic3="",$nomfic4="",$nomfic5="",$nomfic6="") {
        
        ###############################################################
        
          div("cadrejaune") ;
          blockquote() ;
          table() ;
          tr() ;
            td() ; echo href($nomfic1,img($nomfic1,$nomfic1,"300")) ; fintd() ;
            td() ; p() ; nbsp(10) ; finp() ; fintd() ;
            td() ; echo href($nomfic2,img($nomfic2,$nomfic2,"300")) ; fintd() ;
          fintr() ;
          if (!$nomfic3=="") {
               tr() ;
                 td() ; p() ; nbsp(10) ; finp() ; fintd() ;
               fintr() ;
               tr() ;
                 td() ; echo href($nomfic3,img($nomfic3,$nomfic3,"300")) ; fintd() ;
                 td() ; p() ; nbsp(10) ; finp() ; fintd() ;
                 td() ; if (!$nomfic4=="") { echo href($nomfic4,img($nomfic4,$nomfic4,"300")) ; } ; fintd() ;
               fintr() ;
               if (!$nomfic5=="") {
                    tr() ;
                      td() ; p() ; nbsp(10) ; finp() ; fintd() ;
                    fintr() ;
                    tr() ;
                      td() ; echo href($nomfic5,img($nomfic5,$nomfic5,"300")) ; fintd() ;
                      td() ; p() ; nbsp(10) ; finp() ; fintd() ;
                      td() ; echo href($nomfic6,img($nomfic6,$nomfic6,"300")) ; fintd() ;
                    fintr() ;
               } ; # fin si
          } ; # fin si
          fintable() ;
          finblockquote() ;
          findiv() ;
        
        } # fin de fonction graphiques_R_png
        
        ###############################################################
        
        function DeuxGraphiquesEn_R_png($nomfic1,$nomfic2) {
        
        ###############################################################
        
          blockquote() ;
          table() ;
          tr() ;
            td() ;
              nbsp(20) ;
            fintd() ;
            td() ; echo href($nomfic1,img($nomfic1,$nomfic1,"300")) ; fintd() ;
            td() ; p() ; nbsp(10) ; finp() ; fintd() ;
            td() ; echo href($nomfic2,img($nomfic2,$nomfic2,"300")) ; fintd() ;
          fintr() ;
          fintable() ;
          finblockquote() ;
        
        } # fin de fonction DeuxGraphiquesEn_R_png
        
        ###############################################################
        
        function TroisGraphiquesEn_R_png($nomfic1,$nomfic2,$nomfic3) {
        
        ###############################################################
        
          blockquote() ;
          table() ;
          tr() ;
            td() ; echo href($nomfic1,img($nomfic1,$nomfic1,"300")) ; fintd() ;
            td() ; p() ; nbsp(10) ; finp() ; fintd() ;
            td() ; echo href($nomfic2,img($nomfic2,$nomfic2,"300")) ; fintd() ;
            td() ; p() ; nbsp(10) ; finp() ; fintd() ;
            td() ; echo href($nomfic3,img($nomfic3,$nomfic3,"300")) ; fintd() ;
          fintr() ;
          fintable() ;
          finblockquote() ;
        
        } # fin de fonction TroisGraphiquesEn_R_png
        
        ###############################################################
        
        function sixGraphiquesEn_R_png($nomfic1,$nomfic2,$nomfic3,$nomfic4,$nomfic5,$nomfic6) {
        
        ###############################################################
        
          div("cadrejaune") ;
          blockquote() ;
          table() ;
          tr() ;
            td() ; echo href($nomfic1,img($nomfic1,$nomfic1,"300")) ; fintd() ;
            td() ; p() ; nbsp(10) ; finp() ; fintd() ;
            td() ; echo href($nomfic2,img($nomfic2,$nomfic2,"300")) ; fintd() ;
          fintr() ;
          tr() ;
            td("C","",3) ; nbsp() ; fintd() ;
          fintr() ;
          tr() ;
            td("C","",3) ; echo href($nomfic3,img($nomfic3,$nomfic3,"300")) ; fintd() ;
          fintr() ;
          fintable() ;
          finblockquote() ;
          findiv() ;
        
        } # fin de fonction TroisGraphiquesEn_R_png
        
        ###############################################################
        
        function execute_Sweave($tabCmd) {
        
        ###############################################################
        
        # not yet !
        
        } # fin de fonction execute_Sweave
        
        
        ?>
        

La coloration syntaxique est réalisée par : SyntaxHighlighter.

Si vous préférez, vous pouvez utiliser celle de geshi ou même celle construite autour de la fonction highlight_file.

 

 

retour gH    Retour à la page principale de   (gH)