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 18/11/2010, 23h33   #1
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
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 :
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 :
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.
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 00h20   #2
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
si t'as l'id y'a pas de soucis, la tu récupères rien
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 00h33   #3
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
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).

^^
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 00h41   #4
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
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 :
$article->update(array('_id' => $id), array('$set' => array('comments' => $comments)));
le $id tu le récupère via GET ou POST,
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 00h45   #5
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
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.
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 00h57   #6
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
c'est pas un update mais un insert qu'il faut faire
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 01h00   #7
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
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 ^^"
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 01h07   #8
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
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 :
$article->insert(array('_id' => $id, 'comments' => $comments));
sinon un findOne sur l'id et ensuite insert avec juste le array('comments' => $comments)
Code :
$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)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 01h10   #9
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
je vais tester. Si c'est aussi simple que ça, je test de me mettre une balle
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 01h30   #10
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Code :
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:
Citation:
Fatal error: Call to a member function insert() on a non-object
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 10h37   #11
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
fais un var_dump de :
Code :
$articles->findOne(array('auteur' => 'DJo'));
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 16h41   #12
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Il me trouve correctement l'article... :/
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 16h46   #13
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
Citation:
Envoyé par radicaldreamer Voir le message
Il me trouve correctdement larticle... :/
t'as essayé avec $push
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 11h25   #14
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Je vais tester ça aujourd'hui, j'te tiens au courant !

En tout cas, merci de te pencher sur mon pb.
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 14h21   #15
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Magnifique!

Merci stealth35!

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



Fuseau horaire GMT +2. Il est actuellement 09h41.


 
 
 
 
Partenaires

Hébergement Web