diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..cdc4a95c78df85c3d9b151a2c8840c79eb47e356 --- /dev/null +++ b/README.md @@ -0,0 +1,140 @@ +# Documentation +## Objet +Les fonctions publiques statiques retournent des arrays se basant sur ce format : +````php +[ + "status" => "fail|success", + "message" => "message d'erreur" +] +`````` + +### addObject +Permet d'insérer un objet dans la base de données +* @param String $tableName +* @param array $columns +* @return array|string[] + +Le paramètre ``$columns`` doit être un array indexé comme ceci : +````php +[ + "index" => "valeur", + "index2" => "valeur2" +] +```` + +Retourne en plus `pdoError` de l'index `message` en cas d'erreur. +````php +[ + "status" => "fail", + "message" => "L'insertion de l'objet a échoué.", + "pdoError" => $e +] +```` + +### describeObject +Permet de décrire une table représentant un objet. Exécute ``SHOW FULL COLUMNS FROM $tableName`` sur le serveur. +* @param $tableName +* @return array + +Retourne ``columns``. +````php +[ + "status" => "success", + "columns" => [ + // Colonnes du retour de la commande sql + ] +] +```` + +### modifyObject +Permet la modification d'un objet dans la base de données +* @param String $tableName +* @param array $id +* @param array $columns +* @return array|string[] + +Le paramètre ``$id`` doit respecter ce format : +````php +[ + "name" => "nom_de_la_colonne", + "value" => "Valeur de la clé primaire" +] +```` + +Le paramètre ``$columns`` doit être un array indexé comme ceci : +````php +[ + "index" => "valeur", + "index2" => "valeur2" +] +```` + +### getObject +Permet la récupération d'un objet depuis la base de données +* @param string $tableName +* @param array $id +* @return array|string[] + +Le paramètre ``$id`` doit respecter ce format : +````php +[ + "name" => "nom_de_la_colonne", + "value" => "Valeur de la clé primaire" +] +```` + +Retourne ``data`` avec les colonnes de l'objet demandé. +````php +[ + "status" => "success", + "message" => "Récupération réussie.", + "data" => [ + // Colonnes + ] +] +```` + +### verifyTableAndFormat +Permet de vérifier le format du nom de la table et des nom des colonnes + vérifier l'existance de la table. +* @param String $tableName +* @param array|null $columns +* @return array|string[] + +Le paramètre ``$columns`` est optionnel. Renverra en plus `pdoError` de l'index `message` en cas d'erreur si `$columns` +a été utilisé. +````php +[ + "status" => "fail", + "message" => "Le format du nom de la table est incorrect." +] +```` +````php +[ + "status" => "fail", + "message" => "La table $tableName ne semble pas exister.", + "pdoError" => $e +] +```` +````php +[ + "status" => "success", + "message" => "Validation réussie." +] +```` + +## Routes +Les pages sont générées à partir du paramètre url ``action=nomDeLaPage``. +```php +"lireAuteur" => ControleurAuteur::lireAuteur(), +"lireAuteurs" => ControleurAuteur::lireAuteurs(), +"creerObjet" => ControleurObjet::createObject(), +"lireAdherent" => ControleurAdherent::lireAdherent(), +"lireAdherents" => ControleurAdherent::lireAdherents(), +"lireLivre" => ControleurLivre::lireLivre(), +"lireLivres" => ControleurLivre::lireLivres(), +"describeTable" => ControleurObjet::describeTable(), +default => ControleurAuteur::lireAuteur(), +``` + +### describeTable +describeTable retourne le résultat de ``ControleurObjet::describeTable()`` au format JSON. \ No newline at end of file diff --git a/models/Objet.php b/models/Objet.php index 67aef6b4e4ca194df64403762071ff736ca825f0..43cd3e8b08754cebc666c51b402fe55787ea7871 100644 --- a/models/Objet.php +++ b/models/Objet.php @@ -99,6 +99,13 @@ class Objet } } + /** + * Permet la modification d'un objet dans la base de données + * @param String $tableName + * @param array $id + * @param array $columns + * @return array|string[] + */ public static function modifyObject(String $tableName, array $id, array $columns) : array { $result["status"] = "success"; @@ -132,13 +139,53 @@ class Objet return $result; } + /** + * Permet la récupération d'un objet depuis la base de données + * @param string $tableName + * @param array $id + * @return array|string[] + */ + public static function getObject(string $tableName, array $id) : array + { + $validation = Objet::verifyTableAndFormat($tableName); + if($validation["status"] !== "success"){ + return $validation; + } + if(empty($id["name"]) || empty($id["value"]) || !isAlphaNumeric($id["name"])){ + return [ + "status" => "fail", + "message" => "L'identifiant de la table envoyé est incorrect!" + ]; + } + + // On prépare la requête + $queryString = ("SELECT * FROM $tableName WHERE " . $id["name"] . "=?"); + $insertQuery = Database::pdo()->prepare($queryString); + try{ + // Et on l'exécute + $insertQuery->execute([$id["name"]]); + } catch (PDOException $e) { + return [ + "status" => "fail", + "message" => "La récupération de l'objet a échoué.", + "pdoError" => $e + ]; + } + + return [ + "status" => "success", + "message" => "Récupération réussie.", + "data" => $insertQuery->fetch(PDO::FETCH_ASSOC) + ]; + } + /** * Permet de vérifier le format du nom de la table et des nom des colonnes + vérifier l'existance de la table. * @param String $tableName - * @param array $columns + * @param array|null $columns * @return array|string[] */ - public static function verifyTableAndFormat(string $tableName, array $columns) : array + public static function verifyTableAndFormat(string $tableName, array $columns = null) : array { // On va vérifier que $tableName est bien en format alphanumérique if(!isAlphaNumeric($tableName)){ @@ -159,15 +206,15 @@ class Objet ]; } - // Nous pouvons commencer l'insertion - - // On va vérifier que l'index de chaque est bien en format alphanumérique - foreach($columns as $index => $value){ - if(!isAlphaNumeric($index)){ - return [ - "status" => "fail", - "message" => "Le format " . htmlspecialchars($index) . " est incorrect." - ]; + if(!is_null($columns)){ + // On va vérifier que l'index de chaque est bien en format alphanumérique + foreach($columns as $index => $value){ + if(!isAlphaNumeric($index)){ + return [ + "status" => "fail", + "message" => "Le format " . htmlspecialchars($index) . " est incorrect." + ]; + } } } return [