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 :

Recuperer les valeurs d'une bdd pour les ré-inserer en un ligne [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut Recuperer les valeurs d'une bdd pour les ré-inserer en un ligne
    Slt à tous,
    j'essaye de faire un truc, je sais pas si c'est possible, je pense que oui mais je sais pas faire.
    voile un bdd dans laquelle je récupér des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $requete = "select * from document WHERE  id='$id'";
    $requ = mysql_query($requete) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
    while ($ligne = mysql_fetch_object($requ)){
    $lesref=$ligne->refdoc;
    }
    donc je récupère "$lesref" grâce a cela mais cela me crée une valeur par ligne.
    ref1
    ref2
    ref 3...

    c'est la ou est mon problème, j'aurai besoin d'obtenir 1 seule variable contenant "ref1ref2ref3" pour pouvoir l’insérer dans une autre bdd avec
    Comment faire ?

    merci d'avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Points : 163
    Points
    163
    Par défaut
    Et si tu ajoutais à ta variable $lesref les valeurs que tu recupère

    dans ta boucle while, ajoute un point avant l'égal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lesref .=$ligne->refdoc;
    Si on n'ose pas poser des questions bêtes, on le restera.


    Une recherche Google résoudra bien 60% de vos problèmes.

  3. #3
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    ok, sauf que cela va m’insérer 3 lignes en bdd.
    du style :
    id ref
    1 ref1
    2 ref1ref2
    3 ref1ref2ref3
    Moi je voudrais que la 3eme ligne avec ref1ref2ref3

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Points : 163
    Points
    163
    Par défaut
    En principe non, si tu fais l'insert après ta boucle while et non dedans.
    Si on n'ose pas poser des questions bêtes, on le restera.


    Une recherche Google résoudra bien 60% de vos problèmes.

  5. #5
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    exact, sauf que je suis dans un foreach cla galere,
    comment je peux faire
    je met le 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
     
    foreach ($_POST['qte'] as $id => $qte) {
    if($qte==''){
    }else{
    $requete = "select * from document WHERE  id='$id'";
    $requ = mysql_query($requete) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
    while ($ligne = mysql_fetch_object($requ)){
    $lesref.=$ligne->refdoc;
    $total=$lesref.$qte;
    }
    $sql = "INSERT INTO commande VALUES('','', '$total','','non')"; 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    }
    }
    je suis obligé d'être dans une foreach pour récupérer la valeur quantité "$qte" d'un formulaire.


    Merci

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach ($_POST['qte'] as $id => $qte) {
        if($qte != ''){
             $requete = "select * from document WHERE  id='$id'";
             $requ = mysql_query($requete) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
             while ($ligne = mysql_fetch_object($requ)){
                     $lesref .= $ligne->refdoc;
             }
        }
    }
    $sql = "INSERT INTO commande VALUES('','', '$total','','non')"; 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    En sortant la requête d'insertion dans la base du foreach tu n’insérera qu'une seul fois,

    pour chaque $_POST['qte'] que tu reçois tu va ajouter à la chaîne de caractères $lesref la chaîne de caractères refdoc de ta requête SQL,

    enfin tu va insérer dans ta base la chaîne complète $lesref.

    PS : Au lieu de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if( $qte == ''){
        //Aucun traitement
    }else{
        /mon traitement
    }
    passe directement par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( $qte != ""){
        //Mon traitement.
    }
    une réponse vous a permis d'avancer ?

  7. #7
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    t'a oublier une partie du code notament
    $total qui prend en compte la quantité egalement .

    J'ai pas compris ce que tu veux faire.

    il faut que cela insert également les 3 quantité d'ou

    avec ton code cela insère uniquement la dernière quantité.
    il faut savoir que le $qte vient du $_POST['qte'] et il y en a autant que le nombre de formulaire

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Pour faire simple,

    tu entre dans ta boucle foreach pour chaque $_POST['qte'] reçu,

    tu fait ta requête SQL qui te récupères les informations dans ta BDD,

    tu récupère l'information refdoc, tu la place dans la variable $lesref qui sera au final une concaténation de tous tes refdoc choisit en $_POST['qte'],

    ensuite tu va faire l'insert dans ta base de $lesref ( qui ressemblera à : ref1ref2ref3 une fois ta boucle foreach() terminé ).

    pour le total,

    que doit-il représenter ? La quantité total reçus ?
    une réponse vous a permis d'avancer ?

  9. #9
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    je t'explique rapidement
    comme je te disais ton code fonctionne sauf pour la quantité .
    Alors j'ai un formulaire qui se cree dynamiquement par rapport a un bdd.
    de visu la page html cela donne :
    ref1 nomduformulaire1 "input quantité"
    ref2 nomduformulaire2 "input quantité"
    ref3 nomduformulaire3 "input quantité"
    etc.....
    bouton "commander".
    les personnes saisissent le nombre de formulaire dont ils ont besoin dans le "input quantité". et clique sur commander.
    cela envoi donc ensuite sur la page dont je t'ai donné le code.
    donc c'est pour cela qu'il y a un foreach pour pouvoir récupérer les différentes quantité commandé, qui seront inserer dans le meme champ que lesref d'ou le $total = $lesref.$qte; -

    le blem si je met la requête d'insertion en dehors du foreach il ajoute uniquement la dernière quantité du formulaire

    tu vois ce que je veux faire ?

  10. #10
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 881
    Points : 6 610
    Points
    6 610
    Par défaut
    Bonjour,

    et de cette manière?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($_POST['qte'] as $id => $qte) {
        if($qte != '') {
        	$query = "INSERT INTO commande VALUES ('','',(SELECT concat(group_concat(refdoc SEPARATOR ''),'$qte') FROM document WHERE id='$id'),'','non')";
    	$res = mysql_query($query) or die("Erreur SQL!<br />$query<br />".mysql_error());
        }
    }
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  11. #11
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    merci de ton aide,
    avec ton code j'ai une erreur
    Erreur SQL !

    Query was empty

  12. #12
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 881
    Points : 6 610
    Points
    6 610
    Par défaut
    Je suis aller un peu vite, et j'avais laissé quelques erreurs, c'est corrigé.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Peut-tu montrer ce que tu veut exactement comme resultat dans ta BDD s'il-te-plait.

    par exemple :

    dans le formulaire, l'utilisateur a choisit :
    • Formulaire 1, Quantité 10
    • Formulaire 3, Quantité 2
    • Formulaire 5, Quantité 1


    que veut tu qu'il soit affiché dans la seconde colonne de ta table commande ?
    une réponse vous a permis d'avancer ?

  14. #14
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    avec ton exemple il faut que dans la bdd le champs
    insérer soit :
    Formulaire 1|Formulaire 3|Formulaire 5|10|2|1

  15. #15
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Bonjour,

    et de cette manière?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($_POST['qte'] as $id => $qte) {
        if($qte != '') {
        	$query = "INSERT INTO commande VALUES ('','',(SELECT concat(group_concat(refdoc SEPARATOR ''),'$qte') FROM document WHERE id='$id'),'','non')";
    	$res = mysql_query($query) or die("Erreur SQL!<br />$query<br />".mysql_error());
        }
    }
    cela ne fonctionne pas, car cela créer 3 entrée dans la bbd alors qu'il faut que tous soit sur une seule entrer
    cela créer :
    id refdoc
    1 ref1quantité1
    2 ref2quantité
    3 ref3quantité3

    alors que cela doit creer :
    id refdoc
    1 ref1ref2ref3quantité1quantité2quantité3

  16. #16
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    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 ($_POST['qte'] as $id => $qte) {
        if($qte != ''){
             $requete = "select * from document WHERE  id='$id'";
             $requ = mysql_query($requete) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
             while ($ligne = mysql_fetch_object($requ)){
                     $lesref[] = $ligne->refdoc;
                     $quantite[] = $qte;
             }
        }
    }
     
    $total = implode('|', $lesref) . '|' . implode('|', $quantite);
    $sql = "INSERT INTO commande VALUES('','', '$total','','non')"; 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    sa devrait répondre à ton besoin.

    EDIT : Oubli du '|' entre les ref et les quantitées.
    une réponse vous a permis d'avancer ?

  17. #17
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Exia93 Voir le message
    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 ($_POST['qte'] as $id => $qte) {
        if($qte != ''){
             $requete = "select * from document WHERE  id='$id'";
             $requ = mysql_query($requete) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
             while ($ligne = mysql_fetch_object($requ)){
                     $lesref[] = $ligne->refdoc;
                     $quantite[] = $qte;
             }
        }
    }
     
    $total = implode('|', $lesref) . '|' . implode('|', $quantite);
    $sql = "INSERT INTO commande VALUES('','', '$total','','non')"; 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    sa devrait répondre à ton besoin.

    EDIT : Oubli du '|' entre les ref et les quantitées.

    Whaoooo énorme !!!
    tout est Ok.
    Merci beaucoup tu me sort une sacrée epine du pied.
    Spécial dédicace.

    Encore merci

  18. #18
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Juste une petite remarque, cette forme de stockage de données est à prohibé ^^' une BDD ne doit contenir que des données atomique et non des données calculées !
    une réponse vous a permis d'avancer ?

  19. #19
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    données atomique et non des données calculées
    c'est a dire ????

    en meme temps c'est pour un back office donc très peu de personne y auront accès

  20. #20
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Concrètement tu ne doit pas stocké par exemple dans un site e-commerce un panier complet dans une seul colonne sur une seul ligne dans ta table panier.

    Comment v'à tu utiliser ces données que tu a stocké en BDD ?
    une réponse vous a permis d'avancer ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 15
    Dernier message: 17/03/2015, 22h42
  2. [XL-2007] Extraire toutes les valeurs d'une Listbox pour les afficher dans un commentaire
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2013, 18h12
  3. Réponses: 0
    Dernier message: 11/08/2008, 10h13
  4. Réponses: 9
    Dernier message: 05/11/2007, 11h05
  5. Réponses: 4
    Dernier message: 22/05/2007, 14h42

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