POST vers SESSION php en javascript

Fermé
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 - 21 juil. 2008 à 10:36
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 - 22 juil. 2008 à 14:12
Bonjour,

au boulot je fais un petit script en php, qui jusqu'à marche nickel. Mais depuis que j'essaie de créer une aide à la saisie du code postale et de la ville lors de la création d'un client, ça ne réagit pas vraiment comme il faudrait...

En fait, ce que je voudrais, c'est pouvoir sauver les valeurs qui sont dans les post lorsque j'appelle ma fonction javascript. Celle-ci ouvre une fenêtre qui gère la recherche de la ville. cependant, pour récupérer les valeurs (code postal et nom) de la ville selectionnée, je suis obligé de reloader la page qui a appelé le pop-up.les info sur la ville s'affiche bien, mais impossible de ne pas effacer les autres champs...
Vous n'auriez pas une idée pour me filer un coup de patte s'il vous plait...

Voilà le code qui appelle la fenêtre.
la fonction pop-up est appellée par un onclick qui marche très bien...

<script language=javascript>
//ouverture fenêtre codes postaux
function popup_cp(lycos,typ)
{
<?php
C'est ici que ça merde!!
$_SESSION['Prenom_tmp'] = $_POST['Prenom'];
$_SESSION['Nom_tmp'] = strtoupper($_POST['Nom']);
$_SESSION['Adr1_tmp'] = $_POST['Adr1'];
$_SESSION['Adr2_tmp'] = $_POST['Adr2'];
$_SESSION['Tel_tmp'] = $_POST['Tel'];
$_SESSION['Port_tmp'] = $_POST['Port'];
$_SESSION['Fax_tmp'] = $_POST['Fax'];
$_SESSION['Email_tmp'] = $_POST['Email'];
$_SESSION['Nom_Site_tmp'] = $_POST['Nom_Site'];
?>;
if (typ == 1)
{
var url = "CP.php?cp="+lycos;
}
else
{
var url = "CP.php?ville="+lycos;
}
code_postal=window.open(url,'code_postal','location=no, scrollbars=yes, status=no, width=300, height=600');
}

</script>
A voir également:

19 réponses

arnogb69 Messages postés 8 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 22 juillet 2008 1
22 juil. 2008 à 10:32
Oui, je vois quel est ton problème ici, ce n'est pas compliqué, c'est juste un problème d'allocation de mémoire.

En fait, tu vas cliquer gauche sur ton icone Wamp dans ta barre de notification (je crois que ca s appelle comme ça ^^), puis modifier ton php.ini :
Tu cherches la ligne "memory_limit = 8M"
Et tu remplace par "memory_limit = 16M" (ou plus si tu préfères)

Ensuite tu relance ton serveur et tu testes à nouveau
1
Salut Fou Riant,

Le problème est que le code Javascript et PHP ne sont pas interprete au même endroit (côté client pour le premier et serveur pour le second).

Ce que je te conseille, c est de modifier ton appel à ton Javascript pour lui passer le code PHP avant, c'est à dire, dans ton appel à la fonction, tu ajoutes les arguments des valeurs de ta session, puis, dans ton JS :

<script language=javascript>
//ouverture fenêtre codes postaux
function popup_cp(lycos,typ, Prenom_tmp, Nom_tmp, Adr1_tmp, Adr2_tmp, Tel_tmp, Port_tmp, Fax_tmp, Email_tmp, Nom_Site_tmp)
{

var prenom = Prenom_tmp;
var nom = Nom_tmp;
var Adr1 = Adr1_tmp;
var Adr2 = Adr2_tmp;
var tel = Tel_tmp;
var port = Port_tmp;
var fax = Fax_tmp;
var email = Email_tmp;
var site = Nom_Site_tmp;
?>;
if (typ == 1)
{
var url = "CP.php?cp="+lycos;
}
else
{
var url = "CP.php?ville="+lycos;
}
code_postal=window.open(url,'code_postal','location=no, scrollbars=yes, status=no, width=300, height=600');
}

</script> 


Tiens moi au courant si ça marche comme ça...
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
21 juil. 2008 à 10:57
Le problème c'est que je fais appel à ma fonction javascript avec :
<INPUT name=CP ondblclick="popup_cp(this.value, 1)" size="5" value="<?php $cp = $_SESSION['CP_tmp']; echo "$cp";?>">

Comment est-ce qu'il faudrait que je m'y prenne?
comment executer la fonction javascript directement via un code php, parce que je pourrais faire un ondblclick="form.'une_variable_hidden'.value = 1"

puis dans le code php ecrire if $_POST['une_variable_hidden'] == 1 {...les instruction php puis l'appel au javascript...}
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
21 juil. 2008 à 10:59
Les valeurs que je passe en SESSION ne me serve que lorsque je reload la page d'appel. Et ne servent à rien dans l'appel javascript ou dans le pop-up....

0

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

Posez votre question
arnogb69 Messages postés 8 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 22 juillet 2008 1
21 juil. 2008 à 11:12
Euh, je n'ai pas tout très bien compris...

En fait, je pense que je viens de voir ton problème. En fait, tu veux qu'au click sur ton bouton, il se passe 2 choses : une modification de ta session, puis un appel à ta fonction JS ?

Pour ça, tu n'as pas des milliers de solutions : il faut que tu externalise ton traitement sur une autre page : par exemple :
page1.php : ta page d information.
Au click, traitement sur ta page de traitement
puis sur cette page tu fais ton traitement php et ensuite ton appel à JS
puis redirection
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
21 juil. 2008 à 11:28
ben je ne me sers pas des variables php en javascript, je cherche juste à les sauvegarder dans des SESSION pour ne pas les perdre quand je reload la page php.
Les valeurs sont dans des POST et j'aimerais les mettre dans des SESSION au moment de l'appel de pop-up(...).
0
arnogb69 Messages postés 8 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 22 juillet 2008 1
21 juil. 2008 à 11:50
ok, donc c'est ce que j'ai dis au dessus (mais j'ai modifié mon message...)

Externalise ton traitement sur une page qui n'aura aucun affichage, mais qui va faire trois choses :
1- enregistrement de tes variables php
2- appel à ta fonction javascript
3- redirection où tu as envie
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
21 juil. 2008 à 12:24
Ok merci, je teste et je te redis si ça a bien marcher.
@+ tard
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
21 juil. 2008 à 15:12
Je n'arrive pas à récupérer mes valeur de POST...J'ai essayer de les sauver avant l'ouverture des actions de java, je ne récupère que des champs vide alors qu'il sont pleins.
Je ne sais pas pourquoi la page plante quand je fais come ceci :

<input type='hidden' name='lancer_popup'>
<input type='image' src='ok.gif' onClick='form.lancer_popup.value=1'>

ou par un <input type=text name='CP' ondblclick='form.lancer_popup.value=1'>

comme pour d'autre image sur lesquelles il y a des onclick avec changement d'un hidden.

ensuite je fait un test pour savoir si l'hidden à changer, et je sauve mes valeur dans des SESSION...
puis j'ouvre un page qui appel les fonctions javascript.

le problème c'est que ça plante dès que je change la valeur de l'hidden..

J'ai aussi essyer de faire un fonction php qui sauve mes valeurs, mais il effectue la fonction, même quand elle n'est pas appelée...

Aurais-tu une idée pour que je puisse retrouver me valeur lorsque la page se reload, stp...

0
arnogb69 Messages postés 8 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 22 juillet 2008 1
21 juil. 2008 à 15:45
En fait, lorsque tu fais un appel à ta fonction Javascript, tu ouvres juste une pop-up, et tu ne recuperes pas le traitement du formulaire...
En clair, tu fais une action c^té client alors que tu souhaiterais aussi passer cote serveur pour recuperer tes données.

Il faudrait que tu crées un bouton pour valider ton formulaire!

A quoi te sert précisement ton javascript? Sert-il uniquement à effectuer une redirection?

Dis moi si je me trompe :
Tu souhaites que ton utilisateur entre ses données dans un formulaire
Puis à sa validation tu enregistres les données dans ta session
Ensuite, ça redirige vers la page initiale avec toutes les valeurs qu'il faut pré entrées?
Enfin, tu peux alors valider le formulaire général

Pourrais mettre l'integralité du code concerné stp
(t'inquiete, on va y arriver avant la fin de la journée ^^)
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
21 juil. 2008 à 16:06
Le javascript ne me sert qu'à ouvrir CP.php dans une nouvelle fenêtre au moment où je doubleclique sur la zone de texte. S'il est possible de faire ça en php, ça serait la solution...

J'ai déjà un bouton de validation pour tout mes champs. ce que je cherchais, c'est de mettre un petit plus, c'est à dire que lorsque l'utilisateur tape le début d'un code postal ou le début d'un ville dans ces champs :

<TR>
<TD>Code Postal</TD>
<td></td>
<TD>
<INPUT name=CP ondblclick="popup_cp(this.value, 1);" size="5" value="<?php $cp = $_SESSION['CP_tmp'];
echo "$cp";?>">
 <img src='info1.gif' alt='bien remplir le code postal en entier'></TD></TR>
<TR>
<TD>Ville</TD>
<td>
<?php if ($_SESSION['pas_bien']=='1')
{
echo "<img src='suppr.gif' width=10 height=10><img src='suppr.gif' width=10 height=10>";
}
?>
</td>
<TD>
<INPUT name=Ville ondblclick="popup_cp(this.value, 2);" size="30" value="<?php $vil = $_SESSION['Ville_tmp'];
echo "$vil";?>">
<font color=#ff0000> * Champs obligatoire</font>
</TD></TR>

Il fallait que ça m'ouvre mon popup avec ma liste.
La liste est faite avec un filtre etc...Le problème c'est que quand je valide mon choix dans la page des codes postaux, pour que ça s'affiche dans le formulaire d'origine, je suis obliger de le reload.

Voici le code qui ouvrait la fenêtre :

//ouverture fenêtre codes postaux
function popup_cp(lycos,typ)
{
if (typ == 1)
{
var url = "CP.php?cp="+lycos;
}
else
{
var url = "CP.php?ville="+lycos;
}
code_postal=window.open(url,'code_postal','location=no, scrollbars=yes, status=no, width=300, height=600');
}

Et voici CP.php :

<?php
//page pour la recherche d'une ville par code postal

session_start();
set_time_limit(0);

include("Config.inc.php");
if ($ressource == false)
{
exit();
}

// Vérification si l'utilisateur s'est bien identifié
if(!isset($_SESSION['Code_Comm']))
{
header("Location: ConnexionProspect.php");
}

if (!isset($_GET['debut_liste']))
{
$debut_liste = 0;
}
else
{
$debut_liste = $_GET['debut_liste'];
}

$Nb_CP = 50;
//recupération données des villes et codes postaux
$sql = "SELECT codes_postaux, villes
FROM postaux";

$CP = $_GET['cp'];
$ville = $_GET['ville'];

//filtre
$sql .= " WHERE codes_postaux LIKE '".$CP."%' AND villes LIKE '".$ville."%'";

$sql .= "ORDER BY codes_postaux LIMIT $debut_liste,$Nb_CP";

$result = mysqli_query ($ressource, $sql);

// Calcul du nombre de ligne total
$sql2= "SELECT COUNT(*) AS nbtotal FROM postaux WHERE codes_postaux LIKE '".$CP."%' AND villes LIKE '".$ville."%'";
$result2 = mysqli_query ($ressource, $sql2);
$arr = mysqli_fetch_assoc($result2);
$nbligne = $arr['nbtotal'];

if ($_POST['identi'] == 1)
{
// Balayage de chaque ligne du tableau pour savoir s'il n'y a qu'une case de cochée
$nb_case_cochee = 0;
for ($n=0; $n<=$Nb_CP; $n++)
{
eval('$tmp_chk = $_POST[\'cpv_'.$n.'\'];');
// Si la checkbox est cochée
if(isset($tmp_chk))
{
$nb_case_cochee++;
$tmp_hid_cp = $_POST['hidden_cp_'.$n.''];
$tmp_hid_vil = $_POST['hidden_vil_'.$n.''];
}
}
if ($nb_case_cochee == 1)
{
$_SESSION['CP_tmp'] = $tmp_hid_cp;
$_SESSION['Ville_tmp'] = $tmp_hid_vil;
}
else
{
$_SESSION['CP_tmp'] = '';
$_SESSION['Ville_tmp'] = '';
}
$_SESSION['cp_recup'] = '1';
}
?>
<html>
<head>
<FORM Method="POST" Action="CP.php">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Liste des villes</title></head>
<body topmargin="0" leftmargin="0" onmousemove='valider()' >

<script language="javascript">
function valider()
{
var valid = <?php $val = $_SESSION['cp_recup']; echo "$val"; ?>;
if (valid != '')
{
<?php $_SESSION['cp_recup'] = ''; ?>;
opener.location.reload(true); //pour recharger la page qui a ouvert le popup (facultatif)
self.close();
}
}
</script>

<table align=center>
<input type='hidden' name='identi'>
<tr><td></td><td align=center><input type='image' name='img_1' src='on.gif' onclick='form.identi.value=1' width=20 height=20>
</td></tr><tr>

</html>

<?php
// Affichage des liens "Précédent" et "Suivant"
IF ($debut_liste > 0)
{
$precedent = $debut_liste - $Nb_CP;
//teste de la ville ou du cp pour conserver les parametres de tri
IF ($CP != '')
{
ECHO "<td width=50 align=center>","<a href='CP.php?cp=$CP&debut_liste=$precedent'><img src='prec.gif' width=20 height=20></a>","</td>";
}
IF ($ville != '')
{
ECHO "<td width=50 align=center>","<a href='CP.php?ville=$ville&debut_liste=$precedent'><img src='prec.gif' width=20 height=20></a>","</td>";
}
IF (($ville == '')&&($CP == ''))
{
ECHO "<td width=50 align=center>","<a href='CP.php?debut_liste=$precedent'><img src='prec.gif' width=20 height=20></a>","</td>";
}
//fin du test
IF ($debut_liste < $nbligne - $Nb_CP)
{
$suivant = $debut_liste + $Nb_CP;
//teste de la ville ou du cp pour conserver les parametres de tri
IF ($CP != '')
{
ECHO "<td></td><td width=50 align=center>","<a href='CP.php?cp=$CP&debut_liste=$suivant'><img src='suiv.gif' width=20 height=20></a>","</td>";
}
IF ($ville != '')
{
ECHO "<td></td><td width=50 align=center>","<a href='CP.php?ville=$ville&debut_liste=$suivant'><img src='suiv.gif' width=20 height=20></a>","</td>";
}
IF (($ville == '')&&($CP == ''))
{
ECHO "<td></td><td width=50 align=center>","<a href='CP.php?debut_liste=$suivant'><img src='suiv.gif' width=20 height=20></a>","</td>";
}
//fin du test
}
ELSE
{
ECHO "<td></td><td width=50 align=center>","<a><img src='suiv.gif' width=20 height=20></a>","</td>";
}
}
ELSE
{
ECHO "<td width=50 align=center>","<a><img src='prec.gif' width=20 height=20></a>","</td>";
IF ($nbligne - $Nb_CP > 0)
{
$suivant = $debut_liste + $Nb_CP;
//teste de la ville ou du cp pour conserver les parametres de tri
IF ($CP != '')
{
ECHO "<td></td><td width=50 align=center>","<a href='CP.php?cp=$CP&debut_liste=$suivant'><img src='suiv.gif' width=20 height=20></a>","</td>";
}
IF ($ville != '')
{
ECHO "<td></td><td width=50 align=center>","<a href='CP.php?ville=$ville&debut_liste=$suivant'><img src='suiv.gif' width=20 height=20></a>","</td>";
}
IF (($ville == '')&&($CP == ''))
{
ECHO "<td></td><td width=50 align=center>","<a href='CP.php?debut_liste=$suivant'><img src='suiv.gif' width=20 height=20></a>","</td>";
}
//fin du test
}
ELSE
{
ECHO "<td></td><td width=50 align=center>","<a><img src='suiv.gif' width=20 height=20></a>","</td>";
}
}

echo '</tr>';
echo '</table>';

echo "<table align=center>";
//Affichage des données
$i=1;
while($tab = mysqli_fetch_assoc($result))
{
if (($i%2)==0)
{
echo '<tr bgcolor=#D1D1D1>';
}
else
{
echo '<tr bgcolor=#ECECEC>';
}
echo '<td align=center valign=center><input type=checkbox name=cpv_'.$i.'><input type="hidden" name="hidden_cp_'.$i.'" value="'.$tab['codes_postaux'].'"><input type="hidden" name="hidden_vil_'.$i.'" value="'.$tab['villes'].'"></td>';
echo '<td><font face=arial size=1>'.$tab['codes_postaux']. '</td></font>';
echo '<td><font face=arial size=1>'.$tab['villes']. '</td></font>';
echo '</tr>';
$i++;
}
echo '</table>';

echo "</form></html>";

?>

Si par contre, il me suffit juste de changer quelques trucs dans CP.php pour que mes valeurs s'affecte dans le formulaire, ce serait mieux...
Je vais partir de mon lieux de stage là, et je ne pourrais pas reprendre le code avant demain matin :s.

Si tu as une solution, je suis partant et je te redis dès que j'aurais testé tout ça...

Avant tout, je tiens à te remercier pour ton aide ;)
@+
0
arnogb69 Messages postés 8 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 22 juillet 2008 1
21 juil. 2008 à 16:52
OK, donc, oui, il existe une autre solution, bien plus simple, est d'utiliser l'ajax, pour te faciliter ton traitement, éviter de recharger ta page.
Pour le code qu'il te faut, va voir sur ce lien, le code est directement intégrable au tien.
https://codes-sources.commentcamarche.net/

Par contre, je te conseil d'éviter les majuscule dans tes ECHO ou IF et ELSE, c'est déprecié par le W3C et ton code n'est pas terrible à cause de cela
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
22 juil. 2008 à 09:55
Le code ne compile pas sous wamp5...(:s) comprends pas...
Il m'écrit ça :

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1530053 bytes) in C:\wamp\www\Gestion_Prospect\Villes\ocity.cls.php on line 26

Et si je prends le code pour toutes villes et non villes_normal, j'ai droit à la même erreur, mais ligne 33...
C'est pas logique...

Mais ça me fais la même que je prends directement son code sans l'intégrer au mien.

0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
22 juil. 2008 à 11:05
Super Merci!!
0
arnogb69 Messages postés 8 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 22 juillet 2008 1
22 juil. 2008 à 11:14
Donc, tout fonctionne?
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
22 juil. 2008 à 11:23
ça fonctionne quand je le mets pas dans mon code :s...
C'est un vrai bordel mon code, parceque ça se mélange avec un truc que j'avais mis sur une autre zone de texte (l'autocomplétion pour des lieux)...

Je vais y arriver...j'ai la semaine pour le finir^^
merci beaucoup pour ton aide ;)
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
22 juil. 2008 à 11:49
Ca me fais tout planter!
c'est super gorre là...je sais pas si c'était pas mieux avec ma technique qui merdait un peu...C'est surement dû au fait que j'y comprends rien du tout...
0
arnogb69 Messages postés 8 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 22 juillet 2008 1
22 juil. 2008 à 13:59
Ahaha,

Un conseil, n'hésite pas à tout recommencer à zéro, maintenant que tu sais parfaitement comment tout faire tourner, ton code sera plus propre...
Reculer pour mieux sauter en gros ^^

Bon courage alors, on n'est que Mardi, c'est cool
0
Fou riant Messages postés 32 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 10 novembre 2009 2
22 juil. 2008 à 14:12
Merci^^

J'ai bien pris note de tes conseils ;)

bye
0