Page 1 sur 1

Récupérer la valeur d'une variable JS en PHP

Posté : 17 janv. 2007, 05:11
par daplus
Bonjour à tous et à toutes,

Le script qui suit effectue la modification d'un tuple dans une table de gestion de projets.

En préalable je tiens à expliquer que je souhaite intégrer du JS dans un formulaire PHP, je ne souhaite pas utiliser un premier formulaire JS en cliquant sur submit, puis aller sur un deuxième formulaire PHP. Je souhaite tout faire dans le même formulaire.

J'ai d'abord passé du temps à lire le forum sur le transfert de données JS PHP, je n'ai trouvé que de PHP (db) vers JS. Je cherche l'inverse:

de JS vers PHP
<?php

session_start();

if ($at_id > 0 ) {$v_at_id0=$at_id;} else {if ( $v_at_id0 & !$at_id ) {$at_id=$v_at_id0;}}
if ($atp_id > 0 ) {$v_atp_id0=$atp_id;} else {if ( $v_atp_id0 & !$atp_id ) {$atp_id=$v_atp_id0;}}

?>
<!DOCTYPE HTML SYSTEM>
<html>
<head>
<title>Project</title>

<script language="JavaScript" src="css_js/ts_picker.js"></script>

</head>
<body link="blue" alink="blue" vlink="blue" background="images_ATFS/1580_2.gif">

<?php

include "include/get_root_atfs.inc";

if ($submit) {

    $today = date("Y-m-d");

    echo"<table border=0 bgcolor=#FFFFFF align=center><tr><td>";

    $sqlup = "UPDATE atproject SET atp_at_id='$atp_at_id',atp_ref='$atp_ref',atp_start='$atp_start',atp_end='$atp_end',atp_quoted='$atp_quoted',atp_awarded='$atp_awarded',atp_rogress='$atp_rogress',atp_cpl_inv='$atp_cpl_inv',atp_invoice='$atp_invoice',atp_paym_pb='$atp_paym_pb',atp_completed='$atp_completed',atp_comm='$atp_comm',atp_modified='$today' WHERE atp_id=$atp_id";

    $resultup = mysql_query($sqlup);

    echo "Record updated!<p>";

    echo "<a href='project_view.php'>Continue</a>";

    echo"</table>";

} else {

  ?>

  <P>

  <a name="bottom"></a>

  <?php

    echo"<table border=0 bgcolor=#FFFFFF align=center><tr><td>";

    echo "<table><tr><td>";

   include "include/title_choice.inc";

   echo "<td><b><font size=4 face=Arial>Modify a Project</font><br></b>";

   echo "</table>";

   echo "<br><table>";

  ?>

  <P>

  <table border="0">

<form name="tstest">

<tr><td width="190">Project Date</td><td><input type="Text" name="from_ori" value="">
<a href="javascript:show_calendar('document.tstest.from_ori', document.tstest.from_ori.value);"><img src="images_ATFS/cal.gif" width="16" height="16" border="0" alt="cal.gif" title="Click Here to Pick up the Project Date"></a> <?php  $date_start = $from_ori; echo "date_start $date_start<br>";?>  </td></tr>

<tr><td width="180">Project Follow Up Date</td><td><input type="Text" name="folup_ori" value="">
<a href="javascript:show_calendar('document.tstest.folup_ori', document.tstest.folup_ori.value);"><img src="images_ATFS/cal.gif" width="16" height="16" border="0" alt="cal.gif" title="Click Here to Pick up the Project Follow Up Date"></a> <?php  $date_end = $folup_ori; ?>  </td></tr>

</form>

   </table>

  <form method="post" action="<?php echo $PHP_SELF?>">

  <?php

  include "include/get_root_atfs.inc";

    $sql = "SELECT * FROM atproject WHERE atp_id=$atp_id";

    $result = mysql_query($sql);

    $myrow = mysql_fetch_array($result);

    $atp_id = $myrow["atp_id"];

    $atp_at_id = $myrow["atp_at_id"];
    $codetargetadr = $myrow["atp_at_id"];

    $atp_ref = $myrow["atp_ref"];

    $atp_start = $myrow["atp_start"];

    $atp_end = $myrow["atp_end"];

    $atp_quoted = $myrow["atp_quoted"];

    $atp_awarded = $myrow["atp_awarded"];

    $atp_rogress = $myrow["atp_rogress"];

    $atp_cpl_inv = $myrow["atp_cpl_inv"];

    $atp_invoice = $myrow["atp_invoice"];

    $atp_paym_pb = $myrow["atp_paym_pb"];

    $atp_completed = $myrow["atp_completed"];

    $atp_modified = $myrow["atp_modified"];

    $atp_comm = $myrow["atp_comm"];

?>

    <input type=hidden name="atp_id" value="<?php echo $atp_id ?>">



  <table border=0>

  <tr><td><font face=Arial size=2>Address</font></td><td>

    <SELECT name = "atp_at_id">

  <?php

    $resultoptiontadr = mysql_query ("SELECT * FROM ataddress ORDER BY at_name1");

  while($opt_lineadr=mysql_fetch_array ($resultoptiontadr))

    if ($opt_lineadr[0]== $codetargetadr) {

	echo "<option SELECTED value=$opt_lineadr[0]>$opt_lineadr[1] > $opt_lineadr[2]</option>\n";

	 } else {

    echo "<option value=$opt_lineadr[0]>$opt_lineadr[1] > $opt_lineadr[2]</option>\n";

	 }

 ?>

  </SELECT></td></tr>

  <tr><td>Project Nr</td><td><input type="Text" name="atp_ref" size="10" value="<?php echo $atp_ref ?>"></td></tr>

  <tr><td>Quoted</td><td><input type="Text" name="atp_quoted" size="10" value="<?php echo $atp_quoted ?>"> Quote Nr </td></tr>

  <tr><td>Awarded</td><td><input type="Text" name="atp_awarded" size="1" value="<?php echo $atp_awarded ?>"> Y or empty </td></tr>

  <tr><td>In Progress</td><td><input type="Text" name="atp_rogress" size="1" value="<?php echo $atp_rogress ?>"> Y or empty </td></tr>

  <tr><td>Completed before Invoicing&nbsp;&nbsp;&nbsp;</td><td><input type="Text" name="atp_cpl_inv" size="1" value="<?php echo $atp_cpl_inv ?>"> Y or empty  </td></tr>

  <tr><td>Invoiced</td><td><input type="Text" name="atp_invoice" size="10" value="<?php echo $atp_invoice ?>"> Invoice Number </td></tr>

  <tr><td>Payment Delinquent</td><td><input type="Text" name="atp_paym_pb" size="1" value="<?php echo $atp_paym_pb ?>"> Y or empty </td></tr>

  <tr><td>Project completed</td><td><input type="Text" name="atp_completed" size="1" value="<?php echo $atp_completed ?>"> Y or empty </td></tr>

  <tr><td>Comments</td><td><textarea name="atp_comm" rows="10" cols="75"><? echo ''.$atp_comm.''; ?></textarea></td></tr>

  </table>

  <input type="Submit" name="submit" value="Enter information">
  <a href="javascript:history.go(-1)">BACK</a>

  </form>

<?php

}

  echo "</table>";

?>

</body>

</html>
La partie que je n'arrive pas à résoudre est ici:
<form name="tstest">

<tr><td width="190">Project Date</td><td><input type="Text" name="from_ori" value="">
<a href="javascript:show_calendar('document.tstest.from_ori', document.tstest.from_ori.value);"><img src="images_ATFS/cal.gif" width="16" height="16" border="0" alt="cal.gif" title="Click Here to Pick up the Project Date"></a> <?php  $date_start = $from_ori; echo "date_start $date_start<br>";?>  </td></tr>

<tr><td width="180">Project Follow Up Date</td><td><input type="Text" name="folup_ori" value="">
<a href="javascript:show_calendar('document.tstest.folup_ori', document.tstest.folup_ori.value);"><img src="images_ATFS/cal.gif" width="16" height="16" border="0" alt="cal.gif" title="Click Here to Pick up the Project Follow Up Date"></a> <?php  $date_end = $folup_ori; ?>  </td></tr>

</form> 
cela marche mais je n'arrive pas à charger $date_start et $date_end depuis JS

Je reconnais avoir utilisé un code JS issu d'exemples sur le web, mais nulle part je n'ai trouvé de transfert JS vers PHP

Merci d'avance pour toute piste et pour votre temps

Posté : 17 janv. 2007, 09:49
par zeus
Ce que tu cherches à faire est tout bonnement impossible de cette manière.

Pour comprendre pourquoi, il faut que tu assimiles bien la notion de client serveur.

Le PHP est un langage serveur, c'est à dire qu'il est exécuté sur le serveur AVANT l'envoi des données sur le client (l'ordinateur avec le navigateur). Une fois que la page est affiché, le PHP a terminé son exécution et il est impossible d'y revenir sans afficher une autre page.

Le JS est un langage client, donc il est exécuté APRES l'envoi des données.

Tu comprends donc qu'il n'est pas possible de modifier des valeurs PHP avec le JS.

Plus d'info ici : http://www.commentcamarche.net/cs/csintro.php3


Quand tu auras bien assimilé ça, tu pourras essayer de chercher du côté de l'AJAX qui permet de redemander des informations au serveur grâce à JS ;)

Merci Zeus

Posté : 17 janv. 2007, 22:40
par daplus
Je m'attendais à cette réponse, mais je voulais être sur de n'avoir occulter aucune possibilité.

Je sais que PHP est serveur et que JS est client et qu'il y a peu de chances.

Il va me faloir plonger dans AJAX, j'espère qu'il s'agit d'un open source.

Merci encore

Posté : 18 janv. 2007, 09:15
par zeus
l'AJAX n'est rien de plus que la mise en collaboration de JS et de PHP, rien de plus.

Recherche un peu et tu verras ;)

Merci Zeus

Posté : 18 janv. 2007, 15:42
par daplus
J'ai déjà commencé, merci du conseil