Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с запросом / 11 сообщений из 11, страница 1 из 1
09.09.2015, 12:17:33
    #39046753
bocharov56
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
Всем привет. Ситуация у меня такая. Я админ одного букса.

Мне нужно сделать страницу пользователей, у которых нет реферера.

Есть таблица с пользователями tb_users в которой прописаны id , username .
Есть еще одна таблица bannedUsers , в которой отображаются забаненные пользователи из таблицы tb_users. В таблице bannedUsers прописаны id и name .

Условие:
id в обеих таблицах могут как совпадать, так и отличаться .

Нужно вывести id и username пользователей из tb_users, но при этом исключить тех, что указаны в bannedUsers.
Также из таблицы tb_users необходимо исключить пользователя с id=1 или username=Admin.

Я это пытаюсь сделать так:

автор<?php

$all_users_no_ref = 0;
$sql = mysql_query(
"SELECT `u`.`id`, `b`.`id` as `banned` ".
"FROM `tb_users` as `u` ".
"LEFT JOIN `bannedUsers` as `b` ".
"ON `u`.`username`=`b`.`name` ".
"WHERE `u`.`referer`= '';"
);
while ($row = mysql_fetch_assoc($sql)) {

if (!is_null($row['banned'])) continue;
if ($row['id'] == 1) continue;

$all_users_no_ref++;
}

if($all_users_no_ref>0){
echo 'Всего свободных рефералов: <b>'.$all_users_no_ref.'</b><br/>';

//begin navigation

require("navigator/navigator.php");

$perpage = 20;
$count = $all_users_no_ref;
$pages_count = ceil($count / $perpage);
$page = (isset($_GET["page"]) && preg_match("|^[0-9\-]{1,11}$|", trim($_GET["page"]))) ? intval(trim($_GET["page"])) : "1";
if ($page > $pages_count | $page<0) $page = $pages_count;
$start_pos = ($page - 1) * $perpage;
if($start_pos<0) $start_pos = 0;

universal_link_bar($count, $page, $_SERVER['PHP_SELF'], $perpage, 10, '?page=', "");

//end navigation

echo '<table class="tables">';

echo '<thead><tr align="center">';
echo '<th>Логин, Id</th>';
echo '</tr></thead>';

$sql = mysql_query("SELECT `id`,`username` FROM `tb_users` WHERE `referer`='' ORDER BY `id` ASC LIMIT $start_pos,$perpage");
if(mysql_num_rows($sql)>0) {
while ($row = mysql_fetch_row($sql)) {

$bannedname = $row["1"];
if(mysql_num_rows(mysql_query("SELECT `id` FROM `bannedUsers` WHERE `name` = '".$bannedname."' LIMIT 1 ")) > 0){
$name_banned = '1';
}else {$name_banned = '0';}

if ($name_banned == 1) continue; //исключаем забаненных
if (in_array($row['0'], array(1))) continue; //исключаем пользователя с Id=1

echo '<tr>';
echo '<td align="left">';
echo '<b title="Логин">'.$row["1"].'</b> - <span title="Id">'.$row["0"].'</span><br/>';
echo '</td>';
echo '</tr>';
}
}

echo '</table><br/>';

universal_link_bar($count, $page, $_SERVER['PHP_SELF'], $perpage, 10, '?page=', "");

}else{
echo 'Пользователей не найдено.';
}

?>

В принципе пользователей исключить получается, но есть проблема. На каждой странице отображается разное количество пользователей. Т.е. не 20, а за вычетом забаненных. Например на одной странице 15, на другой 18, на 3 -12. Везде по разному.

Помогите понять в чем дело.
...
Рейтинг: 0 / 0
09.09.2015, 12:49:07
    #39046829
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
Вопросы по PHP задают в форуме по PHP. А тут раздел по MySQL, и этот PHP-хлам мало кому нужен...

bocharov56в чем дело.
Вот странно... ты берёшь 20 записей, выкидываешь из них неподходящие... совершенно непонятно, какого хрена их получается каждый раз по-разному на странице.
...
Рейтинг: 0 / 0
09.09.2015, 12:52:36
    #39046838
bocharov56
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
Если я разместил вопрос не в том месте, то прошу модераторов перенести его.

Просто у меня в коде и php и mysql присутствует.
...
Рейтинг: 0 / 0
09.09.2015, 12:57:28
    #39046849
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
Задавая вопрос по MySQL, следует показывать только SQL-запрос, причём в том виде, в каком он уходит на сервер, а не PHP-код, который его формирует.
...
Рейтинг: 0 / 0
09.09.2015, 13:00:28
    #39046856
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
bocharov56Просто у меня в коде и php и mysql присутствует.Вы определитесь каким именно средствами будете решать задачу - с помощью PHP или SQL. Соответственно, код должен быть на этом языке.
bocharov56Есть таблица с пользователями tb_users в которой прописаны id , username .
Есть еще одна таблица bannedUsers , в которой отображаются забаненные пользователи из таблицы tb_users. В таблице bannedUsers прописаны id и name .

Условие:
id в обеих таблицах могут как совпадать, так и отличаться .

Нужно вывести id и username пользователей из tb_users, но при этом исключить тех, что указаны в bannedUsers.
Также из таблицы tb_users необходимо исключить пользователя с id=1 или username=Admin.Связь между таблицами, как я понимаю, по username?
Код: sql
1.
2.
3.
4.
5.
SELECT tb_users.id, tb_users.username
FROM tb_users LEFT JOIN bannedUsers ON tb_users.username=bannedUsers.username
WHERE bannedUsers.username IS NULL
  AND tb_users.id <> 1
  AND tb_users.username <> 'Admin'
...
Рейтинг: 0 / 0
09.09.2015, 13:04:19
    #39046860
bocharov56
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
miksoft,

В таблице tb_users надо брать username и проверить есть ли в bannedUsers такое имя? Если есть то, его из выдачи исключаем, если нету, то проверяем следующего.

На каком языке надо делать? Так тут я не совсем грамотный человек. Только пытаюсь разобраться.
...
Рейтинг: 0 / 0
09.09.2015, 13:13:09
    #39046877
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
bocharov56В таблице tb_users надо брать username и проверить есть ли в bannedUsers такое имя? Если есть то, его из выдачи исключаем, если нету, то проверяем следующего.Именно для этого запрос я и написал.
...
Рейтинг: 0 / 0
09.09.2015, 13:15:16
    #39046883
bocharov56
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
miksoft,

Щас попробую.
...
Рейтинг: 0 / 0
09.09.2015, 14:37:48
    #39047031
bocharov56
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
miksoft,

Спасибо большое, немного адаптировал под свою таблицу (просто у меня там больше столбцов) и все заработало.
...
Рейтинг: 0 / 0
13.09.2015, 15:07:05
    #39050271
Омск
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
Я не пойму что за ошибка при вводе данных.
Пишу через командную строку Mysql

mysql> insert into raskleika ('ул. Ленина 10', 'расклейка', '02.08.2015', 'примечание');

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near ''ул.
Ленина 10', 'расклейка', '02.08.2015', 'примечание')' at line 1

В чем тут ошибка?

У всех полей тип char, 50 символов.

Еще в программе Mysql Workbench в этой же базе данных такой запрос делал:

select * from omkc;

И такое сообщение было:
table omkc.omkc doesn't exists

Отчего эти ошибки? И как правильно ввести?
...
Рейтинг: 0 / 0
13.09.2015, 16:08:28
    #39050295
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста с запросом
Омск,

Ошибка в синтаксисе оператора INSERT. он не так пишетсяю Читать тут: INSERT
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с запросом / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]