Page 1 sur 1

Ajout ligne dans la bdd selon le nombre de ligne que l'utilisateur choisit

Posté : 06 déc. 2017, 11:22
par erosp
Bonjour à tous,

Je voudrais réaliser un formulaire pour que l'utilisateur puisse remplir une facture.
Sur cette facture je souhaiterais qu'il puisse choisir le nombre de produit.

Par exemple si sur la facture il y a un produit seul avec une référence, il peut la valider.

Mais il faudrait qu'il puisse rajouter autant de produit et de référence qu'il le souhaite, mais c'est là que je bloque.

Je ne sais pas comment procédé.

Est-ce qu'il faut que je fasse mon formulaire en html et que je rajoute les champs avec un bouton en jquery ?

Je ne sais pas trop, je n'ai pas de code pour le moment, donc si vous pourriez m'éclaircir un peu je vous en serais reconnaissant.

Merci à tous.

Re: Ajout ligne dans la bdd selon le nombre de ligne que l'utilisateur choisit

Posté : 06 déc. 2017, 17:34
par @rthur

Re: Ajout ligne dans la bdd selon le nombre de ligne que l'utilisateur choisit

Posté : 07 déc. 2017, 17:46
par erosp
Bonjour,

J'ai donc réaliser un champs avec le même style de bouton.

J'ai vu que les champs name son récupérer en tableau, mais je ne pas comment traiter l'enregistrement en php et sql pour les inserer dans la base de donnée.

Je vais continuer à chercher s'il y a des sujet sur ça.

Merci

Re: Ajout ligne dans la bdd selon le nombre de ligne que l'utilisateur choisit

Posté : 07 déc. 2017, 23:19
par Aureusms
Les champs provenant du formulaire sont récupérés côtés PHP par la variable $_GET ou $_POST en fonction de l'attribut method que tu as mis dans ton formulaire ex. <form action="/action_page.php" method="get">.
Si tu ne met pas l'attribut method, c'est la méthode GET qui est permet l'envoi des données vers ton PHP.

Si tu fais un formalaire :

Code : Tout sélectionner

<form action="/action_page.php" method="get"> <input type="text" name="nomDuClient" value="essai"> <input type="submit" value="envoyer"> </form>
La valeur récupérée dans action_page.php sera dans la supervariable $_GET ie. $_GET["nomDuClient"] dans notre exemple.
C'est la même chose avec $_POST cependant les paramètres ne passe pas par l'URL comme avec la méthode GET mais par un système interne au html.
Attention aussi à l'encodage des caractères. Je crois me rappeler que les données envoyées via formulaire sont encodées en UTF-8 par défaut. C'est surtout utilise pour les accents.

Re: Ajout ligne dans la bdd selon le nombre de ligne que l'utilisateur choisit

Posté : 08 déc. 2017, 14:44
par erosp
Oui, ça je sais le faire mais je ne sais pas récupérer les informations en tableau php.
Comme le champs est <input type="text" name="champs[]" />.
C'est pour récupérer les informations avec array. Il me semble qu'il faut les récupérer avec un foreach.

Merci pour votre aide !

Re: Ajout ligne dans la bdd selon le nombre de ligne que l'utilisateur choisit

Posté : 08 déc. 2017, 15:23
par Spols
si tes champs sont du type
<input type="text" name="champs[]" />

alors tu peux faire un foreach($_POST['champs'] as $key => $value) {
...
}

pourras ainsi récupèrer tes champs une à un via $value et si besoin tu as $key qui t'indique de quelle champs il s'agit (en commencant par 0 )

Re: Ajout ligne dans la bdd selon le nombre de ligne que l'utilisateur choisit

Posté : 08 déc. 2017, 16:35
par erosp
Du coup j'ai fais ça et ça fonctionne :
if(isset($_POST['validForm'])) {
    $id_f_array = $_POST['id_f'];
    $nomArticle_array = $_POST['nomArticle'];
    $refArticle_array = $_POST['refArticle'];
    $prixht_array = $_POST['prixht'];
    $prixttc_array = $_POST['prixttc'];
    $quantite_array = $_POST['quantite'];

    for ($i = 0; $i < count($nomArticle_array); $i++) {

        $id_f = $id_f_array[$i];
        $nomArticle = $nomArticle_array[$i];
        $refArticle = $refArticle_array[$i];
        $prixht = $prixht_array[$i];
        $prixttc = $prixttc_array[$i];
        $quantite = $quantite_array[$i];


        $req = $bdd->prepare('INSERT INTO contenu_facture(id_f, nomArticle, refArticle, prixht, prixttc, quantite) VALUES(:id_f, :nomArticle, :refArticle, :prixht, :prixttc, :quantite)');
        $req->bindValue(':id_f', $id_f);
        $req->bindValue(':nomArticle', $nomArticle);
        $req->bindValue(':refArticle', $refArticle);
        $req->bindValue(':prixht', $prixht);
        $req->bindValue(':prixttc', $prixttc);
        $req->bindValue(':quantite', $quantite);
        $req->execute();
    }
}


?>
Et le formulaire :
<form method="POST">
                id_f<input type="text" name="id_f[]" /><br />
                Nom article<input type="text" name="nomArticle[]" /><br />
                Ref article<input type="text" name="refArticle[]" /><br />
                Prix ht<input type="text" name="prixht[]" /><br />
                Prix ttc<input type="text" name="prixttc[]" /><br />
                Quantité<input type="text" name="quantite[]" /><br /><br />
                
                id_f<input type="text" name="id_f[]" /><br />
                Nom article<input type="text" name="nomArticle[]" /><br />
                Ref article<input type="text" name="refArticle[]" /><br />
                Prix ht<input type="text" name="prixht[]" /><br />
                Prix ttc<input type="text" name="prixttc[]" /><br />
                Quantité<input type="text" name="quantite[]" />

                <input type="submit" name="validForm" value="Valider le formulaire" />

            </form>