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 :

multi-exploitation d'une table


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Developpeuse Java/Jee-Flex
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Developpeuse Java/Jee-Flex

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Points : 43
    Points
    43
    Par défaut multi-exploitation d'une table
    bonjour;
    j'ai un formualire à remplir à partir d'une table "client" (mysql)en affichant tous les enregistrement de cette table par bouton suivant;
    le probleme c'est que chaque utilisateur doit traité un seul client c-à-d
    utilisateur1 s'occupe de client1
    utilisateur2 s'occupe de client2
    quand utilisateur 1 termine avec client1 passe au client 3
    ET quand utilisateur 2 termine avec client2 passe au client 4
    comment je peux faire pour resoudre ce probleme?
    jusqu'à mnt chaque client est traité par tous les utilisateurs
    merci

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ajoutes un etat a ton client 0 = dispo 1 = en cours 2 = traité
    le bouton suivant affiche le client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM t_client WHERE cli_id > client_actuel AND cli_status = 0 LIMIT 1
    apres il faut un peu travailler sur le cas des "en cours" qui sont finalement abandonnés. tu peux prevoir un champ qui reference la date du chagement de status et remet les "en cours" en "dispo" tous les X temps par exemple.
    Ou bien coupler avec une gestion de session : quand la session de l'utilisateur x se ferme, les fiches "en cours" qu'il avait sont rendus.

    Tout depend de ton contexte d'utilisation.

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut


    Il va falloir que tu penses à gérer tous les cas d'exclusions mutuelles si tu ne veux pas avoir des incohérences et planter ton système.

    Le mieux est d'utiliser les transactions : tu ouvres une transaction, tu sélectionnes le prochain client à traiter ainsi tu update le client_status du client que tu viens de récupérer à 1 comme te l'a indiqué sabotage, tu fermes ta transaction. Comme ça tu ne risques pas d'avoir 2 personnes qui travaille sur le même client en même temps.

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    J'ajouterais une solution possible, bien que les deux précédentes sont aussi valables.

    Tu peux stocker les identifiants clients bloqués dans une table spécialement prévue à cet effet. Une table de type MEMORY est particulièrement adaptée pour cette utilisation. C'est par exemple ce genre de table qui est utilisé pour stocker les utilisateurs connectés à un forum.

    http://sony-noel.developpez.com/tuto...urs/?page=heap

  5. #5
    Membre du Club
    Femme Profil pro
    Developpeuse Java/Jee-Flex
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Developpeuse Java/Jee-Flex

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    bsr,merci pour vos reponses
    j'ai ajouté un champs 'etat' mais j'arrive pas à remetre l'etat disponible ->traité,
    voilà le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $response = mysql_query("SELECT code_client_source,Nom_Complet,Code_Postal,Ville,Ntel,Remarque1 FROM client_source WHERE code_client_source = '$nr_client' AND Etat='disponible' LIMIT 0,1");
    cela permet de selectionner le client ayant l'etat:'disponible' -->ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $update = mysql_query("UPDATE client_source SET Etat = 'traite' WHERE code_client_source ='$nr_client' LIMIT 0,1");
    -->pour modifier l'etat du client diponible-->traité
    cette requete n'a aucun effet sur la table 'client'
    merci d'avance pour vos reponses

  6. #6
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Quelques conseils :
    • Évite de mettre des variables directement dans tes chaines : utilise la concaténation
    • Utilise des entier plutôt que des chaines pour tes états
    • A priori le "LIMIT" ne sert à rien vu qu'un client ne peux modifier qu'un seul utilisateur à la fois non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $response = mysql_query("
    SELECT code_client_source, Nom_Complet, Code_Postal, Ville, Ntel, Remarque1 
    FROM client_source 
    WHERE code_client_source = '".$nr_client."' AND Etat=0");
    //Cette requête, que tu as oublié dans ton exemple, est essentielle pour faire
    //en sorte qu'un utilisateur ne puisse pas être modifié par 2 clients en même temps.
    //Pour plus de sécurité il faudrait gérer les transactions.
    mysql_query("
    UPDATE client_source 
    SET Etat = 1 
    WHERE code_client_source ='".$nr_client."' AND Etat=0");
    //tu récupères le résultat et tu fais tout tes traitements ...
    Puis quand tu as fini avec les modifs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql_query("UPDATE client_source 
    SET Etat = 2 
    WHERE code_client_source ='".$nr_client."' AND Etat=1");

  7. #7
    Membre du Club
    Femme Profil pro
    Developpeuse Java/Jee-Flex
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Developpeuse Java/Jee-Flex

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    bjr trotters213
    je precise plus mon probleme
    j'ai formulaire contient des champs de text pour les charger à partir d'une table via un bouton suivant-->(c'est fait à l'aide d'AJAX)
    le formulaire contient aussi un autre bouton sert à enregistrer les modifications dans une autre table-->(c'est fait)
    problem:
    1-lorsque je clique sur btn sauvegarder il faut aussi afficher l'enregistrement suivant.
    2-lorsque 2 utilisateurs sont connéctés-->pour le 1ere utilisateur l'application ça marche tres bien(le formulaire se charge par les clients non traités
    pour le 2eme rien est affiché meme s'il existe encore des clients non traités

Discussions similaires

  1. Multi usage d'une table en fonction du temps
    Par marouene_ dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/04/2011, 20h05
  2. tri multi criteres dans une table
    Par louiwahl dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/02/2010, 22h36
  3. Exploitation d'une table Access
    Par Le dragon dans le forum C++
    Réponses: 4
    Dernier message: 21/05/2008, 14h47
  4. exploitation d'une table
    Par ifri dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 13h26
  5. Exploitation d'une table possédant une relation recursive
    Par VincentR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/08/2004, 11h07

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