Я новичок в 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()) );
?>