Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с while и foreach 
:(
    Опции темы
smashTeAm
Дата 3.1.2008, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 16.11.2007

Репутация: нет
Всего: нет



для примера:
Код

$query = "SELECT * FROM my_table";
$result = mysql_query ($query)
  or die ("Query failed");

while ($line = mysql_fetch_array($result))
{
   foreach( explode( ",", $line['ids'] ) as $id )
    {
    $id = intval( $id );
    $query = "SELECT * FROM my_table2 WHERE ID=".$id;
    $res = mysql_query ($query2)
    $print .= $res['data'].", ";
    }
echo $line['ids']."<i>".$res['data'].</i><br />;                                
}




в итоге получаю в $res['data'] значения из строк где предыдущее значение $line['ids'] не массив. Я пока ещё в принципе нуб, как правильно вывести?
PM MAIL   Вверх
GZep
Дата 3.1.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



smashTeAm
не понятен вопрос. Что надо получить? как вывести? что должен делать код?


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
smashTeAm
Дата 3.1.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 16.11.2007

Репутация: нет
Всего: нет



ну к примеру есть таблица содержащая 

id              name          ids

и вторая 

id              name

вывожу 

из первой name и из второй name ids которых указаны в первой таблице.

к примеру если в первой таблице записи вида:

id              name          ids
1          пример1          1
2          пример2           2,3

а во второй 

id              name
1               вася
2               петя
3               маша

то он мне должен вывести

пример1 вася
пример2 петя, маша

у меня же получается 

пример1 вася
пример2 вася, петя, маша

PM MAIL   Вверх
flashaa
Дата 4.1.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



По-моему ошибка в том,что нет вызова mysql_fetch_array для второго (внутреннего) запроса.
Цитата(smashTeAm @  3.1.2008,  21:31 Найти цитируемый пост)
Код

$res = mysql_query ($query2);
// здесь должно быть что-то вроде $ar = mysql_fetch_array($res);
$print .= $res['data'].", "; // а тут должны юзать не $res, а $ar


PM MAIL   Вверх
smashTeAm
Дата 4.1.2008, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 16.11.2007

Репутация: нет
Всего: нет



тоже самое. там ошибка связана не с запросами, он мне суёт ответы мускула из первой строки во вторую почемуто. где то я чтото не правильно указываю... а приведённый код он просто для примера, для описания схемы так сказать, может ктото посоветует правильную схему такого вывода?
PM MAIL   Вверх
flashaa
Дата 4.1.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Касательно подхода, убрал бы второй цикл вообще, т.к. можно запросить сразу все записи с помощью  mysql оператора IN:
Код

$query = "SELECT * FROM my_table";
$result = mysql_query ($query)
  or die ("Query failed");
while ($line = mysql_fetch_array($result))
{
    $query = "SELECT * FROM my_table2 WHERE ID IN ". $line['ids'];
    $res = mysql_query ($query2);
    $arr = mysql_fetch_array($res);
    $print .= $arr['data'].", ";
    }
echo $line['ids']."<i>".$res['data'].</i><br />;                                
}


Что ещё можно было бы изменить - не хранить id других записей через запятую, а создать отдельную таблицу связей. Но это дело архитектуры и не зная, как изначально выглядит задача,такое решение сложно принять.
Касательно проблемы - вообщем-то если проблема была в том, что выводится name от первой строки(id = 1),  то схема тут не при чем, просто где-то что-то криво в коде и надо кидать код сам,который сейчас используется.

Это сообщение отредактировал(а) flashaa - 4.1.2008, 12:43
PM MAIL   Вверх
smashTeAm
Дата 4.1.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 16.11.2007

Репутация: нет
Всего: нет



подскажите пожалуйста, как, на основе поста №3 этой темы. свой код приводить не стану ибо код форума будет не всем понятен. напишите как и что мне сделать чтоб получить желанный результат. пусть хоть примерно, ибо мне потом на форумный код переделывать придётся, и с мускулом я не особо дружен, но буду рад любым предложениям как сделать
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0846 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.