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 :

Lier 2 tables et en extraire le contenu avec unserialize...


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut Lier 2 tables et en extraire le contenu avec unserialize...
    Bonjour

    J'ai une table client:
    • id
    • login
    • pass
    • email

    Et j'ai une table contenant ses préférences de présentation menu:
    • id
    • titre
    • ordre

    Chaque client à ses propres préférences qui sont donc stockés dans la table n°2

    Je ne connais pas d'autre solution que de créer une table pour chaque membres et je ne crois pas que se soit "LA" solution.

    Comment feriez vous à ma place ?

  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
    Par défaut
    Ajoute simplement un champ pour indiquer a quel client se rattache cette ligne de config

    * id
    * client_id
    * titre
    * ordre
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut Trop bien Sabotage !
    Tout bete et surtout efficace !


  4. #4
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut encore une chose...
    Donc à chaque clients il lui faudra recréer les 6 champs préférences ? il s'agit d'un menu type IGoogle où l'on déplace les menus pour infos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO `classement_items` (`id`, `titre`, `ordre`, `login`) VALUES
    (1, '<a href="#">Mes informations</a>', 0, 'casimir'),
    (2, '<a href="#">Espace vendeur</a>', 1, 'casimir'),
    (3, '<a href="#">Ma recherche</a>', 4, 'casimir'),
    (4, '<a href="#">Nous contacter</a>', 3, 'casimir'),
    (5, '<a href="#">Mes identifiants</a>', 2, 'casimir'),
    (6, '<a href="#">Mot de passe</a>', 5, 'casimir');
    Tu penses que google créer à chaque clients les champs ?

    Merci de ta réponse

  5. #5
    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
    Par défaut
    Pour le menu "Nous contacter" par exemple est différent pour chaque client ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut Merci de ta réponse
    Les menus restent les mêmes pour tout le monde

  7. #7
    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
    Par défaut
    Si c'est juste l'ordre qui change, il te faut une table qui contient les menus

    menu_id
    menu_titre

    et une table qui contient les préferences des utilisateurs :

    pref_id
    client_id
    menu_id
    pref_ordre

    Tes menus dans l'ordre choisi sont donc
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT menu_titre FROM table_menu 
    JOIN table_preference USING (menu_id)
    WHERE client_id = 123463465
    ORDER BY pref_ordre
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut Merci beaucoup pour ta réponse sabotage,
    Voilà ce que je recherchais

    J'ai compris le principe maintenant je me met a la pratique

  9. #9
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut
    Désolé Sabotage mais je n'arrive a comprendre comment insérer la "pref_ordre" et comment en récupérer la valeur pour l'appliquer ?!

    voilà la base sur laquelle je travail:
    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
    $bdd = 'clients';
    $hote = 'localhost';
    $user = 'root';
    $password = '';
    $connect = mysql_connect ($hote, $user, $password);
     
    mysql_select_db($bdd);
     
    $req = 'SELECT id, titre, ordre FROM classement_items ORDER BY ordre';
    $rep = mysql_query($req);
    echo '<div id="maj"></div>';
    echo '<ul id="sortable">';
    while ($row = mysql_fetch_array($rep)) {
        echo "<li id=\"item_".$row['id']."\">".$row['titre']."</li>";
     
    }
    echo '</ul><br />';
    echo '<form action="" method="post">'; 
    echo '<input type="hidden" name="sortable" />';
    echo '</form>';
    ma requete d'insertion en ajax:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $bdd = 'clients';
    $hote = 'localhost';
    $user = 'root';
    $password = '';
    $connect = mysql_connect ($hote, $user, $password);
     
    mysql_select_db($bdd);
     
    foreach ($_GET['item'] as $position => $item) {
        $req = "UPDATE classement_items SET ordre=".mysql_real_escape_string($position)." ";
        $req.= "WHERE id=".mysql_real_escape_string($item);
        $rep = mysql_query($req);
    }
    D'après ton exemple je devrais insérer plusieurs valeurs dans un seul champ pour en récupérer le contenu et l'appliquer à ma requête, je n'ai jamais pratiquer ce genre de "bidouille", un coup de main ne serait pas de refus

    Si la question est trop bête alors vire la poste et je me débrouillerai autrement...

  10. #10
    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
    Par défaut
    Comment l'utilisateur choisit-il l'ordre ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut
    il s'agit d'un drag and drop (glisser deposé):
    http://jqueryui.com/demos/sortable/

    et oui !

  12. #12
    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
    Par défaut
    Tu as juste a recuperer la valeur fourni par jQuery et faire tes update.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut mdr
    en fait toi aussi tu seches

    sinon j'ai une autre solution avec des input hidden, je crois que j'vais essayer ça...seul...

    un petit coup de main me ferait du bien !!!

  14. #14
    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
    Par défaut
    Je t'ai dis ce qu'il fallait faire, si tu ne dis pas ce qui te bloque, on ne peut pas t'aider.

    Si c'est jQuery, tu peux demander de l'aide dans la section Javascript.

    Du côté PHP, que ce soit jQuery, ou un bouton de formulaire classique, le traitement est le même : lancement d'une requête de mise à jour.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut
    salut,

    je cite:
    et une table qui contient les préferences des utilisateurs :

    pref_id
    client_id
    menu_id
    pref_ordre
    donc deux solutions pour moi:
    ou alors j'utilise quelque chose comme serialize() dont je ne comprend rien au fonctionnement.
    ou alors il faut je recréer les champs pour chaque clients puisque pref_ordre et menu_id tout comme pref_id contiennent plusieurs valeurs.

    c'est bien ça que tu m'as dis de faire, non ?

    Mes champs pour rappel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    INSERT INTO `classement_items` (`id`, `titre`, `ordre`, `login`) VALUES
    (1, '<a href="#">Mes informations</a>', 0, 'casimir'),
    (2, '<a href="#">Espace vendeur</a>', 1, 'casimir'),
    (3, '<a href="#">Ma recherche</a>', 4, 'casimir'),
    (4, '<a href="#">Nous contacter</a>', 3, 'casimir'),
    (5, '<a href="#">Mes identifiants</a>', 2, 'casimir'),
    (6, '<a href="#">Mot de passe</a>', 5, 'casimir');
    Merci de ta réponse

  16. #16
    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
    Par défaut
    Le titre n'est pas dans la table des préférences utilisateurs puisqu'il est le meme pour tout le monde.
    La table de préférence contient juste l'id renvoyant a la table des menus.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut
    donc deux solutions pour moi:
    ou alors j'utilise quelque chose comme serialize() dont je ne comprend rien au fonctionnement.
    ou alors il faut je recréer les champs pour chaque clients puisque pref_ordre et menu_id tout comme pref_id contiennent plusieurs valeurs.
    qui te parle de titre ?

  18. #18
    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
    Par défaut
    Dans ton exemple, il y a le titre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre confirmé Avatar de nico le noob
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Par défaut
    tu serais utiliser serialize() dans ce 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
    15
    16
    17
    18
    19
    20
    $bdd = 'clients';
    $hote = 'localhost';
    $user = 'root';
    $password = '';
    $connect = mysql_connect ($hote, $user, $password);
     
    mysql_select_db($bdd);
     
    $req = 'SELECT id, titre, ordre FROM classement_items ORDER BY ordre';
    $rep = mysql_query($req);
    echo '<div id="maj"></div>';
    echo '<ul id="sortable">';
    while ($row = mysql_fetch_array($rep)) {
        echo "<li id=\"item_".$row['id']."\">".$row['titre']."</li>";
     
    }
    echo '</ul><br />';
    echo '<form action="" method="post">'; 
    echo '<input type="hidden" name="sortable" />';
    echo '</form>';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $bdd = 'clients';
    $hote = 'localhost';
    $user = 'root';
    $password = '';
    $connect = mysql_connect ($hote, $user, $password);
     
    mysql_select_db($bdd);
     
    foreach ($_GET['item'] as $position => $item) {
        $req = "UPDATE classement_items SET ordre=".mysql_real_escape_string($position)." ";
        $req.= "WHERE id=".mysql_real_escape_string($item);
        $rep = mysql_query($req);
    }

  20. #20
    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
    Par défaut
    Je ne comprends pas ce que tu veux serialiser.
    Pour un utilisateur, il y a une ligne par menu pour stocker la position.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Extraire le contenu d'une table ou générer les ordres d'insertion
    Par SheikYerbouti dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/12/2011, 15h02
  2. Lier une table standard avec une table de paramétrage (contenu variable)
    Par romain.alcaraz dans le forum Développement de jobs
    Réponses: 22
    Dernier message: 14/02/2011, 16h45
  3. lier deux tables a partir dun calcul!!
    Par marie10 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/04/2004, 09h44
  4. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45

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