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 :

Optimisation objet serialisé


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut Optimisation objet serialisé
    Bonjour,
    J'ai une appli php qui permet d'affectier une action a plusieurs utilisateurs, et aujourd'hui je stocke les id de ces users (issue d'un select multiple) de facon sérialisé, dans un champ texte d'une table mysql, ex:
    a:3:{i:1;s:2:"89";i:2;s:3:"150";i:3;s:3:"128";}

    Pour afficher les actions d'un user je fait donc ma requete pour recuperer toutes les actions de la table:
    select meschamps from tableactions where status <>'closed'
    et aprés je verifie si mon user est dans la liste des responsables de cette action par cette methode:
    while (list($Resp, $Level, ...) = mysql_fetch_row($result)) {
    $responsables = unserialize($Resp);
    //var_dump($responsables);
    if (in_array($userid, $responsables))
    {
    $t++;
    }


    C'est un peu lourd, mais honnement je ne vois pas comment faire autrement.
    J'ai essayé de stocker non pas les id des users, mais les noms séparés par des virgules, mais c'est pas mieux...
    Aprés avoir un lu les differents post mon probleme vient du fait que j'ai serialisé ma liste de users c'est bien ca? Il n'est pas possible de faire une recherche SQL sur un objet serialisé, je me trompe?

    Alors comment faire pour stocker une liste et pouvoir faire une requete facilement dessus? je voudrais eviter d'avoir a creer une autre table...
    Il y a t-il une methode miracle??

    Merci pour vos conseils.
    A+
    VooDoo

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Dans ta table tableactions tu peux rajouter un champs user_id qui est une Cle etrangere (FK USER(id)) vers l'id de la table utilisateur.


    Qand tu veux connaitre les action d'un utilisateur (dont tu as l'id) tu fais qqch comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      SELECT meschamps 
         FROM tableactions
      WHERE status <> 'closed 
           AND  id = "$id_user"
    C'est rapide et propre. Souvent ca ne sert a rien de vouloir faire mieux que la base de donnees dans ton code .... Elle est faite pour ca, trouver la facon la plus rapide de rappartrier tes inforamtions.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    si j'ai bien compris, ce champ comportera qu'un seul id non?
    mon probleme etant de stocker plusieurs id pour une meme action...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Oui le champs ne contiendra qu'un seul id, mais ce n'est pas un probleme

    Par exemple

    Table ACTION
    ---------------------
    nom_action | utilisateur_id
    ------------------------------------
    ajouter | 1
    modifier | 1
    supprimer | 1
    ajouter | 2
    ajouter | 3
    modifier | 3

    Avec la requete que je t'ai donnee tout precedement en cherchant pour l'utilisateur 1 tu sauras qu'il a les actions : Ajouter, modifier, supprimer
    Que l'utilisateur 2 a l'action ajouter
    Que l'utilisateur 3 a les actions ajouter et modifier

    C'est une solution plus generique et + normalisee a ton probleme.

    (Si tu veux avoir une souplesse maximale il faudrait avoir 3 tables Utilisateurs, Actions, et Droits. Droits contiendrait l'id d'un utilisateur et l'id d'une action. Les actions ne seraient alors que un id, un nom d'action et une description de l'action par exemple.)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    ok, on s'est mal compris pardon.
    ma table action n'est pas une table de droits, celle la je l'ai deja car j'utilise les bases d'un CMS.
    mon appli action liste toute les actions que doivent faire les gens de mon entreprise, par exemple:
    Aid|action|resp
    6300, modifier la procedure S-300 pour eviter ne renouveler le probleme cité,a:3:{i:1;s:2:"89";i:2;s:3:"150";i:3;s:3:"128";}

    et la clef de cette table est le n° de l'action Aid, et l'action ne peu pas répété pour chaque user...

    Est-ce plus clair?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Oui c'est tres clair, je pense que j'avais bien compris ton probleme et
    que mon explication etait tout a fait pertinente, et adequate dans ton cas.

    Aussi vais re-expliquer autrement car je pense que ca vaut vraimment la peine.
    Dans une situation pareil, si tu connais un peu de theorie de BD rellationnel,
    en derniere forme normale tu aurais 3 tables (Utilisateurs, Actions, et Droits).

    La theorie des BD relationnels aide a creer des BD clair, simple et souple d'utilisations (entre autre). Si tu soumets ton probleme a 5 informaticiens qui connaissent les theories
    de BD relationnels ils vont probablement tous +- arriver a cette meme solution.

    Immagine que tu aies une autre table Droit (peut importe son nom en verite) qui contiendrait
    (id_utilisateur, id_action). Et que quand un utilisateur a le droit de faire une certaine action, tu introduise l'id de l'utilisateur et l'id de l'action dans cette table ?

    Et bien grace a cette table tu serais capable pour n'importe qu'elle utilisateur de dire toutes les actions qu'il peut faire. Il pourait faire zero ou toutes les actions.

    (Accessoirement tu pourais aussi trouver tous les utilisateurs qui on le droit de faire tel
    ou tel action).

    Voila, je t'invite a lire un tutoriel sur le SQL et sur les jointures, jointures internes et jointures externes. Cela te permettra de simplifier tes applications et tes schemas de BD tout en y gagnant aussi en performance.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Merci pour ta réponse.
    Effectivement c'est ce que je fait pour mes droits, mais je voulais eviter d'avoir a gerer une autre table faisant le lien (action - utilisateurs) d'ou mon stockage serialisé des utilisateurs affecté a l'action...
    Mais je vais surement revoir ma table...
    Merci encore
    A+
    VooDoo

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Bon alors je me lancer dans les clefs etrangere, mais avant de me lancer, j'aimerai que tu corriges mon tir si necessaire. Aprés avoir bouquiné un peu les clefs etrangere ce matin ici:
    http://dev.mysql.com/doc/refman/5.0/...nstraints.html
    voila ce que je m'apprete a faire:
    j'ai aujourdh'ui 2 tables:
    actionplan (contenant la liste des actions, avec un champ texte contenant la liste des users affecté a cette action, la clef primaire etant le champ Aid)
    users (contenant la liste de me users, la clef primaire etant le champ Uid)

    1_modifier mes tables en innoDB
    2_creer une 3ieme table actionusers avec 3 champs:
    Id: champ autoincrement
    Aid: champ contenant l'id de l'action
    Uid: champ contenant l'id du user
    3_creer une clef etrangere Aid vers la table actionplan et Uid vers la table users

    4_faire un script qui parcours ma table actionplan pour alimenter la table actionusers avec une entree pour chaque couple Uid/Aid

    J'ai bon?

    J'ai par contre un doute sur le "on delete" ou "on update" que dois-je choisir??

    Merci pour tes conseils!
    A+
    vooDoo

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    1. Tu t'y connais mieux en mysql que moi ;-) mais en effet ton lien indique que "innoDB" gere les cles etrangeres et c'est ce qu'il te faut.
    2. En effet la table actionusers est parfaitement ce qu'il faut. En theorie la cle primaire pourait
      etre les 2 champs : PRIMARY KEY (Aid,Uid) mais je ne sais pas si mysql gere bien cela.
      La primary key est une colonne / une combinaisons de colonnes qui sera unique, la combinaison de aid, uid a plus de sens qu'un id auto-incremente.
    3. Oui ton SQL ressemblera a qqch comme ca
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
       
       
      CREATE TABLE actionusers
      (
         Id INT AUTO_INCREMENT,
         Aid INT NOT NULL,
         Uid INT NOT NULL,
         PRIMARY KEY(Id),
         FOREIGN KEY (Aid) REFERENCES actionplan(Aid),
         FOREIGN KEY (Uid) REFERENCES users(Uid),
      ) TYPE=INNODB;
    4. Oui il te faudra faire un script php pour alimenter la table. Avec une premiere rupture (boucle) sur les lignes de actionplan. Dans ce premier niveaux tu vas recuperer l'id de l'action
      Aid et la liste des id des utilisateurs pour cet actions les Uid . La tu dois faire une deuxieme rupture (boucle) ou tu insere (INSERT INTO ....) chaque fosi le meme Aid, et l'user id de l'utilisateur suivant.... Enfin bref, je pense que tu avais deja compris tout ca tout seul.
    5. Tu n'as pas vraimment besoin de ON UPDATE ou ON DELETE dans ce cas. Ces clauses peuvent s'averer tres utiles, mais on peut aussi completement s'en passer. Elle permetent de faire automatiquement dans la BD des choses que tu ferais toi-meme a la main dans ton programme autrement. En fait si tu rajoutais ON DELETE CASCADE pour les deux FOREIGN KEYS alors quand on efface un utilisateur ca effacerait automatiquement toutes les lignes dans actionuser qui font reference a lui. De la meme facon quand tu effacerais une action ca effacerait automatiquement toutes les lignes faisant reference a cette action.
      Cela t'evite de devoir le faire toi-meme .... Apres ON UPDATE, ON DELETE, ON INSERT tu peux aussi appeller une fonction (TRIGGER) dans laquel tu insere des donnees dans d'autres tables, fait des calculs, fais des test sur les donnees avant de les inserer .... bref) Je ne suis pas sur qu'il y aie des Triggers en mysql en fait.


    Voila j'espere que ca t'aideras, mais en fait pour faire court, la reponse c'est OUI, OUI, OUI, OUI. Bien joue tu a l'air d'avoir tout comprit. Et tu peux eventuellement faire ON DELETE CASCADE.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    merci encore pour tes reponses et ton soutien, mais en te relisant je me suis demandé quel etait l'interet des ses clefs etrangere...
    Ma table actionusers comme tu le suggerais me suffit amplement non?
    Il y a t-il vraiment un le gain de rajouter des clefs primaire si je n'utilise pas les declencheurs ON....??..

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Citation Envoyé par VooDooNet Voir le message
    merci encore pour tes reponses et ton soutien, mais en te relisant je me suis demandé quel etait l'interet des ses clefs etrangere...
    Ma table actionusers comme tu le suggerais me suffit amplement non?
    Si tu demandes quel est l'interet de ce que je t'ai explique auparavant cela me desolerait beaucoup

    Par contre si tu veux savoir ce que cela change d'indiquer FOREIGN KEY bidule Table(id_table) en generale et bien c'est une tres bonne question.

    Les cles etrangeres permette de conserver l'integrite referentielle. KESAKO ?

    Ben si tu essaie d'inserer n'importe quoi comme valeurs de (Aid,Uid) dans actionsusers,
    vu que tu as mis des cles etrangeres, il va verifier que l'Aid que tu as mis existe vraimment dans la table actions et il va verifier que l'Uid que tu as mis existe vraimment dans la table users.

    Si tu essayes de faire un update, ou un insert de ces valeurs avec des id qui n'existent pas, eh bien mysql t'en empechera et envera une erreur.

    Tout comme le fait que tu aies indique que un le champs Uid de la table actionsusers correspond au champs Uid de la table Users fait que si tu as mis ON DELETE CASCADE, quand un user est efface, toutes les lignes de actionsusers qui lui sont liees sont aussi effacees.

    Tu n'as jamais d'informations erronnees ou fausse dans ta base de donnees.



    Il y a t-il vraiment un le gain de rajouter des clefs primaire si je n'utilise pas les declencheurs ON....??..
    Je ne vois pas le lien entre les 2. Tres concretement quand tu dis qu'un champs est une cle primaire cela veut dire que la BD s'assurera qu'il reste unique et qu'il ne soit pas null.

    Le premier gain c'est que par exemple quand tu fais reference a l'utilisateur avec l'id 1, ben ca serait mal venu qu'il t'en retourne 3 differents qui aie chacun l'id 1 !

    Quand la cle primaire est un numero qui s'auto-incremente probablement que le seul gain est celui la. Mais si ta cle primaire est plus significative ex : Nom,Prenom,date_de_naissance.
    Cela peut-etre tres tres interessant. Car avec 3 informations significative (pas un numero abstait) tu peux localiser immeidatement une ligne.

    En outre, je crois que la bd va systematiquement creer un index sur la cle primaire.
    Cela veut dire que lorsque on a ces 3 informations, on va retrouver la ligne immediatement sans devoir boucler a travers toute la table et faire pleins de comparaisons. C'est tres rapide.

    Enfin voila, une base de donnees relationelle en dernier forme normale, ou les liens entre les donnees sont biens etablis. (et ou eventuellement tu mets des contraintes sur les donnees).
    sera + difficilement corruptible.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    non non rassure toi, j'ai bien compris le concept.
    C'est juste que je ne m'etais jamais préoccupé des foreignkey avant...
    Et pour tout te dire ca a tjrs fonctionné... (c que mon php doit etre bon ^^)
    Alors quand tu m'a parlé de ca, je me suis tiens, si ca se trouve je loupe qquechose, une methode miracle...
    Mais non pas vraiment en fait, enfin pas dans de petites appli comme la mienne, hormis l'integrité des données...
    Ca doit permettre surement d'accelerer les requetes sur des grosses tables...

    Parlant de requete, aujourd'hui pour recuperer ttes les actions pour un user donnée, je ferai une boucle sur table useractions, et sur chaque ligne rencontrée pour ce user, une requete sur la table action pour recuperer les infos de cette action. Y'a plus simple??

    Merci encore, et bonne nuit!

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    J'ai rajoute des champs dans les tables pour les exemples

    - actionplan (Aid, description, nom)
    - users (Uid, nom, prenom, age)
    - actionusers (Uid, Aid)


    Oups, je croyais que tu avais compris cette partie la.

    • Pour recuperer toutes les actions pour un utilisateurs donnes, si tu connais l'id de l'utilisateur :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
       
      SELECT AP. nom, AP.description
          FROM actionplan AP
            JOIN actionsusers AU ON (AP.Aid = AU.Aid)
      WHERE AU.Uid = ".$user_id."
    • Pour recuperer toutes les actions+description de l'utilisateur Johny Bebop (on connait pas son id) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
       
      SELECT  AP.nom, AP.description
          FROM actionusers AU
            JOIN  users U  ON (U.Uid = AU.Uid)
            JOIN  actionplan AP (AP.Aid = AU.Aid)
      WHERE U.prenom = "Johny"
           AND U.nom = "Bebop"
    • Pour connaitre la liste des personnes pouvant utiliser l'action "Permis de tuer"
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
       
      SELECT  U.nom, U.prenom, U.age
          FROM actionusers AU
            JOIN  users U  ON (U.Uid = AU.Uid)
            JOIN  actionplan AP (AP.Aid = AU.Aid)
      WHERE AP.nom = "Permis de tuer"


    Etc... J'espere que tu auras compris la souplesse et l'interet d'avoir creer ta base de donees ainsi et la force des cles etrangeres et des Jointures (JOIN).

    Et la on ne fais que grater la surface. Je t'encourage vivement a lire des tutoriaux sur le langage SQL, au moins jusqu'au jointures (internes, externes). Tu comprendras alors facilement ces requetes et saura mieux utiliser la reel puissance de mysql.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Je connaissais mais trop peu. J'ai deja utilisé des requetes avec jointures, mais j'ai pas trouvé ca plus rapide, juste plus commode a ecrire...
    Mais j'avais non plus de FK..
    Je suis entrain de bouquiner les jointures, et de re ecrire mon code pour utiliser les 2 maintenant

    et du coup j'ai une nouvelle question...
    Pour mes futures creation d'action dans la table actionplan, il va falloir que j'aille aussi alimenter la table actionusers, et aujourd'hui j'utilise ca juste aprés mon insert:
    // Get id from last insert
    $numAid = mysql_insert_id();

    Est-ce bien la meilleure methode??

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Pour mes futures creation d'action dans la table actionplan, il va falloir que j'aille aussi alimenter la table actionusers
    Euh non, pk ? Tu peux creer des actions tout court. Pas de souci.
    Une entree dans actionusers veut simplement dire qu'untel utilisateur a le droit de faire tel action. Tu peux creer des actions que personne n'a encore le droit d'utiliser ...

    , et aujourd'hui j'utilise ca juste aprés mon insert:
    // Get id from last insert
    $numAid = mysql_insert_id();
    C'est bien, ? que veux-tu dire par la ?

    Je vais oser une tentative. Peut-etre souhaiterais tu qu'apres la creation de chaque action, un utilisateur (tjrs le meme) administrator aie automatiquement le droit de l'utiliser.

    Donc tu pourais utiliser ce $numAid, avec l'id de l'utilisateur administrateur et les inserer dans useractions par exemple.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    ouh la j'ai rien compris... ou on s'est mal compris des le debut...
    Mon appli n'est pas une gestion de droit.
    1 action est affecté à X utilisateurs, et non pas comme je l'ai déjà précisé une histoire de droit ou 1 utilisateur a le droit de faire X actions.
    si je ne remplis pas ma table actionuser en mm tps que je cree une nouvelle action dans actionplan comment vais-je faire le lien?? (je ne parle pas des actions dejà presentent, ou la je vais tout reprendre avec la routine dont on a deja parlé...)

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    OK,

    Donc en partant d'une action. Creer l'action et l'affecter a 1 ou plusieurs utilisateurs sont 2 operations differentes que tu n'est pas oblige de faire au meme moment.

    Bon je vais te donner un exemple dans le cadre d'une application en php, parce que
    cela sera plus parlant

    1. Creer l'action : Dans une page ex. action.php tu as un formulaire avec 2 champs "Nom" et "Description", l'utilisateur rentre le nom de sa nouvelle action, une petite description et ensuite clique sur "Soumettre". La tu recupere par exemple $_POST[nom] et $_POST[description]. Tu les les inseres dans la table actionplan.
    2. Affecter une action a un utilisateur : Dans une page ex. affecter_action.php tu
      as un formulaire avec 2 liste deroulante. Dans la premiere liste deroulante (select name="aid") tu as une liste d'actions. que tu obtiens en faisant
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
       SELECT Aid, "nom"  FROM actionplan
      et une liste d'utilisateurs (select name="uid") que tu obtiens en faisant
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
       SELECT Uid, nom, prenom FROM users
      . L'utilisateur choisit une action, il choisit un user. Il clique sur "Soumettre" et toi tu recuperes par exemple $_POST[Aid] et $_POST[Uid]. La tu fais un INSERT de ces 2 valeurs dans actionsusers.
      Et voila magique. L'action est associe avec cette utilisateur. Ensuite tu recommance autant de fois que tu veux rajouter d'utilisateurs pour cette action. Ou bien tu permet une forme de selection multiples. Ou tu utilise des checkbox et tu affiches tous les utilisateurs .... it's up to you.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    ok je vois, sauf que moi mon formulaire contient tout en mm tps...
    L'utilisateur aujourdh'ui peut modifier 40 à 50 champs d'un coup sur 4 tables differentes... Ca risque de gueuler si leur dit d'associer les responsables d'action dans une 2ieme tps...

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Pouvoir faire 40 choses en meme temps dans une meme page n'est pas necessairement la solution la plus optimal, j'aurais meme tendance a penser le contraine. Neanmoins rien ne t'empeche de faire les 2 en meme temps.

    Il faut juste que tu connaisse la prochaine valeur de Aid.

    Soit en faisant qqch du style select max(Aid) from actionplan ou bien de la facon la plus propre que le permette mysql. Je pense que tu avais mis un code du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $numAid = mysql_insert_id()
    ca m'a l'air d'etre +- ce qu'il faut, mais tu dois mieux savoir que moi.

    Une fois que tu as cette information tu peux tout a fait tout faire en meme temps.

    Tu creeras une ligne dans actionplans avec cet Aid, et autant de lignes necessaires dans actionsuser avec ce-meme Aid.

    Voila ;-)

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    bon nickel, c'est que je pensais...
    j'ai fait la table actionusers avec un FK et un ON UPDATE et ON DELETE cascade
    je vais vais essayer et je te tiens au courant..
    merci encore
    A+
    VooDoo

Discussions similaires

  1. Encodage d'objet serialisé pour passer par une requete HTTP
    Par CocoLeNain dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 03/06/2010, 17h32
  2. [Applet]Transfert d'objet serialisé applet/servlet
    Par fanou28 dans le forum Applets
    Réponses: 7
    Dernier message: 22/02/2010, 21h45
  3. Envoi par fichier ou objet serialisé ?
    Par rimas2009 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 15/07/2009, 18h19
  4. Objet serialisé en java
    Par alexorcet dans le forum Général Java
    Réponses: 4
    Dernier message: 19/05/2008, 11h25
  5. [Débutant(e)][optimisation]Objet Session
    Par plddcn dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 24/01/2005, 21h34

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