Envoi de variables javascript

Résolu/Fermé
fafa - 16 févr. 2011 à 14:02
 fafa - 17 févr. 2011 à 12:56
Bonjour,

je voudrais savoir s'il est possible d'envoyer des variables javascript d'une page php vers une autre ..?

Si oui, pouvez-vous m'expliquer pleeeaasee!!

mercii

6 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
16 févr. 2011 à 14:11
Bonjour,

Tout dépend de la façon dont ton site passe de la première page à la seconde.
Si c'est par un lien, alors il faut que le lien en question intègre les variables php, ce qui peut se faire par l'événement onclick sur le lien.
Si c'est par un formulaire, alors il faut déclarer des champs <input type="hidden"> qui contiennent les variables que tu veux.
Il reste aussi la possibilité de passer par de l'Ajax, par exemple sur un unload, un appel Ajax peut aller modifier des variables de session php.

Xavier
0
en fait il s'agit de recuperer le nombre saisi dans une boite de dialogue , ce nombre est ensuite inserer dans ma variable $heure .
voila un pti bout de mon code:

for ($i = 1; $i <= $NbDimanche ; $i++ )
{
?> <script type="text/javascript"> var reponse = prompt("Combien d'heures avez-vous travaillé le dimanche? ", '0') // pop up qui apparaitra le nb de fois il y a un dimanche dans la periode de l'intervention

</script>
<?php

echo'<tr><td> Dimanche '.$i.' </td> <td><center>' .$heure. ' </center></td></tr>';

}

$heure = "<script language='Javascript'> document.write(reponse); </script>"; // recupere la valeur du prompt()
ECHO"<input type=\"hidden\" name=\"heure\" value=\"$heure\">";


mais ca ne me renvoi rien :(

jaimerai pouvoir recuperer les differentes valeurs de $heure sur une autre page php ..
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
16 févr. 2011 à 15:11
Bonjour,

Ah, en effet, il y a une confusion.
Tu mélanges les aspects client et serveur de ta page.
Le javascript et le php ne peuvent pas interagir comme ça "instantanément" : le php s'exécute côté serveur, le javascript côté client. La totalité* du php est exécutée avant même que le client ne commence à traiter le javascript.

En gros, dans ton cas, le client se retrouve avec une page de ce genre, qui arrive en un bloc :
<script type="text/javascript"> var reponse = prompt("Combien d'heures avez-vous travaillé le dimanche? ", '0')</script>
<tr><td> Dimanche 1 </td> <td><center></center></td></tr>
<script type="text/javascript"> var reponse = prompt("Combien d'heures avez-vous travaillé le dimanche? ", '0')</script>
<tr><td> Dimanche 2 </td> <td><center></center></td></tr>
<script type="text/javascript"> var reponse = prompt("Combien d'heures avez-vous travaillé le dimanche? ", '0')</script>
<tr><td> Dimanche 3 </td> <td><center></center></td></tr>
<script type="text/javascript"> var reponse = prompt("Combien d'heures avez-vous travaillé le dimanche? ", '0')</script>
<tr><td> Dimanche 4 </td> <td><center></center></td></tr>

<input type="hidden" name="heure" value=""> 

Et rien ne lui demande de communiquer en réponse avec le php (document.write ne sert pas à ça ! c'est juste pour écrire sur la page vue par l'utilisateur ; et en plus, tu ne demandes jamais de l'afficher sur la page.)

Bref, tout ça pour dire que la méthode n'est pas la bonne.

Pour communiquer de javascript vers php, trois possibilités :
- un formulaire
- Ajax
- un lien.

Et en tout état de cause, cela suppose une interruption dans le traitement du php :
d'abord on traite les demandes envoyées au client ; puis seulement on récupère tout ce que le client répond.

Le plus simple dans ton cas sera d'utiliser un formulaire.
Voici ce que je te propose.

Première page : la demande au client. Le code que je mets se substitut au code que tu as mis.
echo '<form method="POST" action="autrePage.php" id="form_dimanches">';  // Doit être placé avant la déclaration de ta table
echo '<table>';  // Garde la tienne, c'est juste pour montrer l'ordre avec le <form>
for ($i = 1; $i <= $NbDimanche ; $i++ )
{
    echo '<input type="hidden" name="dimanche'.$i.'" value="" />;
    echo'<tr><td> Dimanche '.$i.' </td> <td id="tdDimanche'.$i.'"></td></tr>';
?>
    <script type="text/javascript">
        reponse = prompt("Combien d'heures avez-vous travaillé le dimanche? ", '0'); // pop up qui apparaitra le nb de fois il y a un dimanche dans la periode de l'intervention
        document.getElementById("dimanche<?php= $i ?>").value = reponse;
        document.getElementById("tdDimanche<?php= $i ?>").innerHTML= "<center>" + reponse + "</center>";
</script>
<?php
}
echo '</form>';
echo '</table>';

echo '<script type="text/javascript">document.getElementById("form_dimanches").submit();</script>';


Cette page te redirige automatiquement vers la page autrePage.php, dans laquelle tu auras accès aux variables suivantes :
$_POST["dimanche1"]
$_POST["dimanche2"]
$_POST["dimanche...N"]

qui contiennent chacune le nombre d'heures renseignées.

En espérant t'avoir aidé,

Xavier
0
ahh ui ok, J'avais pas fais la difference entre client et serveur, je comprend mieux!! merciii

Une autre petite question,

j'ai une autre page dans laquelle j'ai un tableau html qui affiche toute les information d'une table de ma BD.

J'ai fais un bouton supprimer a chaque ligne du tableau pour pouvoir supprimer cet enregistrement dans ma bd. Seulement je n'arrive pas à le faire fonctionner correctement ..

Mon bout de code :


// connexion
$id = mysql_connect('localhost','root','');
mysql_select_db("gestion_deplacement");
if( $id = mysql_connect('localhost','root','') )
{
if(mysql_select_db("gestion_deplacement") )
{


$requete1='SELECT * FROM INTERVENTION WHERE NOM = "'.$nom.'" AND MONTH (dateD) = "'.$mois.'"and year(dateD) = "'.$annee.'" ORDER BY dateD ';
$result1=mysql_query($requete1) or die ("Requete pas comprise") ; ?>

<br><td width=500>Interventions effectuées :

<?php
echo"<br><br>";
echo'<center><table border=4>';
echo'<TR><TD width=120>Nom</td><TD width=120>Site</td><TD width=120>Date début</TD><TD width=120>Date fin</TD> <TD> Supprimer </TD>';


while ($data=mysql_fetch_array($result1))
{
echo"<tr><td><center>".$data[1]."</td><td><center>" .$data[2]."</TD><td><center>" .$data[3]. "<td> <center>" .$data[4]." </TD><td><center> <a href=suppression.php?Action=Suppression&id=".$data['idIntervention']."><img src='suppr.png' border = 'none' alt='Supprimer' /></a></TD>";


ECHO "<input type=\'hidden\' name=\'supprimer\' value=$data[idIntervention]>" ;}

echo'</center></table>';
echo"<br><br>";

}
else {echo 'Echec de connexion à la base.';}

mysql_close($id);
}
?>



Ma page suppression.php :

<?


$id = $_GET['supprimer'] ;

// connexion
$id = mysql_connect('localhost','root','');
mysql_select_db("gestion_deplacement");
if( $id = mysql_connect('localhost','root','') )
{
if(mysql_select_db("gestion_deplacement") )
{

// Suppression d'une intervention



$req ='delete from intervention where idIntervention = '.$id.'' ;
$res = mysql_query($req) or die ('requete pas comprise') ;

echo 'Suppression effectuée' ;
}
else {echo 'Echec de connexion à la base.';}
mysql_close($id);
}
?>
Pourriez - vous m'aider svppp!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
17 févr. 2011 à 11:18
Bonjour,

C'est simple.
Dans ton lien, tu as :
&id=".$data['idIntervention']

Or, dans ta page php, tu fais :
$id = $_GET['supprimer'] ;
Ce n'est pas cohérent ; il faudrait mettre$id = $_GET["id"];

Par ailleurs, juste en dessous, tu écrases cette variable $id !
$id = mysql_connect('localhost','root','');
...
if( $id = mysql_connect('localhost','root','') )
...

Résultat, $id ne vaut pas du tout l'identifiant de la ligne dans ta base de données...
On va rendre les choses plus propres :
<?

$idIntervention = $_GET['id'] ;

// connexion
$idConnexion = mysql_connect('localhost','root','');
if( $idConnexion && mysql_select_db("gestion_deplacement"))
{
    // Suppression d'une intervention
    $req ='delete from intervention where idIntervention = '.$idIntervention;
    $res = mysql_query($req) or die ('requete pas comprise') ;
    echo 'Suppression effectuée' ;
}
else {echo 'Echec de connexion à la base.';}
mysql_close($idConnexion);
?> 


Xavier
0
Je te remercie!! Ca marchee!! :)

desolé de t'embeter mais juste une derniere question !! :)

est-il possible de supprimer un enregistrement grace à un autre champs que l'id? j'ai une table dont la clé primaire est 'matricule' (il s'agit d'une autre table nommée 'intervenant')..?

j'ai essayer comme ça mais la requete n'est pas comprise :

ce que j'ai changé c'est :
<a href=suppressionIntervenant.php?matricule='.$data[0].'><img src="suppr.png" border = "none" alt="Supprimer" /></a></TD>

qui remplace :

<a href=suppression.php?id=".$data['idIntervention']."><img src='suppr.png' border = 'none' alt='Supprimer' /></a></TD>

puis :

$matricule= $_GET['matricule'] ;

// connexion
$idConnexion = mysql_connect('localhost','root','');
if( $idConnexion && mysql_select_db("gestion_deplacement"))
{
// Suppression d'un intervenant

$req ='delete from intervenant where matricule = '.$matricule;
$res = mysql_query($req) or die ('requete pas comprise') ;
echo 'Suppression effectuée' ;
}

else {echo 'Echec de connexion à la base.';}


mysql_close($idConnexion)

je pense donc que l'on peut supprimer une ligne que par son id .. jme trompe?
0
ahhh nooon g rien dis!! g rajouter des guillemets autour de $matricule et Ca marche nikeel !!

en tout cas mercii bcp Xavier tu m'a été d'une aide precieuse!! jte remerciie !! :)
0