Массивы, перекодировка...

#1 11 ноября 2013 в 05:24
Доброго времени суток.

Есть кое какие проблемы с массивами и перекодировкой.
Может кто знает как это сделать?

Пример:
таблица 1 — статистика, таблица 2 — пользователи;
я делаю вывод таблице 1 в массиве, где пользователь к этой таблице привязан с помощью user_id;
мне надо вывести имя пользователя в массив;
то есть у меня выводится номер пользователя из первой базе данных в массиве;
мне надо вывести имя пользователя из второй таблице при выводе первой;

Думаю я понятно объяснил.
Вот только как это сделать не знаю...
Делать массив внутри другого массива, думаю это бред, хотя не знаю, может это так и надо делать…
#2 11 ноября 2013 в 06:42
Если честно, то понятно что ничего не понятно… Перечитал 3 раза (хотя м.б. я уже сонный)… Вы делаете выборку из обеих таблиц в массив, в нем уже есть и логины и все остальное? Может пример выборки покажете, что ли, может понятнее будет.
#3 11 ноября 2013 в 10:39
ByFly, если я правильно понял, то вы делаете выборку из таблицы 1, в которой есть user_id
Вам нужно сделать выборку из обеих таблиц, тогда у вас будет и вся инфа по пользователям.
А вообще конечно вы непонятно написали что вы сделали и при чем тут перекодировка
#4 11 ноября 2013 в 22:40
deltas, Rossoman,
код:
  1. <?
  2. $query = "SELECT * FROM `ps_plr` ORDER BY skill DESC LIMIT 10";
  3. $res = mysql_query($query);
  4.  
  5. echo'
  6. <table width="350" align="center" bgcolor="#F4F4F4">
  7. <tr bgcolor="#8C8C8C">
  8. <td width="50" align="center">Номер</td>
  9. <td width="100" align="center">Игрок</td>
  10. <td width="100" align="center">Статистика</td>
  11. <td width="100" align="center">Навык</td>
  12. </tr>
  13. ';
  14.  
  15. while($row = mysql_fetch_array($res))
  16. {
  17. $plrid = $row['plrid'];
  18. $skill = $row['skill'];
  19.  
  20. echo'<tr>';
  21. echo'<td>#';
  22. echo'</td>';
  23. echo'<td>';
  24. echo $name;
  25. echo'</td><td align="center">';
  26. echo $kills;
  27. echo'-';
  28. echo $deaths;
  29. echo'</td><td align="center">';
  30. echo $skill;
  31. echo'</td>';
  32. echo'</tr>';
  33. }
  34.  
  35. echo'</table>';
  36. ?>
Вывести в эту таблицу переменную $name, которая берётся из БД таблицы ps_plr_ids_name, где plrid=$plrid
Вывести в эту таблицу переменные $kill $deaths, которые берутся из БД таблицы ps_plr_data, где plrid=$plrid
#5 11 ноября 2013 в 22:52
Так меняйте запрос типа:
  1.  
  2. $query = "SELECT a.*, b.name, c.kill, c.deaths FROM ps_plr a
  3. LEFT JOIN ps_plr_ids_name b ON b.plrid = a.plrid
  4. LEFT JOIN ps_plr_data c ON c.plrid = a.plrid
  5. GROUP BY a.id
  6. ORDER BY a.skill DESC LIMIT 10";
Это так, для примера, я не уверен что у вас поля именно так называются (plrid)
И вообще мне кажется хранение всего этого в 3 таблицах наверное необоснованное…
#6 11 ноября 2013 в 23:03
deltas, Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
как переделать?..
#7 11 ноября 2013 в 23:13
Ну так надо видеть структуру всех таблиц… И советую почитать про JOIN ))
#8 11 ноября 2013 в 23:17
deltas, за основную таблицу взята таблица ps_plr, в ней находятся поля plrid и skill, то есть таблица выводятся ORDER BY skill DESC LIMIT 10
#9 11 ноября 2013 в 23:27
а другие две?
#10 11 ноября 2013 в 23:31
deltas, ps_plr_ids_name с полям plrid и name
ps_plr_data c полями plrid, kills, deaths

как я уже описал выше, plrid берётся с таблице ps_plr
а далее по plrid выводится name, kills, deaths с остальных таблиц
#11 12 ноября 2013 в 00:01
Или я неправильно вас понял, или у вас структура не верная в корне...
Возьмите как пример таблицы статьи и категории. Есть таблица статьи с полями (id, category_id, title и так далее) и есть таблица с категориями (id, title) Привязка не может быть по первому полю, которое еще и auto_increment, так что привязка идет по полям content.category_id <-> category.id
надеюсь понятно описал…
#12 12 ноября 2013 в 00:09
deltas, так есть стандартное поле id с auto_increment
Показываю ещё один пример:
— представьте, что plrid это логин
то есть получается есть таблица ps_plr с полями login, skill
выводим с этой таблице login и skill с ORDER BY skill DESC LIMIT 10
далее есть таблица ps_plr_ids_name, допустим это таблица с пользователями (users)
в этой таблице поля login, name и тд

Мы делаем вывод данных в php файл в форме <table> и выводим login и skill
но нам надо вместо login вывести name

Так понятнее объяснил?
#13 12 ноября 2013 в 00:42
)) ну так я ж у вас просил полную структуру таблиц, а вы мне что ответили...
Так используйте LEFT JOIN в запросе, как я выше описывал, все дорлжно работать если поля совпадают с вашими, если нет — поменяйте на ваши…
Трудно в наше время быть телепатом))
#14 12 ноября 2013 в 01:58
deltas, да я не особо понял эти запросы…
#15 12 ноября 2013 в 02:13
deltas, всё, разобрался, слушай а как мне номер вывести? ну в смысле, чтобы цифры отображались от 1 до 10 и желательно 01-09 и 10
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.