public function save($question) { $fields = $question->getFields(); if ($question->id_question == DAO::UNKNOWN_ID) { unset($fields['id_question']); $champs = $valeurs = ''; foreach ($question as $nomChamp => $valeur) { if ($nomChamp == 'id_question') { continue; } $champs .= $nomChamp . ', '; if ($valeur === NULL) { $valeurs .= 'NULL, '; unset($fields[$nomChamp]); } else { $valeurs .= ":{$nomChamp}, "; } } $champs = substr($champs, 0, -2); $valeurs = substr($valeurs, 0, -2); $req = $this->pdo->prepare("INSERT INTO question({$champs}) VALUES({$valeurs})"); if ($req->execute($fields)) { $question->id_question = $this->pdo->lastInsertId(); return $question; } return false; } else { unset($question->id_question); $newValeurs = ''; foreach ($question as $nomChamp => $valeur) { if ($valeur === NULL) { $newValeurs .= $nomChamp . ' = NULL, '; unset($fields[$nomChamp]); } else { $newValeurs .= "{$nomChamp} = :{$nomChamp}, "; } } $newValeurs = substr($newValeurs, 0, -2); $clarifierDAO = new ClarifierDAO(BDD::getInstancePDO()); $clarifierDAO->deleteAllForOneQuestion($fields['id_question']); $req = $this->pdo->prepare("UPDATE question SET {$newValeurs} WHERE id_question = :id_question"); return $req->execute($fields); } }