powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не выводятся все значения
19 сообщений из 19, страница 1 из 1
Не выводятся все значения
    #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
Не выводятся все значения
    #38554501
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать JOIN стало не модно, надо полагать...

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

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

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

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

Ваша проблема в вас самом. fetch'и двигают внутренний счетчик результа, они traversable, это не форич, который сбрасывает его каждый раз на 0. В общем нельзя вкладывать fetch в fetch. Ну то есть можно при каких-то особых задачах, но это явно не ваш случай.
...
Рейтинг: 0 / 0
Не выводятся все значения
    #38554817
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тфу блин, там же два результа. Забираю взад.
...
Рейтинг: 0 / 0
Не выводятся все значения
    #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
19 сообщений из 19, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не выводятся все значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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