Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/05/2006, 15h41   #1
Membre du Club
 
Inscription : mai 2005
Messages : 172
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 172
Points : 41
Points : 41
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?
grumly22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 15h44   #2
Membre émérite
 
Inscription : juillet 2005
Messages : 775
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2005
Messages : 775
Points : 858
Points : 858
Envoyer un message via AIM à ouatmad Envoyer un message via MSN à ouatmad Envoyer un message via Yahoo à ouatmad
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
ouatmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 15h45   #3
Membre du Club
 
Étudiant
Inscription : avril 2005
Messages : 214
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2005
Messages : 214
Points : 62
Points : 62
perso j'ai rien compris , si tu avai un schema ou un screen pour nous eclairer !
Tr@nkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 15h46   #4
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Code :
$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 !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 15h49   #5
Membre du Club
 
Inscription : mai 2005
Messages : 172
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 172
Points : 41
Points : 41
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 :
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 :
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);
        }
    }
}
grumly22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 15h51   #6
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Citation:
Envoyé par titoumimi
Code :
$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 !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 15h58   #7
Membre du Club
 
Inscription : mai 2005
Messages : 172
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 172
Points : 41
Points : 41
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
grumly22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 08h21   #8
Membre du Club
 
Inscription : mai 2005
Messages : 172
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 172
Points : 41
Points : 41
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?
grumly22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 08h43   #9
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
On suppose que tu connait l'id_groupe.

Code :
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 !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 08h47   #10
Membre du Club
 
Inscription : mai 2005
Messages : 172
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 172
Points : 41
Points : 41
C'est quoi ton $tabl_result ?
grumly22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 08h50   #11
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Citation:
$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 !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2006, 09h02   #12
Membre du Club
 
Inscription : mai 2005
Messages : 172
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 172
Points : 41
Points : 41
J'ai essayé :

Code :
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.
grumly22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h14.


 
 
 
 
Partenaires

Hébergement Web