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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Création API PHP


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2021
    Messages
    82
    Points
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2021
    Messages : 82
    Points : 43
    Par défaut Création API PHP
    Bonjour,

    Je suis actuellement en train de développer une api qui fonctionnerait ensuite avec une application angular. J'ai effectué divers test via Postman et cela ne fonctionne pas. J'aimerai comprend d'où vient mon erreur.

    Voici l'arborescence de mes fichiers :

    api / agency / editAgency.php et listAgency.php

    config / Database.php

    models / Agency.php


    Le code de database.php pour la connection à la bdd
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
    class Database {
        // Paramètres DB
        // Les attributs sont en mode "private" et ne sont donc accessibles qu'à l'intérieur de la classe
        private $host = "localhost";
        private $dbname = "mouttec";
        private $username = "root";
        private $password = "root";
        private $conn;
        // méthode de connection à la DB
        public function connect() {
            $this->conn = null;
            try {
                // Définition des otions de l'objet PDO
                // référence PDO : https://www.php.net/manual/en/book.pdo.php
                $options = [
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
                ];
                // Connection à la DB
                $this->conn = new PDO("mysql:host=$this->host;dbname=$this->dbname;charset=utf8", $this->username, $this->password, $options);
                 //echo "Succesfully connected to db";
            } catch (PDOException $error) {
                echo "Connection error : $error->getMessage()";
            }
            return $this->conn;
        }
    }
    Le code de mon models Agency.php
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
     
    <?php
    class Post {
        // Propriétés privées de connexion à la DB
        private $conn;
        private $table = "agencies";
        // Propriétés publiques de l'objet Post
        public $idAgency;
        public $nameAgency;
        public $numberAddressAgency;
        public $typeAddressAgency;
        public $nameAddressAgency;
        public $complementAddressAgency;
        public $zipAddressAgency;
        public $cityAddressAgency;
        public $phoneAgency;
        public $mailAgency;
        public $statusAgency;
        public $dateAgency;
     
        public function __construct($db) {
            $this->conn = $db;
        }
     
        public function createAgency() {
            $query = "
                INSERT INTO "
                . $this->table .
                " SET
                nameAgency = :nameAgency,
                numberAddressAgency = :numberAddressAgency,
                typeAddressAgency = :typeAddressAgency,
                nameAddressAgency = :nameAddressAgency,
                complementAddressAgency : :complementAddressAgency,
                zipAddressAgency = :zipAddressAgency,
                cityAddressAgency = :cityAddressAgency,
                phoneAgency = :phoneAgency,
                mailAgency = :mailAgency,
                statusAgency = :statusAgency,
                dateAgency = :dateAgency
            ";
     
            $stmt = $this->conn->prepare($query);
            $params = [
                "nameAgency" = $this->nameAgency,
                "numberAddressAgency" = $this->numberAddressAgency,
                "typeAddressAgency" = $this->typeAddressAgency,
                "nameAddressAgency" = $this->nameAddressAgency,
                "complementAddressAgency" : $this->complementAddressAgency,
                "zipAddressAgency" = $this->zipAddressAgency,
                "cityAddressAgency" = $this->cityAddressAgency,
                "phoneAgency" = $this->phoneAgency,
                "mailAgency" = $this->mailAgency,
                "statusAgency" = $this->statusAgency,
                "dateAgency" = date(dmY) //La date est retournée au format DDMMYYYY
            ];
     
            if ($stmt->execute($params)) {
                return true;
            }
            return false;
        }
     
        public function listAgencies() {
            $query = "
                SELECT *
                FROM "
                . $this->table . " 
                ORDER BY
                created_at DESC";
     
            $stmt = $this->conn->prepare($query);
            $stmt->execute();
     
            return $stmt;
        }
     
        public function searchAgency() {
            $query = "
            SELECT *
            FROM "
            . $this->table . " 
            WHERE nameAgency = :nameAgency
            LIMIT 0,1";
     
            $stmt = $this->conn->prepare($query);
            $params = ["nameAgency" => $this->nameAgency];
     
            if ($stmt->execute($params)) {
                $row = $stmt->fetch();    
                return $row;
            }
            return false;
        }
     
        public function updateAgency($id) {
            // On crée la requête
            $query = "
                UPDATE "
                . $this->table .
                " SET
                nameAgency = :nameAgency,
                numberAddressAgency = :numberAddressAgency,
                typeAddressAgency = :typeAddressAgency,
                nameAddressAgency = :nameAddressAgency,
                complementAddressAgency : :complementAddressAgency,
                zipAddressAgency = :zipAddressAgency,
                cityAddressAgency = :cityAddressAgency,
                phoneAgency = :phoneAgency,
                mailAgency = :mailAgency,
                statusAgency = :statusAgency,
                dateAgency = :dateAgency
                WHERE
                id = :id        
            ";
     
            $stmt = $this->conn->prepare($query);
            $params = [
                "nameAgency" = $this->nameAgency,
                "numberAddressAgency" = $this->numberAddressAgency,
                "typeAddressAgency" = $this->typeAddressAgency,
                "nameAddressAgency" = $this->nameAddressAgency,
                "complementAddressAgency" : $this->complementAddressAgency,
                "zipAddressAgency" = $this->zipAddressAgency,
                "cityAddressAgency" = $this->cityAddressAgency,
                "phoneAgency" = $this->phoneAgency,
                "mailAgency" = $this->mailAgency,
                "statusAgency" = $this->statusAgency,
            ];
     
            if ($stmt->execute($params)) {
                    return true;
                }
            return false;
        }
     
        public function deleteAgency($id) {
            $query = "
                DELETE
                FROM " . $this->table .
                " WHERE id = :id
            ";
     
            $stmt = $this->conn->prepare($query);
            $params = ["id" => $this->id];
     
            if($stmt->execute($params)) {
                return true;
            }
            return false;
        }
    }

    Le code de pour la création de la liste

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?php
     
    //ini_set('display_errors', 1);
    //ini_set('display_startup_errors', 1);
    //error_reporting(E_ALL);
     
    // On envoie les headers
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: POST");
    header("Content-Type: application/json");
    header("Access-Control-Allow-Headers: Access-Control-Allow-Headers, Access-Control-Allow-Methods, Content-Type, Authorization, X-Requested-With");
     
    // On inclus les objets (ou classes) nécessaires
    include_once "../../config/Database.php";
    include_once "../../models/Agency.php";
     
    // Si données en json
    $decodedData = json_decode(file_get_contents("php://input"));
     
    $agency = array();
    foreach ($decodedData as $key => $value) {
        array_push($agency, array($key => $value));
    }
     
    $db = new Database();
    $conn = $db->connect();
    $agencyRequest = new Agency($conn);
    $agencyExists = $agencyRequest->searchAgency($agency['nameAgency']);
     
    //On regarde quelle action de Read est demandée
    switch ($agency['action']) {
        case 'editAgency':
            if (!empty($agencyExists)) {
                $result = $agencyRequest->updateAgency($agency);
            } else { 
                $result = $agencyRequest->createAgency($agency);
            }
            break;
        // case 'changePassword':
        //     if (!empty($agencyExists) 
        //         && (password_verify($oldPassword, $agency['mixedPassword']) 
        //             || $_SESSION('superAdmin' == 1))) {
        //         $agencyRequest->passwordUpdate($agency); 
        //     }
        //     break;
        case 'deleteAgency':
            $result = $agencyRequest->deleteAgency($agency['idAgency']);
            break;
        default:
        	$result = false;
            break;
    }
     
    if ($result) {
        echo json_encode([ "message" => "L'agence a été éditée !" ]);
    } else {
        echo json_encode([ "message" => "L'agence n'a pas pu être éditée..." ]);
    }
    Au niveau des erreurs sur Postmann, il sort cela

    Unexpected '<'


    Je ne sais plus quoi faire. Cela fait des jours que je bloque.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 499
    Points
    15 903
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 499
    Points : 15 903
    Par défaut
    quand vous allez à l'URL que postman appelle, vous voyez quel résultat ?

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2021
    Messages
    82
    Points
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2021
    Messages : 82
    Points : 43
    Par défaut
    voila mon résultat sur postman

    Nom : Capture d’écran 2021-03-21 à 18.15.01-min (1).png
Affichages : 217
Taille : 326,5 Ko

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 499
    Points
    15 903
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 499
    Points : 15 903
    Par défaut
    au dessus du message "unexpected...", cliquez sur "raw" pour voir s'il y a une différence avec l'objet json qui est juste au dessus sur votre image.

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2021
    Messages
    82
    Points
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2021
    Messages : 82
    Points : 43
    Par défaut
    Voici l'erreur qui me sort dans l'onglet raw

    <br />
    <b>Parse error</b>: syntax error, unexpected '=', expecting ']' in <b>/Applications/MAMP/htdocs/MoutteCAPI/backend/models/Agency.php</b> on line <b>44</b><br />

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Points
    1 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Par défaut
    attention un tableau associatif comporte le signe => et non le signe =
    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
     
     
     $params = [
                "nameAgency" = $this->nameAgency,
                "numberAddressAgency" = $this->numberAddressAgency,
                "typeAddressAgency" = $this->typeAddressAgency,
                "nameAddressAgency" = $this->nameAddressAgency,
                "complementAddressAgency" : $this->complementAddressAgency,
                "zipAddressAgency" = $this->zipAddressAgency,
                "cityAddressAgency" = $this->cityAddressAgency,
                "phoneAgency" = $this->phoneAgency,
                "mailAgency" = $this->mailAgency,
                "statusAgency" = $this->statusAgency,
                "dateAgency" = date(dmY) //La date est retournée au format DDMMYYYY
            ];
    tu aurais pu écrire ceci:
    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
     
     
     $params = [
                "nameAgency" => $this->nameAgency,
                "numberAddressAgency" => $this->numberAddressAgency,
                "typeAddressAgency" => $this->typeAddressAgency,
                "nameAddressAgency" => $this->nameAddressAgency,
                "complementAddressAgency" => $this->complementAddressAgency,
                "zipAddressAgency" => $this->zipAddressAgency,
                "cityAddressAgency" => $this->cityAddressAgency,
                "phoneAgency" => $this->phoneAgency,
                "mailAgency" => $this->mailAgency,
                "statusAgency" => $this->statusAgency,
                "dateAgency" => date(dmY) //La date est retournée au format DDMMYYYY
            ];

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

Discussions similaires

  1. [PHP 5.4] Tentative de création serveur PHP => WebSocket API [HandShack]
    Par mikadev dans le forum Langage
    Réponses: 0
    Dernier message: 19/11/2014, 22h26
  2. Aide création page php
    Par TheBananier dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2007, 16h06
  3. INFO AU SUJET DE L API PHP de Filemaker
    Par rbas1 dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 25/10/2006, 18h31
  4. [Configuration] Création en php de sous sites
    Par guiguistuder dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 19/09/2006, 00h56

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