[RESOLU] problème de récupération de variable d'un input

Petit nouveau ! | 5 Messages

24 avr. 2024, 19:15

Je dois créer un site internet pour la prise de rendez-vous médicaux, au moment de prendre rendez-vous on choisit un médecin. Pour retenir l'identifiant de ce médecin je l'ai mis dans un input type="hidden" name="idmedi"
J'ai ensuite récupéré la valeur avec un $idmedi=$_POST['idmedi'] et ça fonctionne une première fois mais si je veux le réutiliser après ça ne fonctionne plus et ça me mets que la variable $idmedi n'est pas définit.
D'où vient le problème ?
Merci d'avance

Avatar du membre
Mammouth du PHP | 1609 Messages

24 avr. 2024, 19:18

Salut, qu'entends tu par la réutiliser après ?
Développeur web depuis + de 20 ans

Mammouth du PHP | 2703 Messages

24 avr. 2024, 19:19

il faut mettre ce champ caché dans chaque formulaire si vous voulez récupérer la donnée sur toutes les pages.
un autre moyen est les sessions.

Petit nouveau ! | 5 Messages

24 avr. 2024, 19:57

Salut, qu'entends tu par la réutiliser après ?
La reprendre pour pouvoir l'utiliser des des requêtes mais dans d'autres pages du site web

Petit nouveau ! | 5 Messages

24 avr. 2024, 20:03

il faut mettre ce champ caché dans chaque formulaire si vous voulez récupérer la donnée sur toutes les pages.
un autre moyen est les sessions.
Mais dans ce cas pourquoi j'ai pu l'utiliser une première fois sans remettre l'input hidden ?

Voici comment est structuré mon code
else if(isset($_POST['rrdv'])){
                      
                        $ids = $_POST['chspecialite'];
                        $requete = "SELECT idmed, nommedecin, libelle FROM medecin NATURAL JOIN specialite WHERE idspecialite = $ids";
                        $resultat = $connexion->query($requete);
                        $resultat->setFetchMode(PDO::FETCH_OBJ);
                            
                        $spe = "";
                        if($medecin = $resultat->fetch()) {
                            $spe = $medecin->libelle;
                        }
                        echo '<div class="titre"> <p>Prendre rendez-vous avec un '.$medecin->libelle.'</p></div>';
                            
                        echo '<ul> <table class="tablo">';
                        $resultat->execute(); 
                        while ($medecin = $resultat->fetch()) {
                            echo '<form action="site.php" method="post"><fieldset>';
                            echo '<input type="hidden" name="idmedi" value="'.$medecin->idmed.'"/><input type="text" name="nom" value="'.$medecin->nommedecin.'"readonly/><input type="submit" name="rdv" value="Prendre rendez-vous"/>';
                            echo '</fieldset></form>';
                        }
                        echo '</ul></table>';
                    
                    }
Donc à cet endroit j'ai caché la valeur
 else if(isset($_POST['rdv'])){
                       
                        $object = new DateTime();
                        $object->modify('monday this week');
                        $date1 = $object->format("Y-m-d");

                        $newDate = new DateTime($date1);
                        $newDate->add(new DateInterval('P6D'));
                        $date7=$newDate ->format("Y-m-d");

                        $newDate = new DateTime($date1);                            
                        $newDate->add(new DateInterval('P1D'));
                        $date2=$newDate ->format("Y-m-d");

                        $newDate = new DateTime($date1);
                        $newDate->add(new DateInterval('P2D'));
                        $date3=$newDate ->format("Y-m-d");
                        
                        $newDate = new DateTime($date1);
                        $newDate->add(new DateInterval('P3D'));
                        $date4=$newDate ->format("Y-m-d");

                        $newDate = new DateTime($date1);
                        $newDate->add(new DateInterval('P4D'));
                        $date5=$newDate ->format("Y-m-d");

                        $newDate = new DateTime($date1);
                        $newDate->add(new DateInterval('P5D'));
                        $date6=$newDate ->format("Y-m-d");

                        
                        echo '<form action="site.php" method="post">';
                        echo '<div class="titre">Semaine du '.$date1.' au '.$date7.'</div>';
                            
                        echo '<table class="tablo" border="1">';
                        echo '<caption>Prendre rendez-vous avec le docteur '.$_POST['nom'].'</caption>';
                        echo '<tr><th>Heure</th><th>Lundi</th><th>Mardi</th><th>Mercredi</th><th>Jeudi</th><th>Vendredi</th><th>Samedi</th></tr>';
                            
                        $idmedi = $_POST['idmedi'];
                            
                        for($i = 8; $i <= 18; $i++){
                            echo '<tr>';
                            echo '<td>'.$i.':00</td>';

                            $joursSemaine = array($date1, $date2, $date3, $date4, $date5, $date6);
                            foreach ($joursSemaine as $jour) {

                                $requete="SELECT * FROM rdv WHERE heure = $i AND date='$jour' AND idmed = $idmedi";
                                $resultat=$connexion->query($requete);
                                $ligne=$resultat->fetch(PDO::FETCH_ASSOC);
                                    
                                echo '<td>';
                                if(($ligne!==false)) {
                                    echo 'Occupé';
                                } else {
                                    echo '<input type="submit" value="Prendre rendez-vous" name="prendrerdv"/>';
                                }
                                echo '</td>';      
                            }
                            echo '</tr>';

                        }
                        echo '</table></form>';
                            
                        $resultat->closeCursor();
                        
                    }
Ensuite je l'ai utilisé dans une autre page
 else if (isset($_POST['valider']) && !empty($_POST['nss'])){
                        
                        
                        
                        $nss=$_POST['nss'];
                        $requete="INSERT INTO rdv VALUES ('', '$nss',$idmedi,'$jour',$i)";
                        $resultat=$connexion->query($requete);
                        $resultat->setFetchMode(PDO::FETCH_OBJ);

                        echo'<div class="reponse">Le rendez-vous a été validé.</div>';
                       
                        
                        $resultat->closeCursor(); 
                
                    }   
Et c'est dans cette partie là que ça me mets que la variable $idmedi n'est pas défini

Mammouth du PHP | 2703 Messages

24 avr. 2024, 20:12

si php ne passe pas dans un if où il y a
$idmedi = $_POST['idmedi'];
la variable n'est pas définie.

Petit nouveau ! | 5 Messages

24 avr. 2024, 20:15

Ma balise php est ouverte sur tout mon document donc normalement php passe dans tous mes if

Mammouth du PHP | 2703 Messages

24 avr. 2024, 20:20

ça passe à l'intérieur du if si la condition est remplie.

if(0){
$var1 = 1;
}
else{
$var2 = 1;
}
var_dump($var1, $var2);

Petit nouveau ! | 5 Messages

24 avr. 2024, 20:35

Donc tu veux dire que comme les $idmedi ne sont pas dans les mêmes if , ils ne sont plus pris en compte par php ? Si oui, est-ce que je dois remettre $idmedi=$_POST['idmedi'] à chaque fois que je veux l'utiliser ?