Bonjour,
J'utilise une classe 'connectDB.php' dans laquelle j'ai definie mes fonctions CRUD et tout fontionne bien sauf la fonction updateOne
Voici la definition de la fonction (dans la page connectDB.php) :
class connectDB
{
function __construct ()
{
$this->db = (new MongoDB\Client)->TechnoDB->admins;
/*TechnoDB : DB name
admins : collection name*/
}
public function editAdmin( $editInfo = [])
{
$edited = $this->db->updateOne(
['_id'=>$editInfo['_id']],
['$set' =>['username' =>$editInfo['username'],
'name'=>$editInfo['name'],
'email'=>$editInfo['email'] ]],
['multi' => false, 'upsert' => false]
);
return $edited;
}
Et voici la page dans laquelle je fais l'appel a cette fonction:
$db = new connectDB;
.
.
.
$edited=$db->editAdmin (
['_id'=>new MongoDB\BSON\ObjectID($id)],
['$set' =>
['username' =>$_POST['U'],
'name'=>$_POST['N'],
'email'=>$_POST['E']]
],
['multi' => false, 'upsert' => false]
);
print_r($edited->getModifiedCount());
print_r($edited->getMatchedCount());
Et la partie html:
<input type='text' name='U' id='U' class='form-control' placeholder='Username' >
<input type='text' name='N' id='N' class='form-control' placeholder='Name' >
<input type='text' name='E' id='E' class='form-control' placeholder='E_mail'>
Et voici les erreurs!
Notice: Undefined index: username in C:\xampp\htdocs\phpmongodb\TM\connectDB.php on line 34
Notice: Undefined index: name in C:\xampp\htdocs\phpmongodb\TM\connectDB.php on line 35
Notice: Undefined index: email in C:\xampp\htdocs\phpmongodb\TM\connectDB.php on line 36
Tes variables ne sont pas postées
<form method="POST" action="PAGE PHP">
<input type='text' name='U' id='U' class='form-control' placeholder='Username' / >
<input type='text' name='N' id='N' class='form-control' placeholder='Name' / >
<input type='text' name='E' id='E' class='form-control' placeholder='E_mail' />
<input type="submit" />
</form>
Pour éviter de rabacher les
$_POST['U'] //etc...
tu peux utiliser la fonction extract($_POST) et tes varible seront nommée de la façon $NAME où name est ne nom donnée tes balises html
Merci MehdiKacim pour ta reponse mais en fait mes variables sont postées etc et les functions getMatchedCount() et getModifiedCount() me retournent que les variables ont eu une mise a jour sauf le probleme c'est qu'elles prennet le 'vide' (comme si j'ai rien ecrit au formulaire :/ )
Salut,
Tu passe 3 tableaux dans ton edit admin au lieu de 1.
Essaye comme ça :
$edited=$db->editAdmin ([
'_id'=>new MongoDB\BSON\ObjectID($id),
'username' =>$_POST['U'],
'name'=>$_POST['N'],
'email'=>$_POST['E']]
]);