Soucis de formulaire d'envoie de fichier et checkbox

Signaler
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012
-
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012
-
Bonjour/bonsoir tout le monde,

Alors voici ma situation:

J'ai un formulaire d'envoi de fichier suivis, dans ce même formulaire, d'une liste de 6 checkboxs.

J'aimerais que selon que l'on coche l'une ou/et l'une des checkboxs, que le fichier choisis soit traité par le ou les scripts PHP correspondants aux différentes checkboxq cochées à l'envoie du fichier et que ça me rende les résultats obtenus sur une même page.

Je pratique le PHP depuis assez peu de temps donc excusez mon manque d'expérience. En réfléchissant un chouilla, je pensais créer un fichier PHP servant de "transition" reconnaissant les checkboxs cochées et envoyant vers les PHP correspondants si la case est cochée.
Après pour le code je sais pas comment l'écrire ... Sachant que donc ici il faudrait afficher au maximum les 6 résultats des scripts PHP sur une même page...

Je penche dessus depuis quelques jours mais là j'avoue que je suis totalement perdu ...

Je vous remercis d'avance.

22 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonsoir
tu devrais commencer ainsi
bon ici 4 resultats ...

<?php
function faireAction1(){
echo '1 Je fais ça
';
}

function faireAction2(){
echo '2 Je fais ça
';
}

function faireAction3(){
echo '3 Je fais ça
';
}

function faireAction4(){
echo '4 Je fais ça
';
}      


if(isset($_POST['choix1']) && $_POST['choix1']==='a1'){
faireAction1();
}else{
}


if(isset($_POST['choix2']) && $_POST['choix2']==='a2'){
faireAction2();
}else{
}

if(isset($_POST['choix3']) && $_POST['choix3']==='a3'){
faireAction3();
}else{
}

if(isset($_POST['choix4']) && $_POST['choix4']==='a4'){
faireAction4();
}else{
}
?>


<form action="" method="post">

c1

c2

c3

c4




</form>



Bonne programmation !
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Sérieux utiliser les tableaux faire une boucle c'est carrément mieux que de recopier 1000 fois le même passage...

<?php

if (!empty($_POST['foo']))
  {
    $handlers = array();
    $handlers['toto'] = function() { echo 'toto'; };
    $handlers['titi'] = function() { echo 'titi'; };
    $handlers['tutu'] = function() { echo 'tutu'; };

    foreach ($_POST['foo'] as $bar)
      {
        if (array_key_exists($bar, $handlers))
          {
            $func = $handlers[$bar];
            $func();
          }
      }
  }

?>

<form action="" method="post">

toto

titi

tutu



</form>
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
@TychoBrahe

Parse error: syntax error, unexpected T_FUNCTION in C:\wamp\www\eps\tif27940\tycho.php on line 6


Bonne programmation !
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Tu as quelle version de php ? En 5.3 c'est nikel.
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
Oui tu as complétement raison j'avais basculé en 5.2.11
Nickel en 5.3
Bonne programmation !
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Tient, petite amélioration :D

<?php

$handlers = array();
$handlers['toto'] = function() { echo 'toto'; };
$handlers['titi'] = function() { echo 'titi'; };
$handlers['tutu'] = function() { echo 'tutu'; };

if (!empty($_POST['foo']))
  {
    foreach ($_POST['foo'] as $bar)
      {
        if (array_key_exists($bar, $handlers))
          {
            $func = $handlers[$bar];
            $func();
          }
      }
  }

echo '<form action="" method="post">';
foreach ($handlers as $name => $func)
  {
    echo '', $name, '
';
  }
echo '</form>';

?>

Au passage, rajouter une action ce serait pas du luxe ^^
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Oops, oublié les cas pourris :
<?php

$handlers = array();
$handlers['toto de l\'ol "xtrem"'] = function() { echo 'toto x-trem'; };
$handlers['titi'] = function() { echo 'titi'; };
$handlers['tutu'] = function() { echo 'tutu'; };

if (!empty($_POST['foo']))
  {
    foreach ($_POST['foo'] as $bar)
      {
$bar = urldecode($bar);
        if (array_key_exists($bar, $handlers))
          {
            $func = $handlers[$bar];
            $func();
          }
      }
  }

echo '<form action="" method="post">';
foreach ($handlers as $name => $func)
  {
    echo '', $name, '
';
  }
echo '</form>';

?>
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

Le dernier code que tu as écris tycho correspondrait au code de mon PHP de "transition" ?

Dans le form je mettrais donc le nom de ce PHP en "action".

les toto/titi/tutu dans handlers correspondraient à l'"id" de chaque choix dans mon form, et les toto/titi/tutu dans echo correspondraient aux noms de mes PHP que je souhaiteraient éxécuter ?

désolé si je suis à la ramasse, j'ai vraiment pas mal de mal à comprendre en ce début d'apprentissage
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

<form action="transition.php" method="post" enctype="multipart/form-data">

Formulaire d'envoi de fichier :




 <label for="case">LKB</label>
 <label for="case">Logit</label>
 <label for="case">Poisson</label>
 <label for="case">Kallman</label>
 <label for="case">Schul</label>
 <label for="case">Parallel</label>
</form>


voici le code de mon formulaire
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Petite explication de mon code (la dernière version) :

$handlers est un tableau associatif qui à un id associe une fonction anonyme. A toi de définir tout ça. Dans le html, on remarque que le formulaire contient une checkbox dont le nom est foo[]. Les deux crochets permettent d'obtenir un tableau, comme ça, si $_POST['foo'] n'est pas vide, il est possible de le parcourir avec un foreach afin d'exécuter la fonction correspondante à tous les id qui ont été passés.

Bref, oui 'toto de l\'ol "xtrem"', 'titi' et 'tutu' sont les id ou nom des actions que tu veux effectuer. Après, le echo est l'action qui est effectuée si jamais l'action est cochée. Tu peux bien entendu remplacer le echo par n'importe quoi. Du coup, pour ajouter de nouvelels actions, tu as juste besoin d'ajouter un nouveau couple id/function dans le tableau.
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

est ce que je peux par exemple remplacer le echo par un fichier PHP ?

car en faite, pour chaque cas le fichier ne diffère que très peu mais le calcul peut prendre entre 30 sec et 5 min selon le fichier.

Voici le code PHP:


<html>


Traitement en cours : 0%

<?php
 $out = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé (trop gros ?)";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./NTCPfitting.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out);
?>






<script type="application/javascript">
  var file_out="<?php echo "out_$datefile.txt";?>"
</script>
<script type="application/javascript" src="NTCP.js"></script>



</html>


Mon travail est donc de créer le formulaire avec les 6 choix, selon les choix fait ,ben ça doit lancer les scripts correspondants.
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
est ce que je peux par exemple remplacer le echo par un fichier PHP ?

Oui. Une fonction anonyme est une fonction, tu peux écrire tout le php que tu veux dedans. Faire un echo, faire un include ou n'importe quoi d'autre c'est bon.

exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./NTCPfitting.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out);

Attention ! Tu dois absolument utiliser escapeshellarg() sous peine de laisser une montreuse faille de sécurité permettant à un utilisateur mal intentionné d'exécuter une commande arbitraire sur le serveur. Utiliser escapeshellcmd() en plus est également une bonne chose.
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

<?php

$handlers = array();

$handlers['LKB'] = function() { 
 $out1 = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./LKB.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out1); };

$handlers['Logit'] = function() { 
 $out2 = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Logit.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out2); };

etc...

if (!empty($_POST['foo']))
  {
    foreach ($_POST['foo'] as $bar)
      {
$bar = urldecode($bar);
        if (array_key_exists($bar, $handlers))
          {
            $func = $handlers[$bar];
            $func();
          }
      }
  }

echo '<form action="" method="post">';
foreach ($handlers as $name => $func)
  {
    echo '', $name, '
';
  }
echo '</form>';

?>


Si j'ai bien compris, ton code répond en partis à ma question, il faudrait que j'ai un formulaire d'envoie de fichier cependant ou alors je créer le formulaire et je met en action le PHP ci dessus ?
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
C'est bien ça. Après, perso je sortirais le traitement du fichier envoyé des fonctions afin de ne l'avoir qu'une seule fois. Au passage, tu peux très bien modifier la partie contenant le formulaire afin d'avoir, en plus, l'upload de fichier.
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

J'ai essayer de créer un simple formulaire d'envoie d'un fichier avec pour "action" le PHP ci dessus ...

Quand j'envoie mon fichier ça me renvoie sur une page avec les 6 checkbox, si je coche et valide, ça me marque que le fichier n'est pas uploader ...
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

personne pour me répondre, je patine toujours ...
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Montre donc où tu en es exactement (ton code actuel).
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

J'ai retenter disons pas à pas avec votre code.

Je ne pense pas que l'erreur vienne de votre code mais plutôt de la complexité de mes PHP à exécuter.

Alors résumons le tout:

Je dois donc partir d'une page html/php comprenant un formulaire de type:

<form action="what.php" method="post" enctype="multipart/form-data">
Formulaire d'envoi de fichier :




LKB

Logit

Poisson

Kallman

Schul

Parallel



</form> 


Ce formulaire appelerais donc un PHP qui suivant que une ou plusieurs checkbox aient été coché ben appelerais la fonction correspondante à la/les checkbox cochées.

je vous affiche le PHP du LKB: (les autres sont similaires)

Traitement en cours : 0%
<?php
 $out = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./LKB.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out);
?>






<script type="application/javascript">
  var file_out="<?php echo "out_$datefile.txt";?>"
</script>
<script type="application/javascript" src="NTCP.js"></script>


Après ben ça se complique méchamment:

Comme on peut le voir, chaque PHP correspondant à chaque checkbox fait appel à un programme R ( pas nécessaire de mettre le code ici car pas utile ), et un javascript qui est le même pour chaque checkbox et un autre php à travers le javascript ...

Voici le javascript:

window.onload = function() {
  envoi("file_out="+file_out,"check.php");
}

function envoi(req,page) {
 var xhr_object = null;
 if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
 else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
 else
 return(false);
 xhr_object.open("POST", page, true);
 xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); 
 xhr_object.send(req);
 xhr_object.onreadystatechange = function() { 
  if(xhr_object.readyState == 4) { retour(xhr_object.responseXML);}
 }
}

function retour(docXml) {
  chargement(docXml);
}

function chargement(docXml) {
  var progression = docXml.getElementsByTagName('progression');
  var progress = 0;
  if (progression.length) {
   progress = progression[0].getAttribute('value');
   span = document.getElementById("progress");
   span.innerHTML = progress;
  }
  
  var rows = docXml.getElementsByTagName('ligne');
  if (rows.length) {
    tbody = document.getElementById("result_body");
    tbody.innerHTML = "";
    for(var row=0;row<rows.length;row++) {
      var tr = document.createElement("tr");
      row_values = rows[row].getAttribute("value");
      var columns = row_values.split(";");
      for( column in columns) {
        var td = document.createElement("td");
        td.innerHTML = columns[column];
        tr.appendChild(td);
      }
      tbody.appendChild(tr);
    }
  }

  var loglikelihood = docXml.getElementsByTagName('loglikelihood');
  if (loglikelihood.length) {
   var lllh = loglikelihood[0].getAttribute('value');
   span = document.getElementById("lllh");
   span.innerHTML "-log-likelihood "+lllh;
  }
  if (progress < 100) {
    window.setTimeout(function(a,b){ return function(){envoi(a,b);};}("file_out="+file_out,"check.php"),5000);
  }
}


le check.php:
<?php

header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Content-type: application/xml");

echo('<?xml version="1.0" encoding="utf-8" ?>');

$progression = 0;
$reste = "";
$loglikelihood = "";

if ($_POST) {
  if (!empty($_POST['file_out'])) {


echo('<NTCP>');

if (($handle = fopen($_POST['file_out'], "r")) !== FALSE) {
//if (($handle = fopen("out.txt", "r")) !== FALSE) {

 while ($data = fgets($handle)) {
   if ( preg_match("/itermax=(\d*),/",$data,$matches) ) {
     //print_r($matches);
     $itermax=$matches[1];
   } else if ( preg_match("/TRUE/",$data,$matches) ) {
     //ne rien faire est parfois utile
   } else if (substr($data,0,1) != ">") {
     if ( preg_match ("/Iteration: (\d*) /", $data, $matches) ) {
       //echo $data;
       $progression = $matches[1]/$itermax*100;
     } else {
       if ( preg_match ("/-log-likelihood = (\d*\.\d*)/", $data, $matches) ) {
         $loglikelihood = $matches[1];
       } else {
         $data = rtrim($data);
         $keywords = preg_split("/ +/",$data);
         if ( preg_match ("/Std/", $data) ) { 
           $keywords[0] = $keywords[0]." ".$keywords[1];
           unset($keywords[1]);
         }
         $reste .= "<ligne value='".implode(";",$keywords);
         $reste .= "'/>";
       }
     } 
   }
 }
 fclose($handle);
  
  echo "";
  echo "<resultat>".$reste."</resultat>";
  echo "<loglikelihood value='$loglikelihood'/>";
} else {
  echo('<error />');
}

echo('</NTCP>');

if ($progression >= 100) {
  unlink($_POST['file_out']);
}


} else {
 echo '<NTCP><error value="fichier inexistant"/></NTCP>';
}

}
?> 


Voilà c'est assez violent au bout du compte ...

j'ai essayer un truc comme ça pour vous donner une idée mais je comprend pas d'où le pourquoi du comment ça veut pas marcher ...

<html>


Traitement en cours : 0%

<?php
function LKB(){
echo 'LKB: 
';

 $LKB = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé. ";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./LKB.R > ./LKB_'.$datefile.'.txt 2>/dev/null &', $LKB);
}

function Logit(){
echo 'Logit: 
';

 $Logit = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé. ";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Logit.R > ./logit_'.$datefile.'.txt 2>/dev/null &', $Logit);
}

function Poisson(){
echo 'Poisson:
';

 $Poisson = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé. ";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Poisson.R > ./Poisson_'.$datefile.'.txt 2>/dev/null &', $Poisson);
}

function Kallman(){
echo 'Kallman: 
';

 $kallman = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé. ";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Kallman.R > ./kallman_'.$datefile.'.txt 2>/dev/null &', $kallman);
}      

function Schul(){
echo 'Schul: 
';

 $Schul = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé. ";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Schul.R > ./Schul_'.$datefile.'.txt 2>/dev/null &', $Schul);
}

function Parallel(){
echo 'Parallel: 
';

 $Parallel = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé. ";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Parallel.R > ./Parallel_'.$datefile.'.txt 2>/dev/null &', $Parallel);
}

if(isset($_POST['LKB']) && $_POST['LKB']==='LKB'){
LKB();
}else{
}


if(isset($_POST['Logit']) && $_POST['Logit']==='Logit'){
Logit();
}else{
}

if(isset($_POST['Poisson']) && $_POST['Poisson']==='Poisson'){
Poisson();
}else{
}

if(isset($_POST['Kallman']) && $_POST['Kallman']==='Kallman'){
Kallman();
}

if(isset($_POST['Schul']) && $_POST['Schul']==='Schul'){
Schul();
}else{
}

if(isset($_POST['Parallel']) && $_POST['Parallel']==='Parallel'){
Parallel();
}else{
}

?>





<script type="application/javascript">
  var file_out="<?php echo "LKB_$datefile.txt";?>"
  var file_out="<?php echo "Logit_$datefile.txt";?>"
  var file_out="<?php echo "Poisson_$datefile.txt";?>"
  var file_out="<?php echo "Kallman_$datefile.txt";?>"
  var file_out="<?php echo "Schul_$datefile.txt";?>"
  var file_out="<?php echo "Parallel_$datefile.txt";?>"
</script>
<script type="application/javascript" src="NTCP.js"></script>


</html>
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Je me demande bien pourquoi tu demandes encore de l'aide vu que tu ne met pas en pratique les conseils qu'on te donne...

Voilà c'est assez violent au bout du compte...

Oui, et pas dans le bon sens du terme malheureusement. Sérieusement, reprend tout ton truc à partir de ce que je t'ai mis comme code, ce sera bien plus simple. Au fait, oublie donc le javascript pour le moment, avant de s'ammuser à faire ce genre de trucs en asynchrone il est préférable de savoir le faire "à l'ancienne".
Messages postés
17
Date d'inscription
vendredi 6 janvier 2012
Statut
Membre
Dernière intervention
17 février 2012

je suis obligée de garder le javascript sinon je n'aurais pas de résultat, les résultats prennent énormément de temps à s'afficher, c'est pour éviter le timeout de ma page ...

Après discussions avec mes autres collègues, on ne souhaite pas avoir l'affichage des checkboxs à chaque appel de page ( comme dans ton code, je l'ai tester également, en gros on veut une page avec le formulaire et une avec le résultat.

Traitement en cours : 0% 
<?php

$handlers = array();

$handlers['LKB'] = function() { 
 $out1 = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./LKB.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out1); };

$handlers['Logit'] = function() { 
 $out2 = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Logit.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out2); };


$handlers['Poisson'] = function() { 
 $out3 = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Poisson.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out3); };

$handlers['Kallman'] = function() { 
 $out4 = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Kallman.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out4); };

$handlers['Schul'] = function() { 
 $out5 = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Schul.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out5); };

$handlers['Parallel'] = function() { 
 $out6 = array();

 $dirDest = dirname(__FILE__)."/";
 $datefile = date("YmdHis");
 $fileDest = "file_".$datefile.".csv";
 if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
   if (!rename($_FILES["monfichier"]["tmp_name"],$dirDest.$fileDest)) {
     echo "
Le déplacement du fichier temporaire a échoué.
";
     echo "Vérifiez l'existence et les droits d'écriture du répertoire ".$dirDest."
";
   }
  } else {
    echo "Le fichier n'a pas été uploadé";
  }

 exec('/usr/bin/R -q --vanilla --args "'.$dirDest.$fileDest.'" < ./Parallel.R > ./out_'.$datefile.'.txt 2>/dev/null &', $out6); };

if (!empty($_POST['foo']))
  {
    foreach ($_POST['foo'] as $bar)
      {
$bar = urldecode($bar);
        if (array_key_exists($bar, $handlers))
          {
            $func = $handlers[$bar];
            $func();
          }
      }
  }

echo '<form action="" method="post">';
foreach ($handlers as $name => $func)
  {
    echo '', $name, '
';
  }
echo '</form>';
?>




<script type="application/javascript">
  var file_out="<?php echo "LKB_$datefile.txt";?>"
  var file_out="<?php echo "Logit_$datefile.txt";?>"
  var file_out="<?php echo "Poisson_$datefile.txt";?>"
  var file_out="<?php echo "Kallman_$datefile.txt";?>"
  var file_out="<?php echo "Schul_$datefile.txt";?>"
  var file_out="<?php echo "Parallel_$datefile.txt";?>"
</script>
<script type="application/javascript" src="NTCP.js"></script>



après peut être que j'ai mal écrit sachant qu'il y a une "bar de traitement" pour chaque calcul.
Fin bref je suis dans le flou le plus total quoi ...
La toute première solution me paraît plus simple pour comprendre ...