Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не выводятся все значения / 19 сообщений из 19, страница 1 из 1
08.02.2014, 16:45
    #38554459
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
Приветствую! Есть цикл:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
                         $res = mysql_query("SELECT * FROM atest");
                         // счетчик запросов
                         $i = $_GET['i'];
                         // счетчик заходов в цикл
		         $j = 0;
		         // цикл на выборку данных БД
		         while($row = mysql_fetch_array($res)){	
		         $ret = $row["имя материала"]; //берем значение для запроса ко второй таблице (компании со своими ценами на материал):
		         $res1 = mysql_query("SELECT price FROM $ret",$db);
			while($row1 = mysql_fetch_array($res1)){
		         $arr["price{$j}"] = $row1[0];
			 }
			 $j++;
		         }

                        // если достигли конца при поиске в БД
		        if( $j <= $i){
			echo json_encode("null");
		        }
		        // формируем данные для отправки
		        else{
			$json["price"] = $arr["price{$i}"];
			$json["count"] = $j;//счетчик найденных позиций
			
			if($j == ($i + 1)){
				// если больше нет записей
				$json["end"] = "true";
			}
			// отправляем данные
			echo json_encode($json);
		       }
	               }
                       }





Запрос
Код: php
1.
2.
3.
                        $res1 = mysql_query("SELECT price FROM $ret",$db);
			while($row1 = mysql_fetch_array($res1)){
		         $arr["price{$j}"] = $row1[0];


отрабатывает вне цикла (выводит все цены), но в цикле (выше) выводит только одну цену (первую верхнюю). Цикл нужен для вывода типа материал - характеристики - цены компаний.
...
Рейтинг: 0 / 0
08.02.2014, 17:39
    #38554501
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
Использовать JOIN стало не модно, надо полагать...

автор
Код: php
1.
2.
3.
			while($row1 = mysql_fetch_array($res1)){
		         $arr["price{$j}"] = $row1[0];
			 }

Смысл цикла совсем уж тайный... В массиве будет сохранено последнее прочитанное из БД значение.
...
Рейтинг: 0 / 0
08.02.2014, 17:51
    #38554510
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
join - это ведь когда имя таблицы второй знаем? А здесь имя динамическое должно быть, вычисленное при цикле по первой таблице)
...
Рейтинг: 0 / 0
08.02.2014, 18:00
    #38554525
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
По хорошему, имя второй таблицы (с ценами) одно, и известно заранее. Когда под каждый материал заводится отдельная таблица - это признак неправильной структуры БД. Из правильной структуры подобного рода данные легко получаются одним запросом и без огорода с вложенными циклами.
...
Рейтинг: 0 / 0
08.02.2014, 18:15
    #38554533
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
vkle, Огород, согласен, ну а если хранить цены в общей таблице и у материалов будет несколько цен? Добавлять цены горизонтально? Использовать имена столбцов? Так не хуже будет?)
...
Рейтинг: 0 / 0
08.02.2014, 18:19
    #38554539
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
Еще можно добавлять цены вертикально и искать совпадения имен, но вопрос в другом: Как вывести несколько значений?
...
Рейтинг: 0 / 0
08.02.2014, 18:26
    #38554543
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
formusну а если хранить цены в общей таблице и у материалов будет несколько цен?Отдельными строками. По такой, например, структуре:

id товара | тип цены (опт/розница/прочее) | цена
...
Рейтинг: 0 / 0
08.02.2014, 18:42
    #38554549
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
vkle, спасибо, навели меня на решение с несколькими строками, я стал использовать лимит. Так правда получается больше запросов. Я мечтал присвоить несколько значений одной строке в цикле и сразу вывести, но может такого и нет в природе?)
...
Рейтинг: 0 / 0
08.02.2014, 18:52
    #38554553
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
formusприсвоить несколько значений одной строкеЭто как? Можно соединить несколько значений в одну строку - конкатенция называется. Есть и в PHP и в SQL.
...
Рейтинг: 0 / 0
08.02.2014, 19:13
    #38554560
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
vkle, Я имею дело с $row1['region1'] - столбец, который вне цикла выводит значения всех своих ячеек. Мне нужно чтобы в одной переменной json содержались все эти значения. Может есть ограничения в json?
...
Рейтинг: 0 / 0
08.02.2014, 19:19
    #38554562
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
Такая же фигня твориться с выводом изображений - если вне того цикла - выводятся все из папки, если в цикле - только одно
...
Рейтинг: 0 / 0
08.02.2014, 19:26
    #38554564
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
formusvkle, Я имею дело с $row1['region1'] - столбец, который вне цикла выводит значения всех своих ячеек. Мне нужно чтобы в одной переменной json содержались все эти значения.Не понятно. Может покажете пример исходных данных и того, что из них должно получиться?
...
Рейтинг: 0 / 0
08.02.2014, 20:11
    #38554581
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
Мне надо решить проблему, которую изложил вначале поста
...
Рейтинг: 0 / 0
08.02.2014, 20:36
    #38554601
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
formus,

В первом приближении, какая-то беда с переменной $j или с присваиванием. Однако, не зная, что должно получиться, сложно что-либо советовать.
...
Рейтинг: 0 / 0
08.02.2014, 21:09
    #38554626
formus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
vkle, мне нужен фильтр с аякс подгрузкой списка и возможностью добавления нескольких цен от компаний. Возьметесь за деньги?
...
Рейтинг: 0 / 0
08.02.2014, 21:26
    #38554639
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
formus, покажите ТЗ
...
Рейтинг: 0 / 0
09.02.2014, 07:12
    #38554816
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
formusМне надо решить проблему, которую изложил вначале поста

Ваша проблема в вас самом. fetch'и двигают внутренний счетчик результа, они traversable, это не форич, который сбрасывает его каждый раз на 0. В общем нельзя вкладывать fetch в fetch. Ну то есть можно при каких-то особых задачах, но это явно не ваш случай.
...
Рейтинг: 0 / 0
09.02.2014, 07:13
    #38554817
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
Тфу блин, там же два результа. Забираю взад.
...
Рейтинг: 0 / 0
09.02.2014, 07:32
    #38554818
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводятся все значения
formusvkle, мне нужен фильтр с аякс подгрузкой списка и возможностью добавления нескольких цен от компаний. Возьметесь за деньги?

Выше вроде была попытка объяснить как это делается, и именно вот так

create table price(
price_id int unsigned auto_increment primary key,
article_id int unsigned not null,
owner_id --- онер цен (компания)
price_retail --- ваш любимый тип для цен
price whole --- выше
price dealer --- выше
);

И вешаете на артикул неограниченное число ценников от любого числа ваши компаний

допустим номенклатура в table `article` в которой естественно есть artilcle_id

select * from article
inner join price on price.article_id = article.article_id and article.article_id = $requested

получите таблицу со всеми ценами.

select price.price_retail from article
inner join price on price.article_id = article.article_id and article.article_id = $requested

получите все розничные цены данного товара

select price.price_retail, company.name from article
inner join price on price.article_id = article.article_id and article.article_id = $requested
inner join company on price.owner_id = compnay.id and price.owner_id = $company_id

получаете цену данной компании вместе с ее названием

Ну и так далее
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не выводятся все значения / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]