[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP, MySql : Скрипт для расчета ПВЦ окон.
umgala
Наверное для многих данная задача покажется легкой, для меня три дня нервного чтения мануалов, и остановился на том как во временной переменной данные сохранить, и выбрать потом.

В целом скрипт следующий:

1. Посетитель сайта выбирает ссылку с названием " Узнать цену на окна ".
2. Открывается страница, с нарисованными картинками окон (8 картинок) каждая картинка в виде ссылки. (Страница уже сделана).
3. Посетитель сайта выбирает картинку окна, после этого открывается страница с формами (страница с формами уже сделана):
а. Высота окна.
б. Ширина створки А.
в. Радиобуттон: Рядом с каждой радиобуттон мини иконка как открывается створка А.
г. Ширина створки Б.
д. Радиобуттон: Как открывается створка Б.
4. Отправить. Данные сохраняются во временной переменной или как удобнее будет программисту.
5. Появляется страница: Посетитель виден выбранное окно, ссылка "Добавить еще окно." И кнопка "Продолжить"
6. Если продолжить: Форма, с именем, фамилией, установка да \ нет, отделка да \ нет, вывоз мусора да \ нет, подоконник, слив....

7. Отправить. Все данные отправляются в базу данных или на э-почту. Плюсом будет если в базу данных уйдут все данные, а на почту придет письмо. "В базу данных добавлен новый ценовой запрос."



Спустя 7 минут, 3 секунды (9.03.2011 - 14:53) Админ написал(а):
сессии куки - я просто не уловил суть вопроса

Спустя 15 минут, 16 секунд (9.03.2011 - 15:08) umgala написал(а):
Походу тут сессия нужна. Ну если по порядку, я делал так:

Методом GET передавал из списка с окнами, в файл calc.php тип окна "?type=1".
В файле calc.php первая форма с высотой, типом створок и шириной окна... (пункт 3.)

От туда данные уходили в базу данных. Таблица temp. Там сделал ячейки как и в форме. $id, $type (тип окна), $width_window (высота окна), $width_a (ширина створки А), $width_b (ширина створки Б), $row_a (створка А. - тип открывания, от 1...6) , $row_b (створка Б. - тип открывания, от 1...6).

Остановился на том, как после того как данные уже в таблице temp, сделать так чтобы можно было добавить еще одно другое окно, а это сохранилось.

Как сделать страницу, чтобы посетитель видел выбранное окно, ссылку "Добавить еще окно." И кнопку "Продолжить".

И если он нажимает продолжить, выбранные окна сохраняются и открывается форма с контактными данными, после того как он ее заполнит и нажмет Отправить.
Данные с окнами и контактными данными сохранятся в базу.

Спустя 54 минуты, 1 секунда (9.03.2011 - 16:02) umgala написал(а):
залил чтобы наглядно было видно:

1. http://websolution.ee/okna/ Тип окна.
2. http://websolution.ee/okna/calc.php?type=1 Добавление в базу. Таблица Temp

Спустя 1 минута (9.03.2011 - 16:03) Лена написал(а):
Можно или через базу данных делать, как это делаете вы, или через сессии.
Смотрите, вы в базе сохранили уже одну запись. id - поле $id записи должно быть автоинкрементным, тогда вторая запись запишется без проблем.

Чтобы посетитель увидел выбранное окно, вам, получается, нужно сделать запрос к базе на выборку - SELECT * FROM temp... и вывести все это на страницу.
И далее две ссылки:
<a href="add.php">Добавить еще окно</a> - add.php - страница из пункта 2.
Кнопка "Продолжить":
<input type="button" value="Продолжить" name="continue"> - к кнопке можно привязать событие onClick, которое перебросит посетителя на пункт 6.

Выбранные окна, получается, у вас должны сохраниться в другой таблице - таблице заказов. Перед тем, как они сохранятся в таблице заказов, вам нужно очистить таблицу temp.

Вообще-то этот способ плохой и лучше через сессии. Тогда для каждого выбора пользователя установить счетчик, и тогда в $_SESSION надо запихнуть массив:
[1]=>array('type','height','width'),
[2]=>array('type','height','width'),
[3]=>array('type','height','width'),

1,2,3 - выборы пользователя. Как только пользователь отправил контактные данные - сессию чистить.
Т.е. это делают вместо записи в таблицу temp.
Сформировали массив $arr, который я показала выше, а дальше - $_SESSION = $arr;

Спустя 27 минут, 34 секунды (9.03.2011 - 16:30) umgala написал(а):
Спасибо за толковый ответ :-)

А если более приближенно к реальным условиям, вот код:

1. Файл с выбором типа окон к примеру index.php

<a href="calc.php?type=1"> 1 type of window </a>
<a
href="calc.php?type=2"> 2 type of window </a>
<a
href="calc.php?type=3"> 3 type of window </a>
<a
href="calc.php?type=4"> 4 type of window </a>


2. Файл с формой который берет тип окна переданный методом GET. И в котором содержится форма в которой указываем размер и тип створок. HTML код формы: calc.php
<form method='post' class="testform" action='okna/insert_data.php'>

<h2>
Створка 1: </h2>
<h5>
Примерный стандартный размер данного окна (подходит для панельных домов: Мустамяэ, Ыесмяэ, Ласнамяэ): 1530 х 780</h3>
<input
type="hidden" name='type' value="<?php echo ($_GET["type"]); ?>"/>

<p>
<label
for='user'>Высота:</label>

<input
class='text' type='text' name='t1_w' id='user'/>
</p>
<p>
<label
for='user'>Ширина створки 1:</label>
<input
class='text' type='text' name='t1_s1_h' /><br />
</p>

<p>
<label
for="subscribe">Тип створки:</label>
<input
type=radio name='flap' value='1'><img src="stvorka1.jpg" />
<input
type=radio name='flap' value='2'><img src="stvorka2.jpg" />
<input
type=radio name='flap' value='3'><img src="stvorka3.jpg" />
<input
type=radio name='flap' value='4'><img src="stvorka4.jpg" />
<input
type=radio name='flap' value='5'><img src="stvorka5.jpg" />
<input
type=radio name='flap' value='6'><img src="stvorka6.jpg" />
<input
type=radio name='flap' value='7'><img src="stvorka7.jpg" />
</p>
</label>
<h2>
Створка 2: </h2>
<input
type="hidden" name='type' value="<?php echo ($_GET["type"]); ?>"/>

<p>
<label
for='user'>Ширина створки 2:</label>
<input
class='text' type='text' name='t1_s2_h' /><br />
</p>


<p>
<label
for="subscribe">Тип створки:</label>
<input
type=radio name='flap2' value='1'><img src="stvorka1.jpg" />
<input
type=radio name='flap2' value='2'><img src="stvorka2.jpg" />
<input
type=radio name='flap2' value='3'><img src="stvorka3.jpg" />
<input
type=radio name='flap2' value='4'><img src="stvorka4.jpg" />
<input
type=radio name='flap2' value='5'><img src="stvorka5.jpg" />
<input
type=radio name='flap2' value='6'><img src="stvorka6.jpg" />
<input
type=radio name='flap2' value='7'><img src="stvorka7.jpg" />
</p>
<div
class=submit>
<input
type='submit' value='Узнай цену' />
</div>


3. Файл добавления данных в базу данных. insert_data.php
<?php
include ('base.php');
$t1_w = $_POST['t1_w'];
$t1_s1_h = $_POST['t1_s1_h'];
$t1_s2_h = $_POST['t1_s2_h'];
$flap = $_POST['flap'];
$flap2 = $_POST['flap2'];
$type = $_POST['type'];

$sql = 'INSERT INTO temp(t1_w, t1_s1_h, t1_s2_h, flap, flap2, type)
VALUES("'
.$t1_w.'", "'.$t1_s1_h.'", "'.$t1_s2_h.'", "'.$flap.'", "'.$flap2.'" , "'.$type.'")';

if(!mysql_query($sql))
{echo '<center><p><b>Date insert error!!</b></p></center>';}
else
{echo '<center><p><b>Date update!</b></p></center>';}
?>

<?php
include ('get_data.php'); ?>

<a href="index.php">Add window</a>



4. Файл который берет данные из базы и показывает. get_data.php
<?php
include ('base.php')
$sql="SELECT * FROM temp WHERE id='1'";
$res=mysql_query($sql);
echo 'Вы выбрали окно: ';
while ($info=mysql_fetch_array($res))
{
echo '' .$info["id"].'';
echo '<br /> <br />
Ширина: '
.$info["t1_s1_h"].' <br />
Высота: '
.$info["t1_w"].' <br />
'
;
}
?>



Т.е если мне делать через базу данных то мне нужно что в файле get_data.php прописать чтобы они по порядку выходили?
И если через сессии делать что где менять?

УХ.. Надеюсь своими вопросами не замучал :-)

Спустя 5 минут, 52 секунды (9.03.2011 - 16:36) umgala написал(а):
Т.Е нужно чтобы на последней странице, когда размеры выбраны
открылось:

1. Добавлено окно такое-то.
2. Добавить еще окно.
3. Продолжить.

И если добавить еще окно, то

1. Добавлено окно такое-то.
2. Добавлено окно еще одно.
3. Добавить еще окно
4. Продолжить.

www.websolution.ee/okna

Спустя 1 час, 38 минут, 47 секунд (9.03.2011 - 18:15) umgala написал(а):
blink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.