Вы создаете для каждой строки фиктивный столбец с именем type
, применяя необходимое условие,
со значением 0 или 1 и суммируя по нему:
select t.username, sum(t.type) num_of_signed_docs from (
select a.username,
case
when event = 'reject' then 0
when exists
(select 1 from audit where doc_id = a.doc_id and
datetime > a.datetime and event = 'reject')
then 0
else 1 end as type
from audit a
) t
group by t.username
См. демо для SQL Server
и демо для MySQL
Редактировать
[ 1111]
select a.username, count(distinct a.doc_id) num_of_signed_docs
from audit a
where
a.event = 'sign'
and
not exists (
select 1 from audit where
doc_id = a.doc_id and datetime > a.datetime and event = 'reject'
)
group by a.username
Вы не можете сделать это с чистым PHP. Вы должны сделать это с помощью JavaScript. О том, как это сделать, написано несколько статей.
По сути, вы можете установить cookie или даже использовать Ajax для отправки информации в сценарий PHP. Если вы используете jQuery, вы можете сделать это примерно так:
jquery:
$(function() {
$.post('some_script.php', { width: screen.width, height:screen.height }, function(json) {
if(json.outcome == 'success') {
// do something with the knowledge possibly?
} else {
alert('Unable to let PHP know what the screen resolution is!');
}
},'json');
});
PHP (some_script.php)
<?php
// For instance, you can do something like this:
if(isset($_POST['width']) && isset($_POST['height'])) {
$_SESSION['screen_width'] = $_POST['width'];
$_SESSION['screen_height'] = $_POST['height'];
echo json_encode(array('outcome'=>'success'));
} else {
echo json_encode(array('outcome'=>'error','error'=>"Couldn't save dimension info"));
}
?>
Все это действительно базовое, но оно должно вас куда-то привести. Однако обычно разрешение экрана - это не то, что вам нужно. Возможно, вас больше заинтересует размер фактического порта просмотра браузера, поскольку именно здесь отображается страница ...
Вот код JavaScript: (index.php)
<script>
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "/sqldb.php", true);
xhttp.send("screensize=",screen.width,screen.height);
</script>
Вот является Кодом PHP: (sqldb.php)
$data = Вот код JavaScript: (index.php)
[110] Вот является Кодом PHP: (sqldb.php)
[111] я надеюсь, что Вы знаете, как получить $userid от Сессии, и для этого Вам нужны База данных с вызываемыми пользователями Таблицы и Таблица внутренние пользователи, названные экраном;=) KSP
отношенийPOST['screensize'];
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$statement = $pdo->prepare("UPDATE users SET screen= :screen WHERE id = $userid");
$statement->execute(array('screen' => $data));
я надеюсь, что Вы знаете, как получить $userid от Сессии, и для этого Вам нужны База данных с вызываемыми пользователями Таблицы и Таблица внутренние пользователи, названные экраном;=) KSP
отношенийPHP работает только на стороне сервера, а не на хосте пользователя. Используйте JavaScript или jQuery, чтобы получить эту информацию и отправить через AJAX или URL (? X = 1024 & y = 640).
Используйте JavaScript ( screen.width
и screen.height
IIRC, но я могу ошибаться, давно не делал JS). PHP не может этого сделать.
PHP - это серверный язык - он выполняется только на сервере, а результирующий вывод программы отправляется клиенту. Таким образом, нет доступной информации о «экране клиента».
Тем не менее, вы можете попросить клиента сообщить вам, какое у него разрешение экрана, через JavaScript. Напишите небольшой скриптлет для отправки вам screen.width и screen.height - возможно, через AJAX или, что более вероятно, с начальной «страницей перехода», которая его находит, а затем перенаправляет на http://example.net/index.php ? size = AxB
Хотя я и как пользователь, я бы предпочел, чтобы вы разработали сайт, который плавно работал с любым разрешением экрана. Я просматриваю окна разного размера, в основном не развернутые.
Единственный способ - использовать javascript, а затем заставить javascript отправить его на свой php (если вам действительно нужна сторона сервера res). Однако это совершенно не удастся, если они отключат javascript.