С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
1

Не правильно выводит данные о пользователе

26.03.2016, 21:05. Показов 614. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$query = mysql_query("SELECT * FROM `session` ORDER BY `putdate` DESC");
  $query1 = mysql_query("SELECT * FROM `users` WHERE `user_id`='$_COOKIE[I]'");
  $item1 = mysql_fetch_array($query1);
  while ($item = mysql_fetch_array ($query)){
?>
<tr class="text-center">
  <td><?=$item['id_session']?></td>
  <td><?=$item['link']?></td>
  <td><?php echo date("d.m.Y в H:i:s",strtotime($item["putdate"]));?></td>
  <td><?=$item1['username']?></td>
</tr>
<?php } ?>
Вот тут: <td><?=$item1['username']?></td> у всех пользователей почему то вводит один и тот же логин (мой), хотя в статистике (в бд) в данный момент всего 1 авторизованный пользователь. Помогите исправить.
В $_COOKIE['I'] ид пользователя.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2016, 21:05
Ответы с готовыми решениями:

Не правильно выводит данные
Здравствуйте, есть такой запрос SELECT COUNT(DISTINCT `tv_tid`) AS `tcnt`, ...

Не правильно выводит данные код
Доброго времени суток такая проблема решил вывести формулу для эксперимента посмотрел на одном...

Запись динамического массива в файл (не правильно выводит данные)
Выделяю память под массив, заполняю его числами. int *mem_arr; int i; int n = 50;...

Данные о пользователе
Подскажите, как можно изменить (некоторые убрать и что-то добавить) данные, которые пользователь...

15
2170 / 1653 / 840
Регистрация: 10.01.2015
Сообщений: 5,192
26.03.2016, 21:21 2
Вероятно, из-за того, что в условии $_COOKIE[I] ключ массива без кавычек. Это же не числовой ключ.
Попробуйте так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$I = $_COOKIE['I'];
$query = mysql_query("SELECT * FROM `session` ORDER BY `putdate` DESC");
$query1 = mysql_query("SELECT * FROM `users` WHERE `user_id`='$I'");
$item1 = mysql_fetch_array($query1);
  while ($item = mysql_fetch_array ($query)){
?>
<tr class="text-center">
  <td><?=$item['id_session']?></td>
  <td><?=$item['link']?></td>
  <td><?php echo date("d.m.Y в H:i:s",strtotime($item["putdate"]));?></td>
  <td><?=$item1['username']?></td>
</tr>
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
26.03.2016, 21:40  [ТС] 3
Пифагор, все равно так-же, 7 пользователей на сайте, я один авторизован. У всех пишет мой логин.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
26.03.2016, 21:43 4
Что содержится в таблице "session"?
0
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
26.03.2016, 21:53  [ТС] 5
Para bellum, ид пользователя, если зарегистрирован, дата, ип адрес, ссылку где находится.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
26.03.2016, 21:59 6
Попробуйте так:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$query = mysql_query(
    "SELECT `s`.*, `u`.`username` 
        FROM `session` `s` 
        LEFT JOIN `users` `u` 
    ON `u`.`id`=`s`.`user_id` 
    ORDER BY `putdate` DESC"
);
 
while ($item = mysql_fetch_array ($query)):
?>
<tr class="text-center">
  <td><?=$item['id_session']?></td>
  <td><?=$item['link']?></td>
  <td><?php echo date("d.m.Y в H:i:s",strtotime($item["putdate"]));?></td>
  <td><?=$item['username']?></td>
</tr>
<?php endwhile;?>
Добавлено через 51 секунду
1) Поменяйте имена полей на свои, если они не совпадают с указанными в примере.
2) mysql_* функции устарели.
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
26.03.2016, 22:59  [ТС] 7
Para bellum, все, разобрался, добавил условие:
PHP
1
2
3
4
<td><?=$item['id_session']?></td>
  <td><?=$item['link']?></td>
  <td><?php echo date("d.m.Y в H:i:s",strtotime($item["putdate"]));?></td>
  <td><?php if($item['user'] == $item1['user_id']){ echo $item1['username'];}?></td>
Добавлено через 52 минуты
Para bellum, нет, если второй авторизованный пользователь заходит, у него отображает себя, у меня отображает меня... То-есть мы друг друга не видим...
А Ваш вариант выдает ошибку:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in в строке while

Добавлено через 1 минуту
Мне просто не хочется в куках держать логин пользователя... Вот и хочу сделать сравнение, что user в таблице session равен user_id в таблице users. И вывести вместо id, что в куках, логин пользователя...

Добавлено через 4 минуты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$query = mysql_query("SELECT * FROM `session` ORDER BY `putdate` DESC");
  while ($item = mysql_fetch_array ($query)){
      $q = mysql_query("SELECT * FROM `users` WHERE `user_id`='$item[user]'");
        $item1 = mysql_fetch_array ($q);
?>
<tr class="text-center">
  <td><?=$item['id_session']?></td>
  <td><?=$item['link']?></td>
  <td><?php echo date("d.m.Y в H:i:s",strtotime($item["putdate"]));?></td>
  <td><?=$item1['username']?></td>
</tr>
<?php } ?>
Вот так нормально, не знаю правильно или нет. Но отображает.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.03.2016, 06:35 8
Я же Вам вроде показал, как нормально.
0
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
27.03.2016, 11:25  [ТС] 9
Para bellum, ошибку выдает
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.03.2016, 12:51 10
Ну так показывайте, что за ошибка.
0
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
27.03.2016, 13:53  [ТС] 11
Para bellum,
Цитата Сообщение от dukesov Посмотреть сообщение
А Ваш вариант выдает ошибку:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in в строке while
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.03.2016, 14:15 12
Сделайте так:
PHP
1
2
3
4
5
6
7
$query = mysql_query(
    "SELECT `s`.*, `u`.`username` 
        FROM `session` `s` 
        LEFT JOIN `users` `u` 
    ON `u`.`id`=`s`.`user_id` 
    ORDER BY `putdate` DESC"
) or die(mysql_error());
И скажите, что выведет.
1
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
27.03.2016, 14:35  [ТС] 13
Para bellum, все, разобрал ошибку. Спасибо!

Добавлено через 5 минут
Para bellum, а в чем отличие моего варианта от вашего?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.03.2016, 14:44 14
В том, что мой вариант выбирает для каждого пользователя своё имя, а не одно и то же для всех.
0
19 / 18 / 11
Регистрация: 24.08.2015
Сообщений: 471
27.03.2016, 15:13  [ТС] 15
Para bellum,
Цитата Сообщение от dukesov Посмотреть сообщение
$query = mysql_query("SELECT * FROM `session` ORDER BY `putdate` DESC");
* while ($item = mysql_fetch_array ($query)){
* * * $q = mysql_query("SELECT * FROM `users` WHERE `user_id`='$item[user]'");
* * * * $item1 = mysql_fetch_array ($q);
PHP
1
2
3
4
5
6
7
[quote="Para bellum;8941204"]$query = mysql_query(
* * "SELECT `s`.*, `u`.`username` 
 * * * *FROM `session` `s` 
 * * * *LEFT JOIN `users` `u` 
 * *ON `u`.`id`=`s`.`user_id` 
 * *ORDER BY `putdate` DESC"
)[/quote]
Имею ввиду вот эти 2.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
28.03.2016, 06:30 16
Ааа. Тут различие в том, что мой запрос будет работать гораздо быстрее, так как делает всё разом. А в Вашем случае идёт множество запросов.
Например, если сейчас онлайн 100 пользователей — вариант с JOIN вытащит их из базы за 1 запрос.
А вариант с циклом вытащит данные за 101 запрос (первый — это записи из "session", а остальная сотня — запросы на выборку имени).

Одним словом, нужно всегда подыскивать менее ресурсоёмкий вариант.
0
28.03.2016, 06:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2016, 06:30
Помогаю со студенческими работами здесь

Вывести данные о пользователе из БД
Как я понял, xчтобы пользователь видел свой id. надо как-то вывести эти данные из msql как...

Как безопаснее хранить данные о пользователе в бд?
Привет! Я задумался - как безопаснее хранить данные о пользователе в бд. Варианта по-хорошему три...

Как передать данные о пользователе в веб-приложение
Добрый вечер. Столкнулся со след.задачей: на предприятии есть web-приложение(крутится на...

Как перенести данные о пользователе на новую строчку
Доброго времени суток! Как сделать, чтобы данные о пользователе ( имя, почта и сообщение ) были...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru