Pris en compte auto du chode php dans une fonction js [Résolu]

Signaler
Messages postés
87
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
17 décembre 2008
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour a tous
Voila mon probleme, j'ai dans une popup une liste deroulante, dans laquelle lorsque je selectionne une certaine valeur j'envoie un mail.

ma liste deroulante est appelee par une fonction se trouvant dans un aute fichier.

popupincident.php
/////////////////////
require_once "fonctionslistes.php";
....
<td>Etat :</td>
affichelisteetat3($codeetat,'codeetat',0);
.....

jaffiche donc le contenu de ma liste deroulante et lorsque je selectionne la valeur 3 j'appelle une fonction js envoiemail() qui se trouve dans le meme  fichier.

fonctionslistes.php
/////////////////////
function affichelisteetat3($codeetat,$nom,$allowempty) {
$query="SELECT codeetat, nometat FROM etatsincident ORDER by nometat";
$req=mysql_query($query);
echo"<select name='$nom' onChange="if (this.value=='3'){ envoiemail() }">";
  
if($allowempty!=0)
  echo "<option value=""></option>";

while($line = mysql_fetch_array($req)) {
  $tmpcode=$line["codeetat"];
  $tmpnom=$line["nometat"];
  echo "<option";

  if($codeetat==$tmpcode) {
    echo " selected";
    }
  printf(" value ="%d">%s</option>\n",$tmpcode,$tmpnom);
  }
echo "</select>\n";
}

fonction js
//////////
<script>
function verif2()
{
    <?
    $query24 = "SELECT env_mail_cloture FROM incidents WHERE codeincident='$codeincident' LIMIT 1";
    $req24 = mysql_query($query24) or die ("La requete 1 a echoué".mysql_error());
    $line24 = mysql_fetch_array($req24);
    $env_mail_cloture = $line24['env_mail_cloture'];
   
    if ($env_mail_cloture=='non')
    {
    //on recupere que $codeincident doffice
    if( mail("AAA.BBB@XXX.fr", "$codeincident", "blablamessage", "AAA.BBB@XXX.fr"))
            {
            //UPDATE env_mail_cloture
            ?>
            alert("<? echo"$codeincident"; ?>");
            document.forms.formu.submit();
            <?
            }
            else
            {
            ?>
            alert("Problême lors de l'envoie du mail de déclaration à la liste de diffusion ...");
            <?
            }
    }
    else
    {
    ?>alert("<? echo"ouinon : $env_mail_cloture"; ?>");<?
    }
?>
}
</script>

Le probleme et que dans mon js il y a egalement du php.
Lors de chaque chargement de la page, le php est lu et donc le mail est envoye automatiquement quelque soit la valeur de ma liste deroulante.

Comment faire pour qu'il me respecte les conditions ou bien comment transformer le code php en js (du moins pour la fonction mail)....
si vous avez dautres idees moi je ne vois pas ....

Merci pour vos reponses
Atomik29

3 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Non!
Tu veux appeler du code php à partir d'un évènement client. C'est impossible de cette manière. Quand tu es sur ton navigateur, PHP ne sait pas ce qu'il se passe. Tu dois repasser côté serveur pour ça, puisque php s'exécute côté serveur...
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

encore une fois, PHP s'exécute côté serveur et js s'exécute côté client. Donc le PHP est TOUJOURS exécuté AVANT le js.
Alors, mettre du code php dans une fonction js est impossible.
Fais tout en php!
Messages postés
87
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
17 décembre 2008
1
OK, donc lorsque jappel envoiemail() je met mon code php a la place....

function affichelisteetat3($codeetat,$nom,$allowempty) {
$query="SELECT codeetat, nometat FROM etatsincident ORDER by nometat";
$req=mysql_query($query);
echo"<select name='$nom' onChange="if (this.value=='3'){ ...DU CODE PHP... }">";

est-ce que ca  c possible ???
moi quand je met du php ca ne fait rien...

Atomik29