Partage
  • Partager sur Facebook
  • Partager sur Twitter

Recuperation d'info méthode get

    14 mai 2019 à 10:34:38

    Yop ! Salut, j'ai besoin d'aide pour un mon site html, je vous explique j'ai un tableau dans lequel je rentre des infos (a l’occurrence des nom de medocs etc..). Je dois utiliser la method Get (plus simple pour récupéré les infos du site sur un Arduino après). Du coup voilà le html :
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <link rel="stylesheet" href="screen.css" />
    <title>Nurse Assistant's Screen</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
    </style>
    </head>
    <body>
    
    <div class="sidenav">
       <a href="Index.php">Accueil</a>
      <a href="Affichage.php">Affichage</a>
      <a href="Patient1.php">Patient 1</a>
      <a href="Patient2.php">Patient 2</a>
      <a href="Patient3.php">Patient 3</a>
      <a href="Patient4.php">Patient 4</a>
      
    </div>
    
    <div class="content">
      <h2>Ordonnance</h2>
      <p>Oui je suis l'ordonnance du patient 1 bonsoir.</p>
    
      
      <img src="ordonnance type1.png" alt="Ordonance1" id="ordonnance1"/>
      <?php
              echo 'Bonjour ' . htmlspecialchars($_GET["Designation"]) . '!';
         ?>
    <html>
    	<head>
    	
    
    		<script type="text/javascript">
    
    			var i = 0;
    
    			function addKid()
    			{
    				if (i < 5)
    				{
    					var newRow = document.createElement('tr');
    
    					newRow.innerHTML = '<td> <input type="text" name="Designation_'+i+'" ><td> <input type="text" name="Serie_'+i+'" ></td><td><input type="text" name="Quantite_'+i+'" ></td><td><input type="button" id="add_kid()" onClick="addKid()" value="+" /><input type="button" value="-" onclick="removeKid(this.parentNode)"></td>';
    
    					document.getElementById('kids').appendChild(newRow);
    					i++;
    				}
    			}
    
    			function removeKid(element)
    			{
    				document.getElementById('kids').removeChild(element.parentNode);
    				i--;
    			}
    
    		</script>
    	</head>
    	<body>
    	<?php
              echo 'Bonjour ' . htmlspecialchars($_GET["Designation"]) . '!';
         ?>
    	<form action="Patient1.php" method="get">
    		<table border="1" id="kids">
    			<tr>
    				<th>Médicament</th>
    				<th>Heure de prise</th>
    				<th>Quantité</th>
    			</tr>
    			<tbody  >
    				<tr >
    					<td  >
    						<input type="text" name="Designation">
    					</td>
    					<td>
    						<input type="text" name="Serie">
    					</td>
    					<td>
    						<input type="text" name="Quantite">
    					</td>
    					<td>
    						<input type="button" id="add_kid()" onClick="addKid()" value="+" />
    					</td>
    				</tr>
    			</tbody>
    		</table>
    		<input type = "submit" value = "Envoyer">
    		</form>
            
    		</body>
    		
    		
    		
    </html>
    
    
    </body>
    </div>

    Comme vous pouvez le voir j'ai essayeé avec le PHP de recup les infos mais malheureusement ça ne marche pas :/

    Si vous avez des solutions, je suis preneur ! Merci ! :)

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2019 à 13:16:24

      Bonjour,

      D'où provient ton paramètre Désignation ?

      GET est une méthode qui permet de passer des paramètres d'une page à une autre via l'URL, or ici nous n'avons pas le contexte de la page qui appelle ton script.

      • Partager sur Facebook
      • Partager sur Twitter
        17 mai 2019 à 9:55:33

        Le paramètre Désignation vient du tableau :

        "

        <td  >
        						<input type="text" name="Designation">
        					</td>

         "

        • Partager sur Facebook
        • Partager sur Twitter
          17 mai 2019 à 11:09:02

          Ok, donc de ce que je comprends de ton code, il y a deux petits problèmes.

          - Tout d'abord cette ligne de code te renverra systématiquement une erreur

            <?php
                    echo 'Bonjour ' . htmlspecialchars($_GET["Designation"]) . '!';
               ?>

          Pourquoi ? Parce que quand tu arrives sur ta page, ta variable GET ne contient pas encore de paramètre Designation, puisque tu la SET depuis ton tableau.

          - Ensuite, tu es confronté à un problème à cause de la méthode GET. En effet, ta page autorise la création de plusieurs médicaments. Or, la méthode GET n'est pas très adaptée pour passer un tableau. Ce que tu as fait paraît pas mal, tu as crée des paramètres Designation incrementés. Quand tu clique sur AddKid, tu crées donc Designation_0, Designation_1...

          Tu auras donc une URL pas très jolie et potentiellement longue, mais ça devrait fonctionner.

          Maintenant, le petit soucis que tu vas rencontrer, c'est dans les pages Patients_1, patients_2, etc.., tu ne peux pas juste récupérer la variable

          $_GET['Designation']

          mais si l'utilisateur à créé plusieurs médicaments, tu dois aussi récupérer

          $_GET[Designation_0]
          $_GET[Designation_1]
          ...

          Du coup, le premier conseil que je te donnerai, c'est de renommer ton premier input Designation en Designation_0.

          Cela veux dire que ta fonction AddKid doit commencer à créer des enfants à partir du 1 et non plus du 0.

          Ensuite, pour récupérer les infos de l'autre côté, une simple boucle PHP devrait suffire.

          J'espère que ça aura pu t'aider un peu, sinon, je n'ai peut-être pas bien compris ton besoin.

          • Partager sur Facebook
          • Partager sur Twitter
            20 mai 2019 à 8:25:13

            Je te remercie c'est exactement ce que je voulais savoir, j'vai essayer ça et voir pour la boucle php ! Bonne journée
            • Partager sur Facebook
            • Partager sur Twitter
              20 mai 2019 à 10:40:33

              Parfait si cela répond à ton besoin !

              Juste au passage, un truc que je n'avais pas vu mais dans ton code il y a une très grosse erreur : on a l'impression que tu as essayé d'inclure une page html dans une autre car en dessous de ton echo (ligne 52 je crois) tu as une page <html> ouverte et que tu ne refermes jamais. Ou alors c'est la première que tu ne refermes jamais mais il y en a au moins une des deux qui n'est pas fermée.

              Pour rappel, pour inclure une page php dans une autre, tu dois utiliser la fonction include :

              <?php include("NomDeTaPage.php"); ?>

              Si c'est une page HTML, tournes toi vers les iframe mais tu dois corriger cela pour avoir un code bien propre ;)

              • Partager sur Facebook
              • Partager sur Twitter
                24 mai 2019 à 8:15:00

                Bon j'ai  redefini les valeurs et changer un poil de code ! :


                DOCTYPE html>
                <html lang="fr">
                <head>
                <link rel="stylesheet" href="screen.css" />
                <title>Nurse Assistant's Screen</title>
                <meta charset="utf-8">
                <meta name="viewport" content="width=device-width, initial-scale=1">
                <style>
                </style>
                </head>
                <body>
                
                <div class="sidenav">
                   <a href="Index.php">Accueil</a>
                  <a href="Affichage.php">Affichage</a>
                  <a href="Patient1.php">Patient 1</a>
                  <a href="Patient2.php">Patient 2</a>
                  <a href="Patient3.php">Patient 3</a>
                  <a href="Patient4.php">Patient 4</a>
                  
                </div>
                
                <div class="content">
                  <h2>Ordonnance</h2>
                  <p>Oui je suis l'ordonnance du patient 1 bonsoir.</p>
                
                  
                  <img src="ordonnance type1.png" alt="Ordonance1" id="ordonnance1"/>
                  
                
                	
                	
                	
                
                		<script type="text/javascript">
                
                			var i = 1;
                
                			function addKid()
                			{
                				if (i < 10)
                				{
                					var newRow = document.createElement('tr');
                
                					newRow.innerHTML = '<td> <input type="text" name="Designation_0'+i+'" ><td> <input type="text" name="Serie_0'+i+'" ></td><td><input type="text" name="Quantite_0'+i+'" ></td><td><input type="button" id="add_kid()" onClick="addKid()" value="+" /><input type="button" value="-" onclick="removeKid(this.parentNode)"></td>';
                
                					document.getElementById('kids').appendChild(newRow);
                					i++;
                				}
                			}
                
                			function removeKid(element)
                			{
                				document.getElementById('kids').removeChild(element.parentNode);
                				i--;
                			}
                
                		</script>
                	
                	
                	<form action="Patient1.php" method="get">
                		<table border="1" id="kids">
                			<tr>
                				<th>Médicament</th>
                				<th>Heure de prise</th>
                				<th>Quantité</th>
                			</tr>
                			<tbody  >
                				<tr >
                					<td  >
                						<input type="text" name="Designation_0" value = "" >
                					</td>
                					<td>
                						<input type="text" name="Serie_0" value = "">
                					</td>
                					<td>
                						<input type="text" name="Quantite_0" value = "">
                					</td>
                					<td>
                						<input type="button" id="add_kid()" onClick="addKid()" value="+" />
                					</td>
                				</tr>
                			</tbody>
                		</table>
                		<input type = "submit" value = "Envoyer">
                		</form>
                        
                		<?php
                		
                		  echo  $_GET["Designation_0"] . ' '  . $_GET["Serie_0"] . ' ' . $_GET["Quantite_0"] . ' ' . $_GET["Serie_01"] . ' '  . $_GET["Designation_01"] . ' ' . $_GET["Quantite_01"] ; 
                		 
                		  ?>
                		</body>
                		
                		
                		
                </html>
                





                Maintenant j'ai ce problème, le site m'affiche des erreurs ph a l'ouverture de la page :

                Je pense que ça vient de la methode GET, mais je ne sais pas comment régler ce problème, si jamais tu sais je suis preneur.

                • Partager sur Facebook
                • Partager sur Twitter
                  24 mai 2019 à 12:13:56

                  C'est totalement normal, quand tu affiches ta page, tes paramètres $_GET["Designation_0"], $_GET["Serie_0"], etc... n'existent pas encore.

                  Pour éviter cette erreur et n'afficher ces paramètres que quand ils existent, tu dois conditionner leur apparition.

                  Par exemple :

                  var $designation0 = isset($_GET["Designation_0"]) ?  $_GET["Designation_0"] : ""
                  
                  echo  $designation0;

                  A adapter pour chaque paramètre bien sur.

                  En gros, tu créés une variable, que tu valorises à vide si ton paramètre GET n'existe pas (ce qui est le cas à l'ouverture), et si il existe, tu donnes à ta variable la valeur de ton paramètre.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 mai 2019 à 9:13:57

                    Merci pour ces infos ça m'aidera pas mal ;)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Recuperation d'info méthode get

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown