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 :

[Conception] Problème d'insertion de tuples dans la base


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut [Conception] Problème d'insertion de tuples dans la base
    Bonjour,

    Mon probleme est assez complexe (comme l'outil que je developpe ...), je vais donc prendre un exemple simple qui se rapproche de mon probleme.

    je viens de mettre en place un tableau dans une application.
    mon tableau concerne des groupes d'utilisateurs qui sont (les groupes) donc identifié par un identifiant, un nom ...
    Je viens de mettre en place un bouton (au bout de chaque ligne du tableau) qui me permet de placer tous les utilisateurs du groupe sélectionné à un certains statut. (en clair, en face de chaque groupe, il y a un bouton, et apres avoir cliqué sur ce bouton, tous les utilisateurs qui étaient inscrit dans ce groupe passent automatiquement à un certain statut).

    Mon probleme vient du fait que je souhaite suivre chacune des modifications qui est faite.
    Je m'explique: si un groupe contient 2 personnes (et si donc, on clique sur le bouton en face du tableau de ce groupe), je voudrais bien enregistrer dans ma base 2 tuples différent : le premier avec l'identifiant du groupe et celui de la premiere personne, et le second avec l'identifiant du groupe et celui de la deuxième personne.

    Pour l'instant, l'enregistre bien 2 tuples différents mais ils sont malheureusement identiques...
    comment faire?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    montre un bout de code
    Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789

  3. #3
    Membre régulier
    Homme Profil pro
    débutant SAP BO
    Inscrit en
    Avril 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : débutant SAP BO

    Informations forums :
    Inscription : Avril 2005
    Messages : 228
    Points : 102
    Points
    102
    Par défaut
    perso j'ai rien compris , si tu avai un schema ou un screen pour nous eclairer !

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str_SQL = "UPDATE ma_base SET mon_champ = ma_valeur WHERE id_utilisateur IN (SELECT id_utilisateur FROM UTILISATEURS WHERE id_groupe=$id_groupe)";
    ?
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    petite explication : la premier requete permet de recupere les infos dans la base (bug_id et link_id) qui vont me permettre d'utiliser la fonction "IF_log_changes". La deuxieme requete va me permettre de compter le nombre d'utilisateur (si je reprend mon exemple de tout a l'heure), pour pouvoir faire ma boucle (qui doit normalement me servir à rentrer les informations pour chaque utilisateur).
    Dans mon code, 2 tuples sont entré par utilisateur (donc 4 pour 2 utilisateurs, etc ....)

    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
     
    $query = new DB_nextBug;
     
            $select = sprintf("SELECT bug.bug_id, lnk_bug_product.link_id
                        FROM bug, lnk_bug_product
                        WHERE bug.bug_id = lnk_bug_product.bug_id
                        AND input_version_id=%d", $ID);
            $query->query($select);        
            $query->next_record();
            $bugs = $query->f("bug_id");
            $link = $query->f("link_id");
     
            $select = sprintf("SELECT count(bug.bug_id)
                        FROM bug, lnk_bug_product
                        WHERE bug.bug_id = lnk_bug_product.bug_id
                        AND input_version_id=%d", $ID);
            $query->query($select);
            $query->next_record();
            $nb_bug = $query->f("count(bug.bug_id)");
     
            for($i = 0; $i < $nb_bug; $i++){
            IF_log_changes("lnk_bug_product", "WHERE input_version_id=$ID", $bugs, $auth->auth["uid"],array("status_id" => 6), $bugs,$link);
            IF_log_changes("bug", "WHERE bug_id=$bugs", $bugs, $auth->auth["uid"],array("severity_id" => 5), $bugs,$link);
            }

    ma fonction :
    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
     
    function IF_log_changes($table, $where, $id, $modifier_id, $new_values, $bug_id,$link_id){
        $select = new DB_nextbug;
        $insert = new DB_nextbug;
        // Recuperation des anciennes valeurs
        $local_query = sprintf("SELECT     * 
                    FROM     %s %s", $table, $where);    
        $select->query($local_query);
        $select->next_record();
        while (list($name, $value) = each($new_values) ) {
            if ( $value != $select->f($name) ) {
                $local_query = sprintf("INSERT INTO activity (table_name, field_name, old_value, new_value, date, owner_id, id, link_id) 
                            VALUES('%s', '%s', '%s', '%s', NOW(), %d, %d, %d)", $table, $name, addslashes($select->f($name)), addslashes($value), $modifier_id, $bug_id, $link_id);
                $insert->query($local_query);
            }
        }
    }

  6. #6
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Citation Envoyé par titoumimi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str_SQL = "UPDATE ma_base SET mon_champ = ma_valeur WHERE id_utilisateur IN (SELECT id_utilisateur FROM UTILISATEURS WHERE id_groupe=$id_groupe)";
    ?
    Dans cette requête, tu va updater les champs d'une table quelconque, à condition que l'utilisateur appartienne bien au groupe (la requête entre parenthèse). Si j'ai bien compris ton problème, il ne te reste plus qu'à adapter...
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  7. #7
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    Le truc, c'est que je ne veux pas Updater quoi que ce soit, je veux pouvoir rentrer différent tuple dans ma base.

    imaginer que vous ayez un tableau
    celui représente différent groupe:
    1 - groupe1 - super groupe -
    2 - groupe2 - groupe bon -
    3 - groupe3 - groupe moyen -

    différente personnes sont rangé dans ces groupes

    Au bout de chaque ligne se trouve un bouton (représenté par le smiley).
    Lorsque je clique sur le bouton, les utilisateurs passe à un certain statut (les requête de modification fonctionnent parfaitement).

    par contre, je souhaite concerver dans une table un historique des actions. exemple : si je clique sur le bouton du groupe 1 (sachant que bob et isidor sont présent dans ce groupe), je veux pouvoir enregistrer dans ma base :

    1 - groupe1 - bob
    2 - groupe1 - isidor

  8. #8
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    En clair :

    Je veux que lorsque je clique sur le bouton d'un groupe, il soit enregistré dans une table spécifique différent tuple. Chacun de ces tuples comportent les champs suivant: identifiant du groupe et identifiant d'une personne du groupe. Ainsi, si il y avait deux personnes dans le groupe, j'aurais deux tuples, etc ...

    Mon probleme pour l'instant, c'est qu'il enregistre deux tuples (dans le cas ou il n'y a que deux personnes), mais ils sont identique : je n'ai que l'identifiant de la premiere personne.

    Comment faire pour qu'apres avoir enregistré l'identifiant de la premiere personne (avec l' idgroupe), il passe au suivant?

  9. #9
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    On suppose que tu connait l'id_groupe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $strSQL = "SELECT * FROM table_utilisateur WHERE id_groupe = $id_du_groupe";
     
    $result = mysql_query($strSQL);
     
    while ($tabl_result = mysql_fetch_array($result)) {
        $nom_user = $tabl_result['nom_utilisateur'];
        $strSQL2 = "INSERT INTO table_tuples VALUES ('$nom_user', $id_du_groupe)";
        $result2 = mysql_query($strSQL2);
    }
    ?>
    ?
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  10. #10
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    C'est quoi ton $tabl_result ?

  11. #11
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    $tabl_result = mysql_fetch_array($result)
    c'est le tableau contenant les résultats de ma requête
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  12. #12
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    J'ai essayé :

    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
     
    $query = new DB_nextBug;
     
            /*$link = $query->f("link_id");            
            $bugs = array();
            $bugs[]=array($query->f("bug_id"));*/
            $select = sprintf("SELECT count(bug.bug_id)
                        FROM bug, lnk_bug_product
                        WHERE bug.bug_id = lnk_bug_product.bug_id
                        AND input_version_id=%d", $ID);
            $query->query($select);
            $query->next_record();
            $nb_bug = $query->f("count(bug.bug_id)");
     
            $select = sprintf("SELECT bug.bug_id, lnk_bug_product.link_id
                        FROM bug, lnk_bug_product
                        WHERE bug.bug_id = lnk_bug_product.bug_id
                        AND input_version_id=%d", $ID);
            $query->query($select);        
     
            while($array_res=mysql_fetch_array($query)){
            $bugs=$array_res['bug_id'];
            $link=$array_res['link_id'];
            IF_log_changes("lnk_bug_product", "WHERE input_version_id=$ID", $bugs, $auth->auth["uid"],array("status_id" => 6), $bugs,$link);
            IF_log_changes("bug", "WHERE bug_id=$bugs", $bugs, $auth->auth["uid"],array("severity_id" => 5), $bugs,$link);
            }
    mais ça n'a pas l'air d'accéder à la fonction IF_log_changes, car ça n'enregistre rien dans ma table.
    Je ne vois pas ça ne fonctionne pas.

Discussions similaires

  1. problème d'insertion des dates dans une base
    Par guy_antoine_mav dans le forum C#
    Réponses: 13
    Dernier message: 02/12/2009, 17h34
  2. Insertion des tuples dans la base avec un code PL/pgSQL.
    Par Rony Rauzduel dans le forum Requêtes
    Réponses: 0
    Dernier message: 17/01/2009, 15h17
  3. nouveau problême d'insertion des données dans la base de données
    Par tchimou dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/03/2007, 15h32
  4. [MySQL] Problème d'insertion de données dans ma base
    Par kilkikou dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 24/01/2007, 10h15
  5. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17

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