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

Eléphanteau du PHP | 20 Messages

06 déc. 2017, 11:22

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.

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7420 Messages

06 déc. 2017, 17:34

Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 20 Messages

07 déc. 2017, 17:46

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

ViPHP
ViPHP | 1983 Messages

07 déc. 2017, 23:19

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.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 20 Messages

08 déc. 2017, 14:44

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 !

Mammouth du PHP | 1324 Messages

08 déc. 2017, 15:23

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 )
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Eléphanteau du PHP | 20 Messages

08 déc. 2017, 16:35

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>