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

PHP & Base de données Discussion :

Enregistrement suite à un while


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Août 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2013
    Messages : 41
    Points : 15
    Points
    15
    Par défaut Enregistrement suite à un while
    Bonjour,

    Je souhaiterais enregistrer dans une BDD des infos à la suite d'envois de champs via un formulaire.
    Je m'explique :
    J'ai un formulaire qui demande la saisie d'une référence article pour l'ajout de celle-ci dans la table des commandes.
    Seulement j'ai des articles simples (jusqu'ici tout va bien) mais j'ai aussi des articles composés de plusieurs références, donc ajout de plusieurs lignes à la suite d'une seule réf saisie.

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    $i=0;
    //Ajout des lignes composant le colis si Famille 80 ou 82 par une boucle, sinon, ajout ligne par ligne
    switch ($famille) 
    {
    	case 80:
    	$req_ajout=odbc_exec($connexion,$requete_ligne) ; //Ajout de la ligne colis
    	while (odbc_fetch_array($colis, $i))
    	{
    	odbc_exec($connexion, $requete_nomenclature) or die(odbc_error()); //Ajout de la nomenclature
    	$i++;
    	}
     
    	break;
     
    	case 82:
    	$req_ajout=odbc_exec($connexion,$requete_ligne); //Ajout de la ligne colis
    	while (odbc_fetch_array($colis, $i))
    	{
    	odbc_exec($connexion, $requete_nomenclature) or die(odbc_error()); //Ajout de la nomenclature
    	$i++;
    	}
    	break;
     
    	default:
    	odbc_exec($connexion,$requete_ligne) or die(odbc_error()); //Sinon, ajout de la ligne article
    	break;
    }
    Le problème, c'est que par exemple, lorsqu'un colis contient plusieurs articles, il m'ajoute le bon nombre de lignes mais il me recopie la première ligne 4 fois...
    Si quelqu'un a une idée...
    merci

  2. #2
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    ta variable $requete_nomenclature est toujour la même dans ta boucle
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  3. #3
    Membre à l'essai
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Août 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2013
    Messages : 41
    Points : 15
    Points
    15
    Par défaut Pour plus de clarté...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    //Recherche des articles composant le colis dans F_NOMENCLAT (AR_Ref correspondant à la réference colis)
    $lignes_colis="SELECT AR_Ref, NO_RefDet, NO_Qte, NO_Type, NO_Ordre FROM F_NOMENCLAT WHERE AR_Ref='".$ar_ref."'";
    $colis=odbc_exec($connexion, $lignes_colis);
    $ref_int_colis=odbc_result($colis,'NO_RefDet');
    $qte_colis=odbc_result($colis,'NO_Qte');
     
    $req_nomenc=odbc_exec($connexion, "SELECT * FROM F_ARTICLE WHERE AR_Ref='".$ref_int_colis."'");
    $nomenc_design=odbc_result($req_nomenc, 'AR_Design');
    $recup_poidsnet2 =odbc_result($req_nomenc, 'AR_PoidsNet');
    $nomenc_poidsnet = $recup_poidsnet2 * 1000 * $qte_colis; //Récupération Poids Net
    $calcul_dl_prixunitaire2=odbc_result($req_nomenc, 'AR_PrixVen');
    $nomenc_prixunitaire=$calcul_dl_prixunitaire2 / 1.055; //Récupération Prix Unitaire HT pour TVA à 5.5
    $nomenc_puttc = odbc_result($req_nomenc, 'AR_PrixVen');
    $nomenc_montantht = $qte_colis * $nomenc_prixunitaire; //HT
    $nomenc_montantttc =  $qte_colis * $nomenc_puttc; //TTC
    $i=0;
    $requete_nomenclature="INSERT INTO F_DOCLIGNE
    (DO_Domaine, DO_Type, CT_Num, DO_Piece, DO_Date, DL_DateBC, DL_Ligne, DO_Ref, DL_TNomencl, DL_TRemPied, DL_TRemExep, AR_Ref,
    DL_Design, DL_Qte, DL_QteBL, DL_QteBC, DL_PoidsNet, DL_PoidsBrut, DL_Remise01REM_Valeur, DL_Remise01REM_Type, DL_Remise02REM_Valeur, DL_Remise02REM_Type,
    DL_Remise03REM_Valeur, DL_Remise03REM_Type, DL_PrixUnitaire, DL_PUBC, DL_Taxe1, DL_TypeTaux1, DL_TypeTaxe1, DL_Taxe2, DL_TypeTaux2, DL_TypeTaxe2,
    CO_No, AG_No1, AG_No2, DL_PrixRU, DL_CMUP, DL_MvtStock, DT_No, EU_Enumere, EU_Qte, DL_TTC, DE_No, DL_NoRef, DL_TypePL, DL_PUDevise, DL_PUTTC,
    DO_DateLivr, CA_Num, DL_Taxe3, DL_TypeTaux3, DL_TypeTaxe3, DL_Frais, DL_Valorise, AR_RefCompose, DL_NonLivre, DL_MontantHT, DL_MontantTTC, DL_FactPoids,
    DL_Escompte, DL_QtePL, DL_NoLInk, DL_QteRessource, COMMENTAIRE)
    VALUES
    ('0','1','".$ct_num."','".$do_piece."','".$datejour."','".$datejour."','".$dl_ligne."','".$do_ref."','0','0','0','".$ref_int_colis."',
    '".$nomenc_design."','".$qte_colis."','".$qte_colis."','0.00000','".$nomenc_poidsnet."','0.00000','0.00000','0','0.00000','0',
    '0.00000','0','".$nomenc_prixunitaire."','0.00000','".$dl_taxe1."','0','0','0.00000','0','0',
    '".$co_no."','0','0','".$dl_prixru."','".$dl_prixru."','0','0','".$eu_enumere."','".$qte_colis."','1','0','".$dl_noref."','0','0.00000','".$nomenc_puttc."',
    '".$do_datelivr."','".$ca_num."','0.00000','0','0','0.00000','0','".$ar_ref."','0','".$nomenc_montantht."','".$nomenc_montantttc."','1',
    '0','".$qte_colis."','0','0','".$commentaire."')";
    Je crois que je viens de me rendre compte de mon erreur... Il faut que je fasse un while sur $colis...
    N'est-ce-pas ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/11/2008, 14h57
  2. Rendre visible un enregistrement suite évènement conditionnel
    Par etoileetoile dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/10/2007, 16h02
  3. [Tableaux] changer d'enregistrement dans un WHILE
    Par gretch dans le forum Langage
    Réponses: 14
    Dernier message: 27/07/2006, 17h31
  4. Delphi 7 et suppression d'enregistrements (suite).
    Par alainvh dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/05/2006, 14h34

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