|
 5.5 Кб |
|
| Скрипт выводит небольшой список цен и список в виде колличества(см скрин). Так как там несколько строк я немогу после выбора колличества товара и его цены оправить в базу. Тоесть если бы было одно наименование, то проще...
Вобщем помогите из этой формы сделать запись в базу.
<form name='form' method='post' action='./add.php'>
<?php
$result_form=mysql_query("SELECT * FROM price ORDER BY sort ",$db);
$myrow=mysql_fetch_array ($result_form);
do
{
$price1=$myrow['price1']-$myrow['price1']*$status/100;//вычисление процентов
$price2=$myrow['price2']-$myrow['price2']*$status/100;//$status скидка юзера
printf("
<tbody>
<tr>
<td width='20'>№%s</td>
<td> %s </a></td>
<td> %s грн.
<select class='textfield' name='test' >
<optgroup label='штук' style=''>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
</optgroup>
</select>
</td>
<td> %s грн.
<select class='textfield' name='test' >
<optgroup label='штук' style=''>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
</optgroup>
</select>
</td>
</tr>
<tr> </tr>
</tbody> "
,$myrow['id'],$myrow['model'],$price1,$price2 );
}
while ($myrow=mysql_fetch_array ($result_form))
?>
<div id='actions'> <input class='' type='submit' name='submit' value='продолжить заказ' /> </div>
</form>
|
Не понятна сама концепция вывода из "%s"в базу , ведь в цикле постоянно новое значение.
Может воспользоватся какимто др синтаксисом?
Выводить для каждой строки форму , а потом в базу не очень красиво будет.
ps на скрине полный список | |
|
|
|
|
|
|
|
для: vorobey
(25.03.2010 в 18:57)
| | а как Вы пытаетесь записать в базу?
приведите пример запроса к базе на запись | |
|
|
|
|
|
|
|
для: Slo_Nik
(25.03.2010 в 19:27)
| | В том-то все и дело что я немогу понять как в моем случае сделать запрос.
хочу вот в таком духе
<option value='$price1'>$price1</option>
$res= mysql_query("INSERT INTO table(price1,pric2,price3) VALUES ('$price1','$price2','$pric3')");
|
| |
|
|
|
|
|
|
|
для: vorobey
(25.03.2010 в 19:36)
| | Вы пробовали это сделать или дальше желания дело не пошло?
что именно Вам не понятно? | |
|
|
|
|
|
|
|
для: Slo_Nik
(25.03.2010 в 19:39)
| | те 2 строки что я привел, не заработают в любом случае.
Мне непонятно вот что
когда едет цыклл он подставляет в %(номер) %(модель) %(цена1) %(цена2) %(цена3) из базы
и так пока цикл не закончится 7 раз (может и больше потом будет)
пользователь видит
№1 модель 100 грн 200 грн 300 грн
.......
№2 модел4 300грн 400грн 350 грн
и на против каждой цены свой список выбора колличества товара
после формирования формы как из этих списков, когда пользовательвыбирает количество
отправить эти выбранные количества в базу. Т.е. посылка самих данных. (я не метод post имею ввиду).
А из каких переменных выхватывать данные ? | |
|
|
|
|
|
|
|
для: vorobey
(25.03.2010 в 18:57)
| | >Не понятна сама концепция вывода из "%s"в базу , ведь в цикле постоянно новое значение.
сделайте в ячейке таблицы тег input и тогда можете заносить данные в БД
<?php
// предыдущий код
..................................................
echo "<td><input type='text' name='name' value='%s'></td>"
.................................................
// последующий код
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(25.03.2010 в 19:52)
| | а как тогда скрипт поймет что мне нужна value ='s%' из модели 4 или 2 ?
онож должно както различать value ='s%' их там получается 21 штук какие то пустые какието со значением | |
|
|
|
|
|
|
|
для: vorobey
(25.03.2010 в 19:57)
| | а вот это в атрибуте name тега input надо задать, имена должны быть разные
и для select тоже
сделайте для первой цены name , допустим, name1 , для второй цены - name2 и т.д.
в начале обработчика напишите
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
|
и Вы увидите те данные, которые пришли из формы | |
|
|
|
|
|
|
|
для: Slo_Nik
(25.03.2010 в 19:52)
| | а понял сделать value тоже динамическим значением какимто из базы....
Скажите , а как синтаксически будет выглядеть
выборка из %s в моем случае ? | |
|
|
|
|
|
|
|
для: vorobey
(25.03.2010 в 20:02)
| | ни чего не надо делать, Вы и так уже подставляете динамически из базы данные.
printf($format [,$args...]) выводит аргументы в окно браузера, отформатированные в соответствии со строкой $format. $args Вы получаете из базы, %s(спецификатор) указывает, где $args должен быть помещён в строку $format. в Вашем случае, надо использовать не %s, этот спецификатор используется для подстановки строки, а надо использовать %f для десятичного числа с плавающей точкой.
просто в ячейку таблицы вписать тег input как я писал вышеб но только в ту из которой данные будут записываться в БД | |
|
|
|
|
|
|
|
для: Slo_Nik
(25.03.2010 в 20:14)
| | Сделал так, работает как надо.
<?
printf("
<tbody>
<tr>
<td width='20'>№%s</td>
<td><a class='site' href='http://' target='_blank'> %s </a></td>
<td title='модель 1'> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
<td title='модель 2'> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
</tr>
<tr> </tr>
</tbody> "
,$myrow['id'],$myrow['model'],$price1,$i=$i+1,$price2,$i=$i+1 );
?>
|
Вы меня наталкнули на мысь, а я наверно не совсем правильно проблему изложил.
Вот не понял зачем мне "%f" онож после знака слишком длинно получается 110.000000 гривен - не красивая цена.
За этот код спосибо
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
|
както подзабыл. | |
|
|
|
|
|
|
|
для: vorobey
(25.03.2010 в 18:57)
| | попов? | |
|
|
|
|
|
|
|
для: psychomc
(25.03.2010 в 22:59)
| | в смысле?
кстати это моя фамилия ). Мы знакомы? | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 00:46)
| | фамилия может и Попов, но не Евгений...
правильно?
наберите в google Евгений Попов и всё станет ясно_
кстати, у Вас получается? | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.03.2010 в 00:56)
| | да получилось все.
Про попова все знаю и даже понял почему возник вопрос.
из за "do-while" несколько постов ниже уже поминали.
без do первый id хоть убей не вытаскивает. | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 01:00)
| | >без do первый id хоть убей не вытаскивает.
как так?! | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 01:00)
| | Значить перед циклом вы уже вызывали $myrow=mysql_fetch_array ($result_form);
сделайте print_r ( $myrow); и вы поймёте почему не стоит использовать mysql_fetch_array( ) | |
|
|
|
|
|
|
|
для: oliss
(26.03.2010 в 01:24)
| | было только это. К другой таблице обращение
$myrow_user=mysql_fetch_array($result);
|
А в двух словах можете сказать чем плох ?
| |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 01:52)
| | >А в двух словах можете сказать чем плох ?
>mysql_fetch_array( )
А вы сделали мои рекомендации, что выше ( тогда бы вопроса не возникло ) ? | |
|
|
|
|
|
|
|
для: oliss
(26.03.2010 в 02:31)
| | Выдало все записи в таблице print_r ( $myrow);
И что страшного ? Украдут? Взломают? | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 01:00)
| | покажите как Вы без do{...} while пытались поучить id | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.03.2010 в 01:28)
| |
<?
while ($myrow=mysql_fetch_array ($result_form))
{
$price1=$myrow['price1']-$myrow['price1']*$status/100;//вычисление процентов
........................................
$price7=$myrow['price7']-$myrow['price7']*$status/100;//вычисление процентов
printf("<tbody>
........................................
</tbody> "
,$myrow['id'],$myrow['model'],$price1,$i=$i+1,$price2,$i=$i+1,$price3,$i=$i+1,$price4,$i=$i+1,$price5,$i=$i+1,$price6,$i=$i+1,$price7,$i=$i+1 );
}
?>
|
под id я имел ввиду всю первую запись в таблице | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 01:46)
| | а это что такое?
$i=$i+1
и не в тему вопрос, куда тег <table></table> подевался? | |
|
|
|
|
 15.3 Кб |
|
|
для: Slo_Nik
(26.03.2010 в 01:50)
| | Это $i=$i+1 нужно лятого чтоб получить в post - это количество заказанных товаров.
на скрине (те поля которые в списках)
Array
(
[amount1] => 0
[amount2] => 0
[amount3] => 0
[amount4] => 0
[amount5] => 0
[amount6] => 0
[amount7] => 0
[amount8] => 5
[amount9] => 0
[amount10] => 0
[amount11] => 0
[amount12] => 0
[amount13] => 0
[amount14] => 0
[amount15] => 0
[amount16] => 3
[amount17] => 0
[amount18] => 0
[amount19] => 0
[amount20] => 0
[amount21] => 0
[amount22] => 0
[amount23] => 0
[amount24] => 0
[amount25] => 0
[amount26] => 0
[amount27] => 0
[amount28] => 0
[amount29] => 0
[amount30] => 0
[amount31] => 0
[amount32] => 0
[amount33] => 0
[amount34] => 0
[amount35] => 3
[submit] => продолжить заказ
)
|
а насчет <table> он расположен выше. шапка таблицы не должна попадать в цикл | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 01:57)
| | >Это $i=$i+1 нужно лятого чтоб получить в post - это количество заказанных товаров.
речь идёт о $_POST ? | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.03.2010 в 02:02)
| | Да о POST
в amount1-34 - это товары онито мне нужны для базы
без $i=$i+1 выдовало массив из 6 последних значений. | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 02:06)
| | что то я совсем не пойму, что Вы пытаетесь добиться через $i=$i+1
покажите полностью код | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.03.2010 в 02:21)
| |
<form name='form' method='post' action='./add.php'>
.....тут ..... html.....
<?php
$i=0;
$result_form=mysql_query("SELECT * FROM price ORDER BY sort ",$db);
$myrow=mysql_fetch_array ($result_form);
do
{
$price1=$myrow['price1']-$myrow['price1']*$status/100;//вычисление процентов
$price2=$myrow['price2']-$myrow['price2']*$status/100;
$price3=$myrow['price3']-$myrow['price3']*$status/100;
$price4=$myrow['price4']-$myrow['price4']*$status/100;
$price5=$myrow['price5']-$myrow['price5']*$status/100;
$price6=$myrow['price6']-$myrow['price6']*$status/100;
$price7=$myrow['price7']-$myrow['price7']*$status/100;//вычисление процентов
printf("
<tbody>
<tr>
<td width='20'>№%s</td>
<td><a class='site' href='http://' target='_blank'> %s </a></td>
<td title='модель 1'> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
<td title='модель 2'> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
<td title='модель 3'> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
<td title='модель 4'> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
<td title='модель 5'> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
<td title='модель 6'> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
<td title='Ваша цена. Выбрать количество матрасов! '> %s грн.
<select class='textfield' name='amount%s' >
<optgroup label='штук' style='background:Gainsboro; color:#8B0000'>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</optgroup>
</select>
</td>
</tr>
<tr> </tr>
</tbody> "
,$myrow['id'],$myrow['model'],$price1,$i=$i+1,$price2,$i=$i+1,$price3,$i=$i+1,$price4,$i=$i+1,$price5,$i=$i+1,$price6,$i=$i+1,$price7,$i=$i+1 );
}
while ($myrow=mysql_fetch_array ($result_form))
?>
<tfoot>
<tr>
</tr>
</tfoot>
</table>
</div>
</div>
<div id='actions'> <input class='' type='submit' name='submit' value='продолжить заказ' /> </div>
</form>
|
'amount%s' к %s подставляется $i=$i+1 . Ну может надо было както красивей оформит а не писать 7 штук $i=$i+1, но это не приоритет. | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 02:24)
| | >Ну может надо было както красивей оформит а не писать 7 штук $i=$i+1, но это не приоритет.
люди стремятся сократить код, а не растягивать одно и тоже по скрипту.
теперь объясните.
это <td width='20'>№%s</td> id записи в таблице БД ?
<td title='модель 1'>,<td title='модель 2'>,<td title='модель 3'> это одна и таже вещь, но только с различиями в цене?
в select для каждого варианта Вы устанавливаете кол-во товара?
и попробуйте в запросе получить пока только id всех записей и вывести через while
$query = "SELECT id FROM price";
$p = mysql_query($query);
if(mysql_num_rows($p) > 0){
while($pr = mysql_fetch_assoc($p)){
print_r($pr);
}
}
}
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(26.03.2010 в 02:52)
| | >это <td width='20'>№%s</td> id записи в таблице БД ?
это номер по порядку (нумерация из другого поля будет) те места на скрине №1 -№6
>в select для каждого варианта Вы устанавливаете кол-во товара?
точно.
там над ценниками в шапке приведенны размеры в кв-е 7 (ее нет на скрине)
тоесть одна модель 7 размеров.
спасибо! завтра продолжу | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 03:03)
| | Вот выводит id по порядку.
Array ( [id] => 1 ) Array ( [id] => 2 ) Array ( [id] => 3 ) Array ( [id] => 4 ) Array ( [id] => 5 ) Array ( [id] => 6 )
|
а как подставить мою форму туда? | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 11:06)
| | вместо print_r($pr); форматируйте свой вывод данных | |
|
|
|
|
|
|
|
для: Slo_Nik
(26.03.2010 в 13:26)
| | Спасибо так выглядит более правильно и без "do" .
>oliss писал что mysql_fetch_array( ) плох
Я так и не понял почему ? | |
|
|
|
|
|
|
|
для: vorobey
(26.03.2010 в 14:48)
| | так он же Вам писал, что бы Вы следали вывод в окно браузера и посмотрели разницу....
>автор: oliss (26.03.2010 в 01:24)
> для: vorobey (26.03.2010 в 01:00)
>
.Значить перед циклом вы уже вызывали $myrow=mysql_fetch_array ($result_form);
>сделайте print_r ( $myrow); и вы поймёте почему не стоит использовать mysql_fetch_array( )
сделайте
<?php
$myrow=mysql_fetch_array ($result_form);
echo "<pre>";
print_r($myrow);
echo "</pre>";
?
|
и потом
<?php
$myrow=mysql_fetch_assoc($result_form);
echo "<pre>";
print_r($myrow);
echo "</pre>";
?
|
внимательно посмотрите на дамп массива, первого и второго, почитайте в руководстве об этих функциях | |
|
|
|