Pris en compte auto du chode php dans une fonction js

Résolu
atomik29 Messages postés 87 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 17 décembre 2008 - 19 juin 2006 à 10:09
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 19 juin 2006 à 11:03
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 juin 2006 à 11:03
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...
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 juin 2006 à 10:46
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!
0
atomik29 Messages postés 87 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 17 décembre 2008 1
19 juin 2006 à 10:52
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
0
Rejoignez-nous