make_project_with_php_sql_probème с показом результата json - PullRequest
0 голосов
/ 02 мая 2020

Я новичок в PHP и переполнении стека, поэтому, если я ошибусь при публикации, извините, я пытаюсь сделать мой сайт Facebook или Twitter.

мой учитель обязан использовать структуру, которую вы увидите на моих страницах, цель, которую он использовал таким образом, а не с другой структурой.

Во-первых, у меня есть три таблицы с

  • sql: сообщения / подписки / пользователи

  • сообщения содержат столбцы: id / author / content / datetime

  • подписки содержат столбцы: подписчик / target

пользователи содержат столбцы: логин / псевдо / описание / пароль / avatar_type /avatar_small/avatar_large.

теперь моя проблема заключается в создании страницы с именем: services / findMessages . php (поток сообщений отфильтрован по автору) с параметром: author, before, count ...

author: идентификатор пользователя, это значение по умолчанию пусто .. если оно тогда пусто там нет фильтра.

до: идентификатор м essage, это значение по умолчанию пустое, только сообщения с идентификатором

0, это значение по умолчанию 15, максимальное количество сообщений.

result:

{
messageId : identifiant ,
author : author ,
pseudo : pseudo  of author ,
content :  content of message ,
datetime : date of publication on format ISO 8601 (format sended by PostgreSQL)
}

Возможные ошибки: отсутствует или указан неверный параметр (а). Пользователь не существует.

NB1: отсутствие сообщения, соответствующего критериям, не является ошибкой. Возвращенный массив пуст, в данном случае ..

NB2: я должен сделать это с json.

mu Функция findMessages не с тем же файлом findMessages в моем проекте.

Я бы также сказал, что то, что он показывает мне, а не то, что он упомянул, я не вижу результатов. Спасибо за вашу помощь

    function findMessages($author="null",$before="null",$count=15){
       $sql = <<<EOD
       select rezozio.message.id,
             rezozio.message.author,
         rezozio.message.content,
          rezozio.message.datetime,
          rezozio.users.pseudo  
from messages, users
where rezozio.message.id < $before and rezozio.messages.author=users.login
EOD;
      $stmt = $this->connexion->prepare($sql);
      $stmt->bindValue(':messageId',$messageId);
      $stmt->bindColumn(':author',$author);
      $stmt->bindColumn(':pseudo',$pseudo);
      $stmt->bindColumn(':content',$content);
      $stmt->bindColumn(':datetime',$datetime);

      $stmt->execute();
      $res = $stmt->fetch();
        return ['messageId'=>$messageId,'author'=>$author,'pseudo'=>$pseudo,'content'=>$content,'datetime'=>$datetime];

    }

on my page findMessages i have this <?php
spl_autoload_register(function ($className) {
    include ("lib/{$className}.class.php");
});
date_default_timezone_set ('Europe/Paris');

set_include_path('..');

header('Content-type: application/json; charset=UTF-8');


require_once('lib/watchdog_service.php');
require_once('lib/common_service.php');



$args = new RequestParameters();
$args->defineNonEmptyString('author');
$args->defineNonEmptyString('before');
$args->defineNonEmptyString('count');

if ($args->isValid())
    try{
        $data = new DataLayer();
    if (isset($_SESSION['ident'])&&!empty($_SESSION['ident'])){
        $infomsg = $data->findMessages($args->author,$args->before,$args->count);


    $response=['status'=>'ok','args'=>$args->author,'result'=>$infomsg];
    $response['args']['before'] =$before;
    $response['args']['count'] =$count;

    echo json_encode($response);}   


    else produceError("messageId {$args->messageId} not foud!");}

   catch (PDOException $e){produceError($e->getMessage());}   
else
    produceError( implode(' ',$args->getErrorMessages()) );












?>

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...