Создать форум бесплатно: ixbb.ru :: Календарь на Май 2024 года: calendar2008.ru/2024/may/

Страницы: (20) « Первая ... 12 13 [14] 15 16 ... Последняя » ( Перейти к первому непрочитанному сообщению ) Reply to this topicStart new topicStart Poll

PHP & MySQL - ???

Матроскин
Отправлено: Sep 1 2010, 11:23 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



QUOTE (dudeonthehorse @ Sep 1 2010, 11:15 AM)
спасибо! smile.gif а я мозг ем форичами и совсем не тем

Пожалуйста. У самого так иногда бывает biggrin.gif


--------------------
PMEmail PosterUsers Website
Top
den1scheban
Отправлено: Sep 6 2010, 10:51 PM
Quote Post


  Солдат
*

Группа: Members
Сообщений: 5
Пользователь №: 3485
Регистрация:
27-August 10



Йа спамер!
PMEmail Poster
Top
dudeonthehorse
Отправлено: Sep 26 2010, 09:43 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 763
Пользователь №: 2933
Регистрация:
26-October 09



понимаю. что делаю что то не так, потому и прошу подсказать.
CODE
<?
$arQuery = mysql_query("SELECT * FROM `duck_social_messages` WHERE `to`='$userId'") or die(mysql_error());
$arResult = array(
'messages' => array(mysql_fetch_assoc($arQuery))
);
?>
<pre><?print_r($arResult)?></pre>

выводит мне такую вещь
CODE
Array
(
   [messages] => Array
       (
           [0] => Array
               (
                   [id] => 1
                   [datetime] => 2010-09-26 21:02:35
                   [from] => 2
                   [to] => 1
                   [subject] => Привет!
                   [body] => Как дела?
               )

       )

)

а мне нужно такую
CODE
Array
(
   [messages] => Array
       (
           [0] => Array
               (
                   [id] => 1
                   [datetime] => 2010-09-26 21:02:35
                   [from] => 2
                   [to] => 1
                   [subject] => тема1
                   [body] => текст1
               )
           [1] => Array
               (
                   [id] => 2
                   [datetime] => 2010-09-26 21:02:35
                   [from] => 3
                   [to] => 1
                   [subject] => тема2
                   [body] => текст2
               )

       )

)

в базе лежат две записи, а он выводит мне только первую. нужно все. собсно вопрос: что нужно исправить чтобы он выдавал информацию так как мне нужно?
PMEmail PosterICQ
Top
dudeonthehorse
Отправлено: Sep 27 2010, 07:33 AM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 763
Пользователь №: 2933
Регистрация:
26-October 09



вопрос решен
CODE
<?
$arQuery["messages"] = mysql_query("SELECT * FROM `duck_social_messages` WHERE `to`='$userId'") or die(mysql_error());
$arResult["messages"] = array();
while($arMessages=mysql_fetch_assoc($arQuery["messages"])) {
$arResult["messages"][]=$arMessages;
}
?>
<pre><?print_r($arResult)?></pre>
PMEmail PosterICQ
Top
Матроскин
Отправлено: Sep 27 2010, 01:31 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Так вроде попонятнее будет:
CODE
<?php
$arQuery = mysql_query("SELECT * FROM `duck_social_messages` WHERE `to`='$userId'") or die(mysql_error());
while($arMessages=mysql_fetch_assoc($arQuery)) {
$arResult[]=$arMessages;
}

echo "<pre>";
print_r($arResult);
echo "</pre>";
?>

В принципе, $arMessages уже будет массивом, в который построчно будут загоняться данные из таблицы, поэтому в цикле while($arMessages=mysql_fetch_assoc($arQuery)){} уже можно производить действия с массивом, не копируя его в другой массив.


--------------------
PMEmail PosterUsers Website
Top
dudeonthehorse
Отправлено: Sep 27 2010, 02:48 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 763
Пользователь №: 2933
Регистрация:
26-October 09



в твоем случае из структуры вылетает
CODE
(
  [messages] => Array
      (

а мне эта ступень нужна так как в $arResult'e будут еще массивы.

хотя... может подскажешь как будет логичнее поступить? в дополнительном массиве users я хочу сделать запрос на пользователей которые принимают и получают сообщения.

то есть значения
CODE
[from] => 2
[to] => 1

должны быть представлены в соседнем массиве, входящем в $arResult в виде
CODE

[users_to] => array(
         [0] => array(
                  [id] => 1
                  [login] => login
                  [firstname] => name
                  [lastname] => lastname
         )
         [1] => array(
                  [id] => 1
                  [login] => login
                  [firstname] => name
                  [lastname] => lastname
         )
);
[users_from] => array(
         [0] => array(
                  [id] => 1
                  [login] => login
                  [firstname] => name
                  [lastname] => lastname
         )
         [1] => array(
                  [id] => 1
                  [login] => login
                  [firstname] => name
                  [lastname] => lastname
         )
);

которые хранятся в другой таблице базы данных.
PMEmail PosterICQ
Top
Матроскин
Отправлено: Sep 27 2010, 03:42 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Если это другая таблица, то наверное будет другой запрос. Соответственно, данные первого запроса будут в массиве $arMessages[], а данные второго запроса можно поместить в массив $arMessages2[].
Хотя, чтобы сказать как логичнее поступить, надо представлять логику проекта... а ее я не знаю.


--------------------
PMEmail PosterUsers Website
Top
dudeonthehorse
Отправлено: Sep 27 2010, 06:26 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 763
Пользователь №: 2933
Регистрация:
26-October 09



нужно получить вот такой массив:
CODE
array(
    [0] => Array(
         [id] => 1
         [datetime] => 2010-09-26 21:02:35
         [from] => array(
              [id] => 2
              [username] => Матроскин
              [firstname] => Иван
              [lastname] => Иваныч
         )
         [to] => 1
         [subject] => Привет!
         [body] => Как дела?
    )
    [1] => Array(
         [id] => 1
         [datetime] => 2010-09-26 21:02:35
         [from] => array(
              [id] => 3
              [username] => Ilidan
              [firstname] => Михал
              [lastname] => Михалыч
         )
         [to] => 1
         [subject] => Привет!
         [body] => Гони бабки!
    )
)

получить этот массив нужно оперируя таблицами `users` и `messages` из БД.
схема какая:
первый уровень массива мы получаем посредством вывода всех строк таблицы `messages`(и всех ее полей), а второй уровень - получаем все поля единственной строки(так как совпадений юзеров нет) таблицы `users` в зависимости от айдишника, указанного в поле `from` таблицы `messages`
PMEmail PosterICQ
Top
dudeonthehorse
Отправлено: Oct 3 2010, 04:23 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 763
Пользователь №: 2933
Регистрация:
26-October 09



немного переписал для "понятности" предыдущий пост. буду признателен за оптимальное решения получения данного массива
PMEmail PosterICQ
Top
Матроскин
Отправлено: Oct 4 2010, 01:57 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Ну, под логикой проекта я понимал нечто большее biggrin.gif
Если же нужно просто получить 1 массив из двух таблиц, то я бы сделал так:
1) таблица messages с полями - id, datetime, to, subject, body;
2) таблица users с полями - id, username, firstname, lastname.
Подразумевается, что количество строк в обеих таблицах одинаковое, т.е., например, я сделал по 2 строки в каждой таблице.
Собственно код:
CODE
$res = mysql_query("SELECT * FROM `messages`", $db);
while($row = mysql_fetch_assoc($res))
 {
   $result[] = $row;
 }

$res2 = mysql_query("SELECT * FROM `users`", $db);
while($row2 = mysql_fetch_assoc($res2))
 {
   $result2[] = $row2;
 }

// добавляем в массив второй уровень - 'from', в который записываем данные второго запроса
for($i = 0; $i < count($result); $i++)
 {
   $result[$i]['from'] = $result2[$i];
 }

 echo "<pre>";
 print_r($result);
 echo "</pre>";

В итоге получаем массив такого вида:
CODE
Array
(
   [0] => Array
       (
           [id] => 1
           [datetime] => 2010-10-04
           [to] => 1
           [subject] => Привет!
           [body] => Как дела?
           [from] => Array
               (
                   [id] => 1
                   [username] => Матроскин
                   [firstname] => Иван
                   [lastname] => Иваныч
               )

       )

   [1] => Array
       (
           [id] => 2
           [datetime] => 2010-10-04
           [to] => 1
           [subject] => Привет!
           [body] => Гони бабки!
           [from] => Array
               (
                   [id] => 2
                   [username] => Ilidan
                   [firstname] => Михал
                   [lastname] => Михалыч
               )

       )

)


--------------------
PMEmail PosterUsers Website
Top

Topic OptionsСтраницы: (20) « Первая ... 12 13 [14] 15 16 ... Последняя » Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0643 ]   [ 10 queries used ]   [ GZIP выключен ]