8768 sujets

Développement web côté serveur, CMS

bonjour à tous ,

je vous explique mon problème :

je creer un un site qui permettra à des developpeur de produit de consulter des fiches qui leurs sont propre .

le dev se connecte et est rediriger sur page avec un menu deroulant qui affiche les références des produits qui sont attribué au dev.

sur la partie produit j'ai besoin d'afficher 3 choses :

une partie haut de page qui regroupe nom, marque , etc qui ne bougera pas et qui est non modifiable par le dev

une partie basse qui par défaut affiche la page test via produit_essai.php?page=test
<?php
if ($_GET['page'] == "test")
{
include("test.php");
}
if ($_GET['page'] == "test2")
{
include("test2".$_POST["produit"].".php");
}
?>


cela fonctionne parfaitement .
le probleme c est que je souhaiterais via un bouton acceder en restant sur la même page a la page test2 qui remplacerai la page test via produit.php?page=test2

et la rien ne s'affiche , j'ai perdu les variables que j'avais sur la page test .

je vous mets les partie de code sachant bien sur que je suis en test et j'ai simplifier mes pages pour voir d'ou vient le problème , esperant avoir été clair dans mes propos .

d'avance merci
produit_essai.php
<?php
session_start()
?>
<?php
$VALEUR_hote='';
$VALEUR_nom_bd='';
$VALEUR_user='';
$VALEUR_mot_de_passe='';
$connexion = new PDO('mysql:host='.$VALEUR_hote.';dbname='.$VALEUR_nom_bd, $VALEUR_user, $VALEUR_mot_de_passe);
?>
<?php
$resultats=$connexion->query("SELECT * FROM users WHERE login ='" . $_SESSION['login'] . "'");
$resultats->setFetchMode(PDO::FETCH_OBJ);
while( $result = $resultats->fetch() )
{
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans titre</title>
</head>

<body>
<div id="recherche_produit">
  <label>Produit</label>
  <form action="produit_essai.php?page=test" method="post">
   <select name="produit" >
    
    <?php
	$id_login = ($result->id_login);
    $resultats=$connexion->query("SELECT * FROM Produit WHERE id_login = '" . $id_login . "'");
$resultats->setFetchMode(PDO::FETCH_OBJ);
while( $result = $resultats->fetch() )
{
	echo '<option>'.$result->ref_client.'</option><br/>';
}
$resultats->closeCursor();
?>
        
   </select>  
   <input type="submit" name="ok" id="ok" value="Sélectionner" />
   </form>
   </div>
<?php
$produit    = $_POST["produit"] ;
$produit    = addslashes( $produit ) ;


$resultats=$connexion->query("SELECT * FROM Produit WHERE ref_client = '".$produit."'");
$resultats->setFetchMode(PDO::FETCH_OBJ);
while( $result = $resultats->fetch() )
{
?> 
<?php
if ($_GET['page'] == "test")
{
include("test.php");
}
if ($_GET['page'] == "test2")
{
include("test2".$_POST["produit"].".php");
}
?>
</body>
</html>
<?php
}
$resultats->closeCursor();
?>
<?php
}
$resultats->closeCursor();
?>


test.php
<?php
session_start()
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans titre</title>
</head>

<body>
<h1>Fiche produit 1<?php echo ($result->ref_client);?> <?php echo ($result->nom_origine);?></h1>

<a href="produit_essai.php?page=test2">fiche 2</a>
</body>
</html>


test2.php
<?php
session_start()
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans titre</title>
</head>

<body>

<h1>Fiche produit 2<?php echo ($result->ref_client);?> <?php echo ($result->nom_origine);?></h1>

<a href="produit_essai.php?page=test">fiche 1</a>
</body>
</html>
Salut anti91,
le principal souci c'est que lorsque tu clic sur tes liens dans les pages test.php et test2.php tu ne transmet que "page" via $_GET, ta référence de produit n'est pas transmise!

Quand tu clic sur "sélectionner" tu transmet "page" via $_GET l'url dans l'action (action="produit_essai.php?page=test") et tu transmet le code produit via $_POST (method="post") et donc là le code de ta page produit_essai.php se déroule comme tu veux!

Pour remédier à ce problème en gardant ta logique :
- déclare ta form avec la method 'GET'
- rajoute un "<input type="hidden" name="page" value="test" />" pour transmettre ta page -
- et pose action="produit_essai.php"
- modifie les ancres pour ajouter ta référence de produit:
<a href="produit_essai.php?page=test2<?php echo "&produit=".$_GET['produit'];?>">fiche 2</a>


dans le reste du code va chercher ta référence de produit dans $_GET et non plus dans $_POST....


<form action="produit_essai.php" method="get">
<select name="produit" >
....
</select>
      <input type="hidden" name="page" value="test" />
   <input type="submit" name="ok" id="ok" value="Sélectionner" />
   </form>


bonne continuation
Modifié par GJboba (20 Apr 2017 - 10:06)