IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Soucis en PHP [Débutant(e)]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 15
    Par défaut Soucis en PHP
    Bonjour à tous cher Internaute, voici mon premier message ici où j'espère avoir une réponse ^^

    Voici mon problème : je dois générer une facture avec plusieurs produits dedans, pour cela je demande à l'utilisateur le nombre de produit qu'il y aura dans sa facture,

    Grâce à ce nombre j'affiche le nombre de champs dans mon formulaire ce qui me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
                    for ($i=1; $i <= $_SESSION["nbProduit"]; $i++) { 
                    ?>
                      <tr>
                        <td><input class="input-mini" type="text" id="reference<?php echo $i; ?>" name="reference<?php echo $i; ?>" maxlength="20" placeholder="Réf."></td>
                        <td><input type="text" id="designation<?php echo $i; ?>" name="designation<?php echo $i; ?>" maxlength="100" placeholder="Entrez une courte Désignation"></td>
                        <td><input class="input-mini" type="number" name="quantite<?php echo $i; ?>" id="quantite<?php echo $i; ?>" min="0" placeholder="Quant"></td>
                        <td><input class="input-mini" type="number" name="pu<?php echo $i; ?>" id="pu<?php echo $i; ?>" min="0" step="0.1" placeholder="PU"></td>
                      </tr>
                    <?php
                    }
                    ?>
    En regardant le code source de la page je vois bien que mes champs sont bien identifié (id="designation1", id="designation2".....)


    Mon soucis est que je ne trouve pas la logique pour les insérer dans une base de données, je pense, je suis même sûr qu'il faut utiliser un array mais je bloque.

    J'attends votre aide avec impatience

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Utilisation une notation en tableau [] dans le "name" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input class="input-mini" type="text" id="reference<?php echo $i; ?>" name="reference[<?php echo $i; ?>]" maxlength="20" placeholder="Réf."></td>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 15
    Par défaut
    J'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for ($i=1; $i <= $_SESSION["nbProduit"] ; $i++) { 
    	$produit = array(
    		"reference"=>$_POST["reference"][$i],
    		"designation"=>$_POST["designation"][$i],
    		"quantite"=>$_POST["quantite"][$i],
    		"pu"=>$_POST["pu"][$i]);
    }
    foreach ($produit as $element) {
    	echo $element.'<br />';
    }

    Mais je récupère uniquement le dernier élément du tableau

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Vérifie dans la source HTML de ton formulaire que les name sont bien écrits.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Normal : à chaque tour de boucle, tu écrases la variable $produit.
    Il faut que $produit soit un tableau de tableau (et du coup echo ne va pas marcher dessus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $produit = array();
    for ($i=1; $i <= $_SESSION["nbProduit"] ; $i++) { 
        $produit[] = array(
            "reference"=>$_POST["reference"][$i],
            "designation"=>$_POST["designation"][$i],
            "quantite"=>$_POST["quantite"][$i],
            "pu"=>$_POST["pu"][$i]);
    }
    foreach ($produit as $element) {
        print_r($element).'<br />';
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 15
    Par défaut
    Wahou Merci

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 15
    Par défaut
    Pardon du dérangement (encore une fois ^^) mais je bloque également pour l'insertion dans la base de données

    J'ai une table achat comprenant

    id, reference, designation, quantite, prixU


    L'un d'entre vous peut-il m'apporter ses lumières une fois de plus s'il vous plaît ? ^^

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Ben faut faire une insertion à partir des données récupérées
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 15
    Par défaut
    J'ai un peu de mal avec les tableaux

    j'ai commencé ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $inserAchat = "
    				INSERT INTO
    					achat(id, idFacture, reference,designation,quantite,prixU,prixTTC)
    				VALUES
    					";
    for ($i=1; $i <=$_SESSION["nbProduit"] ; $i++) { 
    	$inserAchat.="('','".$row["id"]."',
    					  '".$produit["reference"][$i]."',
    					  '".$produit["designation"][$i]."',
    					  '".$produit["quantite"][$i]."',
    					  '".$produit["pu"][$i]."',
    					  '".$produit["pttc"][$i]."'
    	)";
    }
    mais Notice: Undefined index: reference
    Notice: Undefined index: designation

    J'ai écris ma requête dans un echo pour voir ce qu'il me donne et il me met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO achat(id, idFacture, reference,designation,quantite,prixU,prixTTC) VALUES ('','17', '', '', '', '', '' )('','17', '', '', '', '', '' )('','17', '', '', '', '', '' )
    Le 17 est un id récupérer lors d'une requête précédente

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je pense qu'il faut que tu fasses une requête par ligne du tableau (ça sera plus simple à gérer)
    Ensuite boucle simplement avec un foreach sur ton tableau $produit que tu as remplis au tour d'avant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    foreach ($produit as $element) { 
        $inserAchat = "
                    INSERT INTO
                        achat(id, idFacture, reference,designation,quantite,prixU,prixTTC)
                    VALUES
                        "
        $inserAchat.="('','".$row["id"]."',
                          '".$element["reference"]."',
                          '".$element["designation"]."',
                          '".$element["quantite"]."',
                          '".$element["pu"]."',
                          '".$element["pttc"]."')";
        // ici insertion en base
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 15
    Par défaut
    Merci Celira mais j'ai encore un soucis

    Voici mon tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [reference] => A789 [designation] => machin1 [quantite] => 2 [pu] => 5 [pttc] => 10 ) Array ( [reference] => A790 [designation] => machin2 [quantite] => 5 [pu] => 2 [pttc] => 10 ) Array ( [reference] => A791 [designation] => machin3 [quantite] => 40 [pu] => 20 [pttc] => 800 )
    et voici ma commande sql qu'il me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO achat(id, idFacture, reference,designation,quantite,prixU,prixTTC) VALUES ('','20', 'A791', 'machin3', '40', '20', '800')
    Comme tu peux le voir, il ne m'insert qu'uniquement le dernier

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Est-ce que par hasard tu ne ferais pas l'insertion à l'extérieur de la boucle ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 15
    Par défaut
    haha quel débile je suis parfois, en plus tu me l'as marqué dans ton post précédent,

    Merci pour tout !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Souci PEAR.php ?!
    Par silverfab34 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/02/2009, 15h37
  2. [MySQL] Petit soucis en php
    Par kevinf dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/09/2006, 20h11
  3. [PHP-JS] Soucis variable php dans javascript.
    Par cisse18 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/07/2006, 11h47
  4. Petit souci XMLRAD/PHP
    Par hunzi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 21/04/2006, 12h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo