problème php-js

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème php-js

Re: problème php-js

par or 1 » 23 avr. 2024, 09:07

que fait ce code
function openForm(reservation_id) {
document.getElementById("myForm").style.display = "block";
alert(reservation_id);
}
?

je disais : "et le même id que le formulaire"

Re: problème php-js

par dick-perron » 23 avr. 2024, 04:42

J'ai essayé sans succès. Voici où j'en suis.... Toujours incapable de récupérer la valeur de $i dans var_dump. Si j'indexe le nom du myForm, j'ai pas de formulaire qui apparait et si je ne l'indexe pas, j'ai des duplicate entry mais le formulaire fonctionne.... sauf que $i égale toujours 1.
        <!DOCTYPE html>
        <html><head>
            <title>test</title>
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
<?php
    function afficheBouton($i){
        echo "<button onclick='openForm(\"$i\")'>$i</button>";
        $form_name = "myForm"; /// ***********************si je mets "myForm".$i, je n'ai plus d'erreur html, mais le formulaire ne s'affiche plus.
        $form_name_2 = "myForm_2".$i;
        $prenom = "prenom".$i;
        $nom = "nom".$i;
        $nb = "nb".$i;
        ?>
        <div class="form-popup" id="<?php echo $form_name?>">
        <form method="post" action="<?php echo htmlentities($_SERVER["PHP_SELF"]); ?>" class="form-container" id = <?php echo $form_name?>> 
            <input type="text" placeholder="prenom" name="prenom" id="<?php echo $prenom?>">
            <input type="text" placeholder="nom" name="nom" id="<?php echo $nom?>">
            <input type="hidden" name="nb" id="<?php echo $nb?>" value ="<?php echo $i?>">
            <?php    
            echo "<button type='submit' class='btn onclick=saveFormData(\"$i\")' name='submit_verif'>Continuer</button>";
            ?>
            <button type="button" class="btn cancel" onclick="closeForm()">Fermer</button>
         </form>
        </div>
        <script src="script.js"></script>
        <?php  
        }

    if (isset($_POST['submit_verif'])){
        var_dump($_POST);
        // Ici, j'obtiens le prénom et le nom, mais je voudrais obtenir le numéro du bouton sur lequel j'ai appuyé pour l'associer au bon id.
        unset($_POST['submit_verif']);
        exit();
        }

    for ($i = 1; $i <= 5; $i++) {
        afficheBouton($i);
        echo "<br>";
        }


?>

Re: problème php-js

par Saian » 22 avr. 2024, 15:01

Salut, ce que l'on fait généralement pour ce genre de problématique est d'utiliser un input type hidden.

Par exemple sous les 2 input text tu ajoutes un input hidden que tu nommes id et tu mets la valeur de $i dans le value. Tu retrouveras la valeur dans $_POST['id'].

A noter qu'en matière d'id il faut tout de même faire attention selon le contexte car un utilisateur mal attentionné peut modifier la valeur de l'input. Si tu es dans un outil d'administration tu as théoriquement affaire à des utilisateurs qui ne chercheront pas à tromper le système mais si c'est une page publique c'est bien d'avoir à minima un système pour vérifier que l'utilisateur a le droit de modifier la ligne qui correspond à l'id reçu.

Re: problème php-js

par dick-perron » 22 avr. 2024, 14:36

Erreurs corrigées avec le vérificateur... (Très bon outil que je ne connaissais pas!). Plus d'erreur, mais le problème demeure, comment je peux récupérer la variable $i dans mon var_dump?

Code corrigé
        <!DOCTYPE html>
        <html><head>
            <title>test</title>
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
<?php
    function afficheBouton($i){
        echo "<button onclick='openForm(\"$i\")'>$i</button>";
        $form_name = "myForm".$i;
        ?>
        <div class="form-popup" id="myForm">
        <form method="post" action="<?php echo htmlentities($_SERVER["PHP_SELF"]); ?>" class="form-container" id = <?php echo $form_name?>>
            <input type="text" placeholder="prenom" name="prenom" id="prenom">
            <input type="text" placeholder="nom" name="nom" id="nom">
            <?php    
            echo "<button type='submit' class='btn onclick=saveFormData(\"$i\")' name='submit_verif'>Continuer</button>";
            ?>
            <button type="button" class="btn cancel" onclick="closeForm()">Fermer</button>
         </form>
        </div>
        <script src="script.js"></script>
        <?php  
        }

    if (isset($_POST['submit_verif'])){
        var_dump($_POST);
        // Ici, j'obtiens le prénom et le nom, mais je voudrais obtenir le numéro du bouton sur lequel j'ai appuyé pour l'associer au bon id.
        unset($_POST['submit_verif']);
        exit();
        }

    for ($i = 1; $i <= 5; $i++) {
        afficheBouton($i);
        echo "<br>";
        }


?>

Re: problème php-js

par dick-perron » 22 avr. 2024, 13:23

OK j'ai fait un code hors contexte et plus simple que je pourrai utiliser pour solutionner mon réel problème. Alors pour ces scripts, je voudrais, en plus du prénom et du nom, récupérer la variable $i dans le var_dump.

Merci pour l'aide.

Fichier principal
<?php
    function html(){
        ?>
        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
        <?php
        }
    function afficheBouton($i){
        html();
        echo "<button onclick='openForm(\"$i\")'>$i</button>";
        ?>
        <div class="form-popup" id="myForm">
        <form method="post" action="<?php echo htmlentities($_SERVER["PHP_SELF"]); ?>" class="form-container" id = "myForm">
            <input type="text" placeholder="prenom" name="prenom" id="prenom">
            <input type="text" placeholder="nom" name="nom" id="nom">
            <?php    
            echo "<button type='submit' class='btn onclick='saveFormData(\"$i\")' name='submit_verif'>Continuer</button>";
            ?>
            <button type="button" class="btn cancel" onclick="closeForm()">Fermer</button>
         </form>
        </div>
        <script src="script.js"></script>
        <?php  
        }

    if (isset($_POST['submit_verif'])){
        var_dump($_POST);
        // Ici, j'obtiens le prénom et le nom, mais je voudrais obtenir le numéro du bouton sur lequel j'ai appuyé pour l'associer au bon id.
        unset($_POST['submit_verif']);
        exit();
        }

    for ($i = 1; $i <= 5; $i++) {
        afficheBouton($i);
        echo "<br>";
        }


?>
Fichier js
function openForm(i) {
    document.getElementById("myForm").style.display = "block";
    alert(i);
    }

function closeForm() {
  document.getElementById("myForm").style.display = "none";
    }

function saveFormData(i) {
    var prenom = document.getElementById("prenom").value;
    var nom = document.getElementById("nom").value;

    alert(i);
    closeForm();
    }

Re: problème php-js

par @rthur » 22 avr. 2024, 09:14

Bonjour,

Il faut que tu te poses la question de comment ça devrait fonctionner en HTML+JS.
Et ensuite seulement tu rends ça dynamiquement avec du PHP.

Là ton HTML, c'est n'importe quoi donc il faut déjà que tu corriges toutes les erreurs.
Tu peux t'aider du validateur w3c :
https://validator.w3.org/

Re: problème php-js

par dick-perron » 21 avr. 2024, 20:37

Ou si je devrais oublier l'idée d'intégrer le js et m'en tenir à PHP. Y a t-il une autre structure que je pourrais utiliser pour faire ma boucle?

Re: problème php-js

par dick-perron » 21 avr. 2024, 20:35

C'est la première fois que j'intègre du js dans php. Aurait-il fallu indexer dans la boucle de formation des boutons?

Re: problème php-js

par or 1 » 21 avr. 2024, 20:31

une horreur ce code html.

le code génère plusieurs formulaires qui ont tous le même id, plusieurs div qui ont tous le même id, et le même id que le formulaire. le résultat n'est donc pas celui escompté.

Re: problème php-js

par dick-perron » 21 avr. 2024, 20:27

Voilà! Désolé du délai, j'étais parti manger... Merci pour l'aide!!!
        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
                <br>
        <div class = "dossier_client">
        <Bleu_Maj>Voici la liste des passagers pour tous les voyages de la journée du lundi 03 juin.</Bleu_Maj><br></div>        <form method="post" action="/2024/reservations_bateau.php">
        <br><div class = 'dossier_client'>        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
                
        <br><Noir_Maj>0900_EST </Noir_Maj> => <Bleu_Maj>Yockell<br></Bleu_Maj><Rouge_Maj>ALLER </Rouge_Maj><Noir_Maj>(0)</Noir_Maj>
            	<table id= "t_produits"><tr>
		<th>No.</th>
   	    <th>Nom</th>
   	    <th>Téléphone</th>
   	    <th>Produit</th>
   	    <th>Nombre</th>
   	    <th>Billet</th>
   	    <th>Vestes</th>
   	    <th>Sélectionner</th>
		</tr>
        </table>        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
                
        <br><Noir_Maj><Rouge_Maj>RETOUR </Rouge_Maj><Noir_Maj>(0)</Noir_Maj>
            	<table id= "t_produits"><tr>
		<th>No.</th>
   	    <th>Nom</th>
   	    <th>Téléphone</th>
   	    <th>Produit</th>
   	    <th>Nombre</th>
   	    <th>Billet</th>
   	    <th>Vestes</th>
   	    <th>Sélectionner</th>
		</tr>
        </table>            <p class = 'center'>
            <input type="submit" name="submit_valider" value="Valider" />
            <input type="submit" name="submit_dossier" value="Dossier du client" />
            </p></form>
            </div><br><div class = 'dossier_client'>        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
                
        <br><Noir_Maj>1030_OUEST (DÉB) </Noir_Maj> => <Bleu_Maj>Yockell<br></Bleu_Maj><Rouge_Maj>ALLER </Rouge_Maj><Noir_Maj>(4)</Noir_Maj>
            	<table id= "t_produits"><tr>
		<th>No.</th>
   	    <th>Nom</th>
   	    <th>Téléphone</th>
   	    <th>Produit</th>
   	    <th>Nombre</th>
   	    <th>Billet</th>
   	    <th>Vestes</th>
   	    <th>Sélectionner</th>
		</tr>
                <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
        <tr><td class = 'no'>271</td><td>Doe, John</td><td>(XXX) XXX-XXXX</td><td>C_Jomphe (10h30)</td><td>2</td><td></td><td></td><td><div>271<button onclick='openForm("271")'>271</button>        <div class="form-popup" id="myForm">
        <form method="post" action="/2024/reservations_bateau.php" class="form-container" id = "myForm">
            <h2>Veuillez entrer le nombre de vestes de chaque catégorie</h2>
            <input type="number" placeholder="Nombre de XXXL" name="xxxl" id="xxxl">
            <input type="number" placeholder="Nombre de XXL" name="xxl" id="xxl">
            <input type="number" placeholder="Nombre de XL" name="xl" id="xl">
            <input type="number" placeholder="Nombre de L" name="l" id="l">
            <input type="number" placeholder="Nombre de M" name="m" id="m">
            <input type="number" placeholder="Nombre de S" name="s" id="s">
            <input type="number" placeholder="Nombre de E2030" name="e2030" id="e2030">
            <input type="number" placeholder="Nombre de E3060" name="e3060" id="e3060">
            <input type="number" placeholder="Nombre de E6090" name="e6090" id="e6090">
            <input type='number' name='res' id='res' value = 271><button type='submit' class='btn onclick='saveFormData("271")' name='submit_vestes'>Continuer</button>            <button type="button" class="btn cancel" onclick="closeForm()">Fermer</button>
         </form>
        </div>
        <script src="script.js"></script>
        </div></td>        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
        <tr><td class = 'no'>272</td><td>DOE, JOHN</td><td>(XXX) XXX-XXXX</td><td>C_Jomphe (10h30)</td><td>2</td><td></td><td></td><td><div>272<button onclick='openForm("272")'>272</button>        <div class="form-popup" id="myForm">
        <form method="post" action="/2024/reservations_bateau.php" class="form-container" id = "myForm">
            <h2>Veuillez entrer le nombre de vestes de chaque catégorie</h2>
            <input type="number" placeholder="Nombre de XXXL" name="xxxl" id="xxxl">
            <input type="number" placeholder="Nombre de XXL" name="xxl" id="xxl">
            <input type="number" placeholder="Nombre de XL" name="xl" id="xl">
            <input type="number" placeholder="Nombre de L" name="l" id="l">
            <input type="number" placeholder="Nombre de M" name="m" id="m">
            <input type="number" placeholder="Nombre de S" name="s" id="s">
            <input type="number" placeholder="Nombre de E2030" name="e2030" id="e2030">
            <input type="number" placeholder="Nombre de E3060" name="e3060" id="e3060">
            <input type="number" placeholder="Nombre de E6090" name="e6090" id="e6090">
            <input type='number' name='res' id='res' value = 272><button type='submit' class='btn onclick='saveFormData("272")' name='submit_vestes'>Continuer</button>            <button type="button" class="btn cancel" onclick="closeForm()">Fermer</button>
         </form>
        </div>
        <script src="script.js"></script>
        </div></td></table>        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
                
        <br><Noir_Maj><Rouge_Maj>RETOUR </Rouge_Maj><Noir_Maj>(0)</Noir_Maj>
            	<table id= "t_produits"><tr>
		<th>No.</th>
   	    <th>Nom</th>
   	    <th>Téléphone</th>
   	    <th>Produit</th>
   	    <th>Nombre</th>
   	    <th>Billet</th>
   	    <th>Vestes</th>
   	    <th>Sélectionner</th>
		</tr>
        </table>            <p class = 'center'>
            <input type="submit" name="submit_valider" value="Valider" />
            <input type="submit" name="submit_dossier" value="Dossier du client" />
            </p></form>
            </div><br><div class = 'dossier_client'>        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
                
        <br><Noir_Maj>1500_EST </Noir_Maj> => <Bleu_Maj>Yockell<br></Bleu_Maj><Rouge_Maj>ALLER </Rouge_Maj><Noir_Maj>(0)</Noir_Maj>
            	<table id= "t_produits"><tr>
		<th>No.</th>
   	    <th>Nom</th>
   	    <th>Téléphone</th>
   	    <th>Produit</th>
   	    <th>Nombre</th>
   	    <th>Billet</th>
   	    <th>Vestes</th>
   	    <th>Sélectionner</th>
		</tr>
        </table>        <!DOCTYPE html>
        <html><head>
        <link rel="stylesheet" type="text/css" href="styles.css">
        <link rel="stylesheet" type="text/css" href="tableaux.css">
        <link rel="stylesheet" type="text/css" href="java.css">
        </head>
        <body>
                
        <br><Noir_Maj><Rouge_Maj>RETOUR </Rouge_Maj><Noir_Maj>(0)</Noir_Maj>
            	<table id= "t_produits"><tr>
		<th>No.</th>
   	    <th>Nom</th>
   	    <th>Téléphone</th>
   	    <th>Produit</th>
   	    <th>Nombre</th>
   	    <th>Billet</th>
   	    <th>Vestes</th>
   	    <th>Sélectionner</th>
		</tr>
        </table>            <p class = 'center'>
            <input type="submit" name="submit_valider" value="Valider" />
            <input type="submit" name="submit_dossier" value="Dossier du client" />
            </p></form>
            </div>            <p class = 'center'>
            <input type="submit" name="submit_retour" value="Rechercher une autre date" />
            </p></form>
        

Re: problème php-js

par or 1 » 21 avr. 2024, 19:13

on peut avoir le html entier généré par tout le code php ?
pour voir si le code génère plusieurs formulaires qui ont tous le même id, plusieurs div qui ont tous le même id, et le même id que le formulaire.

Re: problème php-js

par dick-perron » 21 avr. 2024, 19:06

Il donne le id de la première ligne du tableau... par exemple si l'ID1 est 30, l'ID2 est 50 et l'ID3 est 67, il retourne 30, même si je clique sur le troisième bouton.

Re: problème php-js

par or 1 » 21 avr. 2024, 19:00

quel est le code html généré par cette ligne
echo "<input type='number' name='res' id='res' value = $reservation_id>";
?

que vaut $_POST['res'] une fois le formulaire soumis ?

problème php-js

par dick-perron » 21 avr. 2024, 18:52

Bonjour,

J'ai un tableau php avec un bouton js à la fin de chaque ligne qui appelle un formulaire js. Quand je clique sur le bouton, le formulaire s'affiche, je reçois les réponses du formulaire sans problème, mais toute les réponses obtenues sont associées à l'ID de la première ligne du tableau. J'ai essayé de passer la valeur de l'ID de la ligne dans le formulaire et de la faire afficher avec un alert et c'est le bon ID qui apparait, j'arrive juste pas à récupérer cet ID pour aller enregistrer les réponses en les associant au bon ID.

Voici le code des fichiers....

PHP
    function afficheBoutonVestes($reservation_id, $n){
        echo "<button onclick='openForm(\"$reservation_id\")'>$reservation_id</button>";
        ?>
        <div class="form-popup" id="myForm">
        <form method="post" action="<?php echo htmlentities($_SERVER["PHP_SELF"]); ?>" class="form-container" id = "myForm">
            <h2>Veuillez entrer le nombre de vestes de chaque catégorie</h2>
            <input type="number" placeholder="Nombre de XXXL" name="xxxl" id="xxxl">
            <input type="number" placeholder="Nombre de XXL" name="xxl" id="xxl">
            <input type="number" placeholder="Nombre de XL" name="xl" id="xl">
            <input type="number" placeholder="Nombre de L" name="l" id="l">
            <input type="number" placeholder="Nombre de M" name="m" id="m">
            <input type="number" placeholder="Nombre de S" name="s" id="s">
            <input type="number" placeholder="Nombre de E2030" name="e2030" id="e2030">
            <input type="number" placeholder="Nombre de E3060" name="e3060" id="e3060">
            <input type="number" placeholder="Nombre de E6090" name="e6090" id="e6090">
            <?php    
            echo "<input type='number' name='res' id='res' value = $reservation_id>";
            echo "<button type='submit' class='btn onclick='saveFormData(\"$reservation_id\")' name='submit_vestes'>Continuer</button>";
            ?>
            <button type="button" class="btn cancel" onclick="closeForm()">Fermer</button>
         </form>
        </div>
        <script src="script.js"></script>
        <?php  
    }
JS
function openForm(reservation_id) {
    document.getElementById("myForm").style.display = "block";
    alert(reservation_id);
    }

function closeForm() {
  document.getElementById("myForm").style.display = "none";
    }

function saveFormData(reservation_id) {
    // Récupérer les valeurs des champs de formulaire
    var xxxl = document.getElementById("xxxl").value;
    var xxl = document.getElementById("xxl").value;
    var xl = document.getElementById("xl").value;
    var l = document.getElementById("l").value;
    var m = document.getElementById("m").value;
    var s = document.getElementById("s").value;
    var e2030 = document.getElementById("e2030").value;
    var e3060 = document.getElementById("e3060").value;
    var e6090 = document.getElementById("e6090").value;
    var res = document.getElementById("res").value;
    //alert(reservation_id);
    // Fermer le formulaire
    closeForm();
    }
Quelqu'un a une idée de comment je pourrais récupérer la bonne valeur de $reservation_id?