|
|
|
| Добрый вечер!
Снова прошу помощи, т.к. проштудировал несколько мануалов, но не нашел там ни намёка, ни ответа на свой вопрос!
Хочется написать свой каталог товаров, но вот встала загвоздка, каталог рассчитывается на 1000 позиций, следовательно обновлять цены, заходя на страницу каждого товара, довольно таки муторно, проще сделать страницу где будут выдаваться сразу все позиции, определенного подкаталога, и их цены в <input type='text'>, причем ценовых колонок будет три, а следовательно через метод POST будет передаваться обработчику четыре массива: $id_art[], $rub[], $usd[], $eur[].
Вопрос в следующем как организовать обновление цен, если вся база храниться в MySQL?
А то, что то в голове ну не одной мысли по этому поводу! | |
|
|
|
|
|
|
|
для: Artemy
(22.05.2005 в 20:38)
| | У вас основное затруднение в передаче данных или именно в обновлении?
Мне кажется, что в передаче... по крайней мере, в сходной ситуации меня волновал именно это вопроос.
Вот это форма.
<form action="action.php" method="post">
<!-- Первая позиция-->
<input type="text" name="rub[1][]" size="40" maxlength="256">
<input type="text" name="usd[1][]" size="40" maxlength="256">
<input type="text" name="eur[1][]" size="40" maxlength="256">
<!-- Вторая позиция-->
<input type="text" name="rub[2][]" size="40" maxlength="256">
<input type="text" name="usd[2][]" size="40" maxlength="256">
<input type="text" name="eur[2][]" size="40" maxlength="256">
<input type="submit" value="Отправить">
</form>
|
В именах элементов rub[1][], rub[2][] вместо 1 и 2 должны стоять реальные идентификаторы каждой из позиций. $id_art наверное.
Если заполнить и нажать на кнопку, то вот такой код в обработчике
<?
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
|
выведет следующее
Array
(
[rub] => Array
(
[1] => Array
(
[0] => 11
)
[2] => Array
(
[0] => 44
)
)
[usd] => Array
(
[1] => Array
(
[0] => 22
)
[2] => Array
(
[0] => 55
)
)
[eur] => Array
(
[1] => Array
(
[0] => 33
)
[2] => Array
(
[0] => 66
)
)
)
|
Т.е. все переменные пришли.
Чтобы получить данные для первой позиции нужно обратиться к полученным массивам через идентификатор равный 1.
echo $[rub][1];
echo $[usd][1];
echo $[eur][1];
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(22.05.2005 в 23:27)
| | Да, возможно вся проблема состоит в обновлении БД!
Никак не могу додуматься как организовать цикл, который будет обновлять цены в БД.
Не могли бы Вы подсказать цикл, который будет обращаться к MySQL, если будет передаваться такие массивы: $rub[$id][$pr_rub], $usd[$id][$pr_usd] и $eur[$id][$pr_eur]? | |
|
|
|
|
|
|
|
для: Artemy
(23.05.2005 в 10:44)
| | Цены как меняются в зависимости от курса доллара, евро и пр. или ещё из-за чего-то? | |
|
|
|
|
|
|
|
для: cheops
(23.05.2005 в 12:52)
| | Да! Они зависят от курса доллара и евро! Т.е. три ценновых колонок, причем только она из с каким-то значением, а все остальные равны нулю!
if($cat['price_usd'] == 0.00 && $cat['price_eur'] == 0.00)
{
$price_rub = $cat['price_rub'];
$price_usd = $price_rub/$usd;
$price_eur = $price_rub/$eur;
}
if($cat['price_rub'] == 0.00 && $cat['price_eur'] == 0.00)
{
$price_usd = $cat['price_usd'];
$price_rub = $price_usd*$usd;
$price_eur = $price_rub/$eur;
}
if($cat['price_rub'] == 0.00 && $cat['price_usd'] == 0.00)
{
$price_eur = $cat['price_eur'];
$price_rub = $price_eur*$eur;
$price_usd = $price_rub/$usd;
}
|
| |
|
|
|
|
|
|
|
для: Artemy
(23.05.2005 в 13:28)
| | Хм... а нельзя во всей базе данных цену поменять при помощи SQL-запроса UPDATE
UPDATE tbl SET price/$old*$new
|
где $old - старый курс, а $new - новый, price - колонка с ценой. | |
|
|
|
|
|
|
|
для: cheops
(23.05.2005 в 12:52)
| | -- | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(23.05.2005 в 13:34)
| | Что это значит? | |
|
|
|
|
|
|
|
для: Artemy
(23.05.2005 в 13:47)
| | Я начал вам отвечать, но полностью ответить не успевал и пришлось стереть свой пост.
Так, у вас же все позиции сразу меняются. Ведь так?
Тогда вы пробегаете по всем позициям и изменяете каждую. Я не знаю структуру вашей базы данных, поэтому пишу наугад.
<?
// Запрос к таблице, которая содержит позиции
$query="SELECT * FROM table";
$res=mysql_query($query);
while ($row = mysql_fetch_array($res))
{
// Пробегаем по всем записям и обновляем каждую запись
// Допустим, поле $row["id_pos"] содержит идентификатор позиции
$id = $row["id_pos"];
// Здесь такая же обработка, как и у вас, только используя массив $_POST
if($_POST["rub"][$id] == 0.00 && $_POST["eur"][$id] == 0.00)
{
$price_usd = $_POST["usd"][$id];
$price_rub = $price_usd*$usd;
$price_eur = $price_rub/$eur;
}
// Далее по аналогии
if($_POST["usd"][$id] == 0.00 && $_POST["eur"][$id] == 0.00)
{
}
if($_POST["usd"][$id] == 0.00 && $_POST["rub"][$id] == 0.00)
{
}
// Формируем и выполняем запрос на обновление каждой позиции
$query_upd="UPDATE table
SET price_rub=$price_rub,
price_eur= $price_eur,
price_usd= $price_usd
WHERE id_pos=".$row["id_pos"];
$res_upd = mysql_query($query_upd);
}
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(24.05.2005 в 04:09)
| | Почти то, что надо!
Большое Вам, Дизайнер, спасибо! | |
|
|
|