Page 1 sur 2
probleme de sessions entre 2 pages?
Posté : 26 sept. 2005, 10:32
par ruly
bonjour et bon lundi... et oui faut recommencer a taffer et les problemes se posent a nouveaux...
donc petite mise en place :
je fais une application en php pour la gestion de stock d'une "cuisine".
je fais mes nouvelles commandes grace a un formulaire simple.
date,
etc...
mais pour rajouter des articles a cette commande, j'utilise un pop up ou on puet choisir nos articles a rajouter a la commande.
voici mon probleme:
je vois pas comment faire les liens entre la pop up et ma page principale? je suppose qu'il faut que j'utilise des sessions. mais comment dire a ma pop up de renvoyer a mon formulaire les donnees dont j'ai desoin???
est-ce que vous voyez ce que je dois faire???
merci d'avance
Posté : 26 sept. 2005, 10:38
par HD
fais une recherche sur le forum avec les mots cles : page parent (par exemple) en precisant "Rechercher tous les termes"
le sujet a deja ete traité maintes fois
Posté : 26 sept. 2005, 10:39
par ruly
a ok merci
j'ai essaye de chercher mais avec sessions et y'avait pas grande chose qui m'interessait pour les pop up
je vais voir
merci
Posté : 26 sept. 2005, 10:39
par heddicmi
Les variables sessions ne réfléchissent pas s'il y a des pop_up ou non... quand tu valides ton formulaire dans la pop-up, tu créés une ou plusieurs variable sessions te permettant de conserver les choix, puis tu recharges la page "normal" (C'est du javascript... A partir du pop-up, tu y accèdes avec opener.location, un truc dans le genre).... Tu pourras y récupérer les variables sessions...
Et puis, quand à faire, ferme aussi la pop-up automatiquement :p...
Posté : 26 sept. 2005, 11:00
par ruly
donc c'est en javascript que je dois gerer la liaison des 2 fenetres???
encore et tjrs javascript

Posté : 26 sept. 2005, 11:11
par heddicmi
donc c'est en javascript que je dois gerer la liaison des 2 fenetres???
encore et tjrs javascript

Tu est obligé de passer par là...
Posté : 26 sept. 2005, 11:27
par ruly
ok j'ai reussi a faire un passage de l'un vers l'autre
Code : Tout sélectionner
function page_parent()
{
opener.location.href = opener.location;
self.close();
}
mais dans ma session il n'y a plus de variables...
la session existe mais pas les variables...
voicy mon code de pop up:
Code : Tout sélectionner
session_start();
$_SESSION['produit'] = $_GET['produit'];
session_register($_SESSION['produit']);
et mon code javascropt ya juste ce qu'il y a en haut... faut il rajouter qqch pour lui dire de prendre mes variables de sessiones???
Posté : 26 sept. 2005, 11:42
par mere-teresa
Un session_start() devrait suffire
Posté : 26 sept. 2005, 11:46
par ruly
mais dans ma session il faut que j'ai une variable avec l'id du produit, une varibale avec la quantite....
et ca je dois pas les declarer comme $_SESSION['produit'] et $_SESSION['quantite'] ????
Posté : 26 sept. 2005, 12:05
par heddicmi
La ligne session_register n'est pas nécessaire...
Qu'est-ce que tu as si tu fais un echo $_SESSION['produit'] juste après :
$_SESSION['produit'] = $_GET['produit']; ?
Posté : 26 sept. 2005, 12:12
par ruly
La ligne session_register n'est pas nécessaire...
Qu'est-ce que tu as si tu fais un echo $_SESSION['produit'] juste après :
$_SESSION['produit'] = $_GET['produit']; ?
j'ai rien justement...
comme je redirige ma page il n'a pas fait le $_get a mon avis c pour ca que c'est vide.
mais comment le forcer a mettre ma variable $_session['produit'] avec le produit selectionne???
code javascritp:
Code : Tout sélectionner
<script language="javascript">
function page_parent()
{
opener.location.href = opener.location;
self.close();
}
function recherche()
{
with (document.ajout)
{
val=type.options[type.selectedIndex].value;
}
window.location.replace("ajout_article.php?type_produit_id="+val);//chemin= chemin + fichier.php
}
</script>
code php:
<?php
$type_produit_id = ''; if (!empty($_GET['type_produit_id'])) $type_produit_id = $_GET['type_produit_id'];
$produit = ''; if (!empty($_POST['produit'])) $produit = $_POST['produit'];
$quantite = ''; if (!empty($_POST['quantite'])) $quantite = $_POST['quantite'];
$sql_type = "select distinct (type_produit.type_produit_id), type_produit_nom from type_produit, produit where type_produit_actif = 1
and produit.type_produit_id = type_produit.type_produit_id
order by 2";
$req_type = mysql_query($sql_type) or die('Erreur SQL !<br>'.$sql_type.'<br>'.mysql_error());
$cols_type = mysql_num_rows($req_type);
?>
<p> </p>
<form name="ajout" method="post" action="nouveau.php">
<table width="100%" >
<tr>
<td width="30%"><strong>Type d'article </strong></td>
<td width="11%"><strong>Désignation</strong></td>
<td width="59%"><strong>Quantité</strong></td>
</tr>
<tr>
<td><select name="type" onChange="recherche()">
<option value="-1">Choisissez un type d'article</option>
<?php
for ($i=0;$i<$cols_type;$i++) {
$type_id = mysql_result($req_type,$i,0);
$type_nom = mysql_result($req_type,$i,1);
if ($type_produit_id === $type_id) {
echo "<option selected value="$type_id">$type_nom</option>";
}
else {
echo "<option value="$type_id">$type_nom</option>";
}
}
if(isset($_GET['type_produit_id'])) {
//$type_produit_id=$_GET['type_produit_id'];
$sql_produit = "select produit_id, produit_designation from produit where produit_actif = 1
and type_produit_id = '".$type_produit_id."'
order by 2";
$req_produit = mysql_query($sql_produit) or die('Erreur SQL !<br>'.$sql_produit.'<br>'.mysql_error());
$cols_produit = mysql_num_rows($req_produit);
?>
</select></td>
<td><select name="produit">
<option value="-1">Choisissez une désignation</option>
<?php
for ($i=0;$i<$cols_produit;$i++) {
$produit_id = mysql_result($req_produit,$i,0);
$produit_nom = mysql_result($req_produit,$i,1);
if ($produit === $produit_id) {
echo "<option selected value="$produit_id">$produit_nom</option>";
}
else {
echo "<option value="$produit_id">$produit_nom</option>";
}
}
?>
</select></td>
<?php }?>
<td><input type="text" name="quantite" maxlength="10" value="<?php echo $quantite?>"></td>
</tr>
<tr>
<td colspan="2"><div align="right">
<p> </p>
<p>
<input type="submit" name="Submit" value="Ok" onClick="page_parent()">
</p>
</div></td>
<td><p>
</p>
<p>
<input name="" type="button" onClick="window.close()" value="Cancel">
</p></td>
</tr>
</table>
</form>
je vois pas trop comment faire pour mettre ma variable $_session['produit'] avec le produit choisi...

Posté : 26 sept. 2005, 13:13
par heddicmi
Voici le cheminement comme je le conçois...
Tu as ta page principale P1 qui ouvre une pop-up avec la page P2...
Dans P2, tu fais ton formulaire que tu valides et transmets à la page P3...
Dans P3, tu récupères les variables nécessaires du formulaire que tu inserts dans des variables sessions...
Puis tu recharges la page principale P1... Dans celle-ci, tu retrouves alors tes variables de sessions... C'est bien comme ça qque tu fonctionnes ?
Sinon, propose le code, des différentes page en définissant laquele et laquelle...
Posté : 26 sept. 2005, 14:29
par ruly
a ok j'avais pas penser a faire une ppage n°3 pour justement faire la validation du formulaire t mettre mes variables en sessions....
je vais tester comme ca et je te tiens au courant.
merci du conseil

Posté : 26 sept. 2005, 15:16
par ruly
bon un dernier soucy... (enfin j'espere)
voila mes variables de sessions sont bien definit quant je passe a la page n°3...
mais comment puis je faire pour que la fenetre n°3 execute son code et se referme directement pour rafraichir le page n°1 avec les nouvelles donnees??
Posté : 26 sept. 2005, 15:37
par heddicmi
Les données, elles sont dans les variables sessions... Donc accessible n'importe où, pour peu que tu commence ta page par un session_start() :p
Je pense que l'organisation de la dernière page de la pop-up, doit se faire comme ceci :
- code php de création des variables sessions
- début du code html avec dans le BODY onLoad :
-- Ouverture (ou rafraichissement de la page principale (opener))
-- et directement ensuite, la fermeture de la pop-up...
Pour ces 2 --, c'est donc un petit peu de javascript...
dans la page principale qui se recharge, tu mets en place une vérification de l'existence des variables sessions et, si elles existent, tu les utilisent comme bon te semble...