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 :

mongoDB questions "simple"


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut mongoDB questions "simple"
    Bonsoir (:

    J'ai quelques questions à propos de mongoDB et de son utilisation en php.

    Je dispose d'une page php de ce type:

    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
     
    $db = new Mong();
    $article = $db->myDB->articles
     
    $article = array("titre" => 'MongoDB exemple', 
                 "texte" => 'Ceci est un test d\'article pour tester MongoDB', 
                 "date" =>  '2009-03-03', 
                 "auteur" => 'DJo',
                 "comments" => array(
                      array("texte" => 'Super article !!', 
                        "date" => '2009-03-04',
                        "auteur" => 'Toto'),
                     array("texte" => utf8_encode('Je confirme, le NoSQL ça déchire !'), 
                        "date" => '2009-03-04',
                        "auteur" => 'Novaway')
                 )
            );
     
    $db->articles->insert($article);
    Qui m'ajoute un article et deux commentaires (de cet article) mais je ne vois absolument pas comment faire pour par la suite rajouter uniquement un commentaire à cet article.

    J'ai bien une solution qui consisterait à récuperer tout le array comments puis d'ajouter à la fin mon commentaire et de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $article->update(array('_id' => $id), array('$set' => array('comments' => $comments)));
    $doc = $article->findone(array('_id' => $id));
    Mais je ne vois absolument pas l'interet de faire une manipulation comme celle ci qui est super "lourde" si on veut optimiser ses scripts...

    Quelqu'un de familier avec l'utilisation de mongoDB en php peut t'il m'aider?

    (ps: je ré-explique rapido: ajouter un commentaire à un article existant ^^)

    Cordialement, guillaume.
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si t'as l'id y'a pas de soucis, la tu récupères rien

  3. #3
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Cetait un exemple. Pour montrer la logique.

    Je cherche pas à récuperer quelque chose, je sais comment le faire ça

    Ce que j'aimerais, c'est pouvoir rajouter un commentaire à un article (qui a déjà des comments).

    ^^
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par radicaldreamer Voir le message
    Cetait un exemple. Pour montrer la logique.

    Je cherche pas à récuperer quelque chose, je sais comment le faire ça

    Ce que j'aimerais, c'est pouvoir rajouter un commentaire à un article (qui a déjà des comments).

    ^^
    c'est que je te dis, si t'as l'id de l'article y'a pas de soucis : qu'est ce qui te gene dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $article->update(array('_id' => $id), array('$set' => array('comments' => $comments)));
    le $id tu le récupère via GET ou POST,

  5. #5
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Bah cette ligne me mets à jour le array "comments".

    Mais ne rajoute pas, modifie... Les autres sont écrasés par le nouveau.

    Je n'ai pas d'autre moyen que de récuperer tout le array, de rajouter le dernier commentaire puis ensuite de mettre à jour.

    C'est fastidieux et ça alourdi "pour rien". Ce que je veux savoir, c'est s'il y a une autre solution plus simple qui me mettrait juste un commentaire à la suite.
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est pas un update mais un insert qu'il faut faire

  7. #7
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Je pense bien, mais je vois pas comment le faire

    Je débute avec mongoDB, j'ai beau chercher, je trouve pas.

    Je sais comment inserer un nouvel article, mais lui rajouter un commentaire, aucune idée; Si tu pouvais me montrer un exemple.

    J'suis plutot débrouillard mais là, je sèche ^^"
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par radicaldreamer Voir le message
    Je pense bien, mais je vois pas comment le faire

    Je débute avec mongoDB, j'ai beau chercher, je trouve pas.

    Je sais comment inserer un nouvel article, mais lui rajouter un commentaire, aucune idée; Si tu pouvais me montrer un exemple.

    J'suis plutot débrouillard mais là, je sèche ^^"
    comme ca non ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $article->insert(array('_id' => $id, 'comments' => $comments));
    sinon un findOne sur l'id et ensuite insert avec juste le array('comments' => $comments)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $article->findOne(array('_id' => $id))->insert(array( 'comments' => $comments));
    EDIT : regarde avec $push pour le update a la place du $set (désolé j'ai pas mon mongodb sous ma main, je fais un peu de tête)

  9. #9
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    je vais tester. Si c'est aussi simple que ça, je test de me mettre une balle
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  10. #10
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $comments = array('texte' => 'ca marche omg!', 'date' => '19-11-2010', 'auteur' => 'rikemSen_f13');
    $articles->findOne(array('auteur' => 'DJo'))->insert(array('comments' => $comments));
    Ne marche pas:
    Fatal error: Call to a member function insert() on a non-object
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    fais un var_dump de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $articles->findOne(array('auteur' => 'DJo'));

  12. #12
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Il me trouve correctement l'article... :/
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par radicaldreamer Voir le message
    Il me trouve correctdement larticle... :/
    t'as essayé avec $push

  14. #14
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Je vais tester ça aujourd'hui, j'te tiens au courant !

    En tout cas, merci de te pencher sur mon pb.
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  15. #15
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Magnifique!

    Merci stealth35!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $comments = array('texte' => 'ca marche omg!', 'date' => '19-11-2010', 'auteur' => 'myAuteur');
    $filter = array(
     'titre' => 'MongoDB exemple'
    );
     
    $articles->update($filter, array(
     '$push' => array('comments' => $comments))
    );
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Difference entre [Simple quote] & [Double quote]
    Par Invité dans le forum SQL
    Réponses: 3
    Dernier message: 24/07/2013, 12h24

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