Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2011, 08:48   #1
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию Результат выборки 2 и более строк

прошу прощения за утренний вопрос, который традиционно покажется простым за здешних гуру, тем не менее:

PHP код:
$in="'$criteria','ms_high'";

$query2="Select * from region1 where 1=1 AND pokazatel IN (".$in.")";
$result2=mysql_query($query2); 
результат выборки получается таким:

pokazatel all go mr
kolvo_ms 1000 800 200
ms_high 600 500 100

мне нужно дальше работать с этой таблицей - если делать mysql_fetch_row то в результат помещается только первая строка...

$res=mysql_fetch_row($result2);
$res[1]=1000;
$res[5]= пусто

можно сделать что-нить условное?
$res['ms_high',1] = 600 ?


просто мне нужно вывести в идеале таблицу

в шапке ms_high

vsego ms_high %
1000 600 60%
Dmitry1983 вне форума Ответить с цитированием
Старый 06.09.2011, 09:04   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

PHP код:
    while ($res=mysql_fetch_array($result,MYSQL_ASSOC))
              { echo 
$res['pokazatal']."  ".$res['all'];} // ну итд 
ADSoft вне форума Ответить с цитированием
Старый 06.09.2011, 09:29   #3
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
PHP код:
    while ($res=mysql_fetch_array($result,MYSQL_ASSOC))
              { echo 
$res['pokazatal']."  ".$res['all'];} // ну итд 
спасибо, щас бум пробовать...
пока до работы дошел тож кое-какая мысль посетила - перебрать в цикле значения и занести их в новый массив...
Dmitry1983 вне форума Ответить с цитированием
Старый 06.09.2011, 10:42   #4
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
PHP код:
    while ($res=mysql_fetch_array($result,MYSQL_ASSOC))
              { echo 
$res['pokazatal']."  ".$res['all'];} // ну итд 
может я не совсем корректно выразился... мне нужно будет выводить это в таблице и в одной строке таблицы иметь результаты выборки по двум разным строкам...

PHP код:
$perechen = array();
echo 
mysql_num_fields($result2); //6
echo mysql_num_rows ($result2);//2
while ($daa2 mysql_fetch_row($result2))
{
for (
$j=0,$r=0;$j<mysql_num_fields($result2), $r<mysql_num_rows ($result2);$j++, $r++)
{
$perechen[$r]=$daa2[$j];
}
}
echo 
"Количество элементов в массиве count($perechen)<br>"
выдает Количество элементов в массиве count(Array)
или я не правильно понимаю, что у меня должно быть
$perechen[5]=$daa2[5]
$perechen[6]=$daa2[6]
$perechen[7]=$daa2[0], но уже со следующей строки... после переключения fetch_row?

при этом...
PHP код:
$name=array();
while (
$daa=mysql_fetch_array($result))
{
$name[]=$daa[0];
};
echo 
count($name); 
выдает цифру... где ошибаюсь?
Dmitry1983 вне форума Ответить с цитированием
Старый 06.09.2011, 11:00   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Dmitry1983 Посмотреть сообщение
echo count($name);
выдает цифру... где ошибаюсь?
А что, по-вашему, должна выдавать функция count() ?

1. Приведите описание структуры вашей таблицы - текстом, разделитель |.
2. Приведите пару строк информации в ней - текстом, разделитель |.
3. Приведите структуру таблицы, которую хотите сделать - текстом, разделитель |.
Andkorol вне форума Ответить с цитированием
Старый 06.09.2011, 11:13   #6
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

PHP код:
$perechen = array();
for (
$r=0;$r<mysql_num_rows ($result2);$r++)
{
for (
$j=0;$j<mysql_num_fields($result2);$j++)
{
echo 
"Строка ".$r." Ряд ".$j." Значение: ".mysql_result($result2,$r,$j)."<br>";
$perechen[]= mysql_result($result2,$r,$j);
}
}
echo 
"Количество элементов в массиве count($perechen)<br>"
Строка 0 Ряд 0 Значение: kolvo_ms
Строка 0 Ряд 1 Значение: 1500
Строка 0 Ряд 2 Значение: 1000
Строка 0 Ряд 3 Значение: 100
Строка 0 Ряд 4 Значение: 150
Строка 0 Ряд 5 Значение: 250
Строка 1 Ряд 0 Значение: ms_high
Строка 1 Ряд 1 Значение: 1000
Строка 1 Ряд 2 Значение: 800
Строка 1 Ряд 3 Значение: 80
Строка 1 Ряд 4 Значение: 100
Строка 1 Ряд 5 Значение: 200
Количество элементов в массиве count(Array)

почему array?(
Dmitry1983 вне форума Ответить с цитированием
Старый 06.09.2011, 11:14   #7
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
А что, по-вашему, должна выдавать функция count() ?

1. Приведите описание структуры вашей таблицы - текстом, разделитель |.
2. Приведите пару строк информации в ней - текстом, разделитель |.
3. Приведите структуру таблицы, которую хотите сделать - текстом, разделитель |.
так мне и нужна цифра) почему в примере с name цифру дает, а perechen - нет (array)...

5-7 мин... выложу таблички)
Dmitry1983 вне форума Ответить с цитированием
Старый 06.09.2011, 11:20   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Dmitry1983 Посмотреть сообщение
PHP код:
echo "Количество элементов в массиве count($perechen)<br>"
Количество элементов в массиве count(Array)

почему array?(
А как, по-вашему, PHP отличит в строке вызов функции count() от просто слова count и скобки за ним?
PHP код:
echo "Количество элементов в массиве " count($perechen) . "<br>"
Andkorol вне форума Ответить с цитированием
Старый 06.09.2011, 11:49   #9
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
А как, по-вашему, PHP отличит в строке вызов функции count() от просто слова count и скобки за ним?
непорядок))) надо разработчикам написать
спасибо -)))))

а суть задачи в следующем:
я как-то уже спрашивал как объединить 83 однотипных таблицы... получалось слишком геморно да и не получилось в итоге
решил сделать так...

обозвал все таблицы region1, region2 ... region 83.
далее - выбираю названия всех таблиц...
PHP код:
$name=array();
$query="SELECT table_name FROM information_schema.tables where table_schema='test4' ORDER BY table_name";
$result=mysql_query($query);
while (
$daa=mysql_fetch_array($result))
{
$name[]=$daa[0];
}; 
потом- проверяю таблицы на наличие слова region

PHP код:
for ($i=0;$i<count($name);$i++)
{
if (
preg_match("|region|",$name[$i]))
{
$query="Select * from $name[$i] where pokazatel='name'";}

таким образом получается переборка всех таблиц ...
каждая таблица имеет одинаковую структуру
например:

таблица region1
шапка (названия полей)
pokazatel | all | go | mr
значения
name | region1
kolvo_ms | 1000 | 800 | 200
ms_high | 800 | 700 | 100
ms_med |100 | 50 | 50
ms_no |100 |50 |50

таблица region2
шапка (названия полей)
pokazatel | all | go | mr
значения
name | region2
kolvo_ms | 1100 | 900 | 300
ms_high | 900 | 800 | 150
ms_med |100 | 50 | 100
ms_no |100 |50 |50
в итоге мне нужно получить следующую таблицу (можно сказать транспонированную матрицу)

Шапка:

name | kolvo_ms [all] | ms_high[all] | ms_high/kolvo_ms (деление, %)|ms_med[all] | ms_med/kolvo_ms (%) и т. д.

значения:
region1| 1000|800|80% | 100|10%
region2 | 1100|900|82%|100| 9%
...

вторая таблица будет аналогичная только уже по столбу [go], следующая по столбцу [mr]

блин... как-то так)))
Dmitry1983 вне форума Ответить с цитированием
Старый 06.09.2011, 12:22   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Да уж, структура БД у вас капец....
А почему не получилось переделать?

Нормальная структура таблицы была бы примерно такой:
name - region1, region2, ... (index)
type - all, go, mr (index)
kolvo_ms
ms_high
ms_med
ms_no

Тогда выборки свелись бы к простым запросам всех записей по type, ORDER BY name.

По текущим таблицам - это сделать довольно сложно.
А вы можете выложить дамп 2-3 таблиц region - чтоб можно было попробовать, а то лениво руками создавать/забивать данные?
Тогда я смогу покрутить это в течении дня.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический перенос строк из одного листа в другой лист Результат maksvas Microsoft Office Excel 4 22.10.2010 14:03
Выборки из бд Lokos БД в Delphi 6 15.12.2009 15:20
Добавление в результат запроса пустых строк BARNEY БД в Delphi 5 11.11.2009 12:26
Какое программирование в наше время более востребовано и более рентабельно? iukash Свободное общение 18 29.10.2009 13:02
Выгрузка более 65000 строк Xozer Microsoft Office Excel 4 01.02.2008 22:09