8768 sujets

Développement web côté serveur, CMS

Salut !

J'ai un petit soucis avec un formulaire.
Le formulaire pop après qu'on appuie sur une span (grâce à l'ami Javascript).
Il devrait servir à faire un update sur la base de donnée. Il envoie bien les données sur la page cible mais ça s'arrête là.

Je me suis rendu compte que c'est carrément le submit qui ne fonctionne pas (même si dans le même temps, les données circulent !
Je vous met le code en question. Notez que le tout est contenu dans

    <div class="col-lg-12 text-center bg-danger">
        <h3>Les ingrédients</h3>
<?php
$reponse = $bdd->query("SELECT * 
                        FROM ingredients
                        WHERE id_recette = ".$id_recette."
                        ORDER BY id_ingredient");
while($donnees = $reponse->fetch()){
    $id_ingredient = $donnees['id_ingredient'];
    $_SESSION['id_ingredient_edit'] = $donnees['id_ingredient'];
?>
<div class="ingrid col-12 mb-3">
    <div><?php echo $donnees['qte_ingredient'].' '.$donnees['unite_ingredient'].' '.$donnees['nom_ingredient'] ?></div>
    
    <div>
        <span class="icone" onclick="afficherForm(this)">+</span>
        <input type="hidden" value="<?php echo $id_ingredient ?>">
    </div>
        <form id="<?php echo $id_ingredient ?>-form" class="row dnone mx-auto" action="process/addstep.php" method="POST">
            <input type="hidden" value="<?php echo $id_ingredient ?>">
            
            <div class="col-12 bg-danger">
                <button type="submit">Supprimer</button>
            </div>
            <div class="col-6">
                <label for="qte">Quantité</label>
                <input type="text" class="form-control" id="qte" name="qte_ingredient" required>
            </div>
            <div class="col-6">
                <label for="unite">Unité</label>
                <input type="text" class="form-control" id="unite" name="unite_ingredient">
            </div>
            <div class="col-12">
                <label for="unite">Nom</label>
                <input type="text" class="form-control mb-1" id="unite" name="nom_ingredient" required>
            </div>
            <input type="hidden" name="id_ingredient" value="<?php echo $donnees['id_ingredient'] ?>">
            <div class="col-12">
                <input type="submit" value="editer_ingredient">
            </div>
        </form>

</div>
<?php } ?>



Et du côté de la page cible, j'ai juste mis:


if(isset($_POST['editer_ingredient'])){
    echo "ok";
}else{
    die("un souci");
}


Et c'est bien le die("un souci") qui pop Smiley sweatdrop

Dans le même temps, si je fais mets die("un souci".$POST_['nom_ingredien'], etc..), je constate que les données arrivent bien sur la page cible.

C'est à n'y rien comprendre.

Est-ce que quelqu'un voit d'où pourrait venir le problème ?

Il y a peut être une spécificité de la balise <form> qui m'échappe ?! ^^
Modifié par Pandax (15 Dec 2019 - 11:34)
Modérateur
Et l'eau,

C'est normal ! Où est ce que tu vois un champ avec ce nom : editer_ingredient ?
Cette fonction te sera utile : print_r()
Hey !

Eh bien "editer_ingredient" c'est tout bonnement le bouton submit.
 <input type="submit" value="editer_ingredient">

T'as "nom_", "qte_", "unite_" "id_" et à la fin le submit.

D'après ce que j'ai compris print_r() permet de lire les données d'un array. Bon apperemment c'est grave pratique et cette fonction me sera utile à l'avenir mais t'es sûr que ça concerne mon problème ? Je ne vois pas le rapport Smiley lol

A noter que le formulaire fonctionne nickel en GET mais j'aimerais bien comprendre ce qui ne va pas avec la méthode POST.
Modérateur
Salut,

$_POST[‘editer_ingredient’] représente la valeur du bouton dont l’attribut name est « editer_ingredient ». Dans ton cas, l’attribut est absent.
Meilleure solution