[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нудна маленькая помощь с формой
temnet
Собственно вот есть код.
Он дает выбрать количество товара в инет магазе. Но дает только выбрать а не вписать руками....Подскажите как поправить его так что бы количество можно было вписывать руками?

#//++++++++++++++++++++++++
if($_GET['event']=="price")
{
if($_GET['zapros']==true)
{
$title='Прайслист категории '.$_GET['zapros'];
$telo.="<h4>Прайслист категории ".$_GET['zapros']."</h4><table cellspacing=\"5\" cellpadding=\"5\"
border=\"0\"><tr><td>Название</td><td>Артикул</td><td>Цена</td ><td>Описание</td><td>Сколько купить (в корзину)</td></tr>
<form class=form action=
\"index.php\" method=\"post\">
"
;
$summa=0; $tempik=""; $i = 0;
foreach($pricelist as $items)
{ $est=true;
foreach (explode("-",$_GET['zapros']) as $itemz)
{
if (strstr ($items, $itemz) == false) {$est=false;}
}

if ($est !== false)
{
$temp=explode("|",$items);
#echo '<pre>';print_r($temp);echo '</pre>';
$summa+=$temp[2]; $i++;
$telo.="
#__________________Вот этот кусочек_______________________________________
<tr><td>
$temp[0]</td><td>$temp[1]</td><td>$temp[2]</td>
<td>
$temp[3]</td><td>
<select size=
\"1\" name=\"$temp[1]\">";
for ($x=0; $x<=50; $x++)
{$telo.="<option value=".$x.">".$x."</option>";}
$telo.="</select>
#_________________________________________________________


</td></tr>"
;
}
}

$telo.="</table>
<input type=
\"submit\" name=\"event\" value=\"add_price\"></form>

"
;
$telo.="<br />Всего представлено ".$i." товаров на сумму: ".$summa." рублей<br />";

}
else{$_GET['event']='error';$_GET['zapros']=$r6;}
}

#//++++++++++++++++++++++++




Спустя 24 минуты, 52 секунды (21.10.2011 - 09:24) johniek_comp написал(а):
а php выучить? не?
тут тебе такое бесплатно никто не сделает, давай капусту!!!

Спустя 32 минуты, 34 секунды (21.10.2011 - 09:57) temnet написал(а):
php учу потихонечку )) как его без примеров выучить то =)

Капусту =) Лучше орехами =) Шучу ) Ну на мой взгляд тут же пару строк поправить ) Тут и без капусты можно же =)

html знаю ) На php потихоньку начал писать, свой простейший движок делал....Но с формами просто пока не сталкивался. Пришлось столкнуться и вот застопорился.....

С Уважением Артём!

Спустя 6 минут, 7 секунд (21.10.2011 - 10:03) johniek_comp написал(а):
ладно, тогда для начала помести код в сообщении в бб теги что бы подсветка была

Спустя 2 минуты, 39 секунд (21.10.2011 - 10:05) XCross написал(а):
temnet, дак замени select на text и цикл убери.

				<select size="1" name="'.$temp[1].'">';
for ($x = 0; $x <= 50; $x++){
$telo .= "<option value=".$x.">".$x."</option>";
}

$telo .= "</select>


на

<input type="text" name="'.$temp[1].'" value=""/>

Спустя 12 минут, 5 секунд (21.10.2011 - 10:17) temnet написал(а):
kmaks

Спасибо! Вот копаюсь при замене вылетает Parse error: syntax error, unexpected T_STRING.....

Меняю как вы и подсказали...

С Уважением Артём!

Спустя 2 минуты, 14 секунд (21.10.2011 - 10:20) XCross написал(а):
покажи че получилось.

А зечем вы себе жизнь усложняете?
Цитата
\"

Берите строки в одинарные кавычки да и все, чтоб двойные не экранировать.

Спустя 5 минут, 54 секунды (21.10.2011 - 10:26) temnet написал(а):
				<text size="1" name="'.$temp[1].'">';

<input type="text" name="'
.$temp[1].'" value=""/>

$telo .= "</text>


По двойным это фришный скрипт прайслиста ) Поэтому под себя дописать пытаюсь)
Все почти сделано ) Вот мешает только эта форма =)

Спасибо за помощь!
С Уважением Артём!


Спустя 4 минуты, 10 секунд (21.10.2011 - 10:30) XCross написал(а):
Дак ты скинь полностью цельный получившийся код, а не кусок

Спустя 2 минуты, 7 секунд (21.10.2011 - 10:32) temnet написал(а):
#//++++++++++++++++++++++++
if($_GET['event']=="price")
{
if($_GET['zapros']==true)
{
$title='Прайслист категории '.$_GET['zapros'];
$telo.="<h4>Прайслист категории ".$_GET['zapros']."</h4><table cellspacing=\"5\" cellpadding=\"5\"
border=\"0\"><tr><td>Название</td><td>Артикул</td><td>Цена</td>< td>Описание</td><td>Сколько купить (в корзину)</td></tr>
<form class=form action=
\"index.php\" method=\"post\">
"
;
$summa=0; $tempik=""; $i = 0;
foreach($pricelist as $items)
{ $est=true;
foreach (explode("-",$_GET['zapros']) as $itemz)
{
if (strstr ($items, $itemz) == false) {$est=false;}
}

if ($est !== false)
{
$temp=explode("|",$items);
#echo '<pre>';print_r($temp);echo '</pre>';
$summa+=$temp[2]; $i++;
$telo.="

<tr><td>
$temp[0]</td><td>$temp[1]</td><td>$temp[2]</td>
<td>
$temp[3]</td><td>
_________________вот тут менял и так и сяк_______________________
<input type="
text" name="'.$temp[1].'" value="">
_____________________________________________________________

</td></tr>"
;
}
}

$telo.="</table>
<input type=
\"submit\" name=\"event\" value=\"add_price\"></form>

"
;
$telo.="<br />Всего представлено ".$i." товаров на сумму: ".$summa." рублей<br />";

}
else{$_GET['event']='error';$_GET['zapros']=$r6;}
}

#//++++++++++++++++++++++++


А про прошлы кусочек что я писал видимо я вообще там ахинею написал так как такого параметра <text></text> и не существует =)

С Уважением Артём!

Спустя 4 минуты, 10 секунд (21.10.2011 - 10:36) YVSIK написал(а):
Цитата (johniek_comp @ 21.10.2011 - 09:24)
а php выучить? не?
тут тебе такое бесплатно никто не сделает, давай капусту!!!

biggrin.gif особенно вот это место!!

давай капусту!!!
что-то уже мне это напоминает !? или я не прав? johniek_comp?

Спустя 1 минута, 45 секунд (21.10.2011 - 10:38) temnet написал(а):
kmaks
Я понял что я еще и не туда пишу =))))
Что input ведь ниже идет =)
Но там же стоят параметры submit и прочее.....

Спустя 40 секунд (21.10.2011 - 10:38) XCross написал(а):
<?php
#//++++++++++++++++++++++++
if($_GET['event']=="price")
{
if($_GET['zapros']==true)
{
$title='Прайслист категории '.$_GET['zapros'];
$telo.='<h4>Прайслист категории '.$_GET['zapros'].'</h4>
<table cellspacing="5" cellpadding="5" border="0">
<tr>
<td>Название</td>
<td>Артикул</td>
<td>Цена</td>
<td>Описание</td>
<td>Сколько купить (в корзину)</td>
</tr>

<form class=form action="index.php" method="post">'
;

$summa=0; $tempik=""; $i = 0;
foreach($pricelist as $items)
{ $est=true;
foreach (explode("-",$_GET['zapros']) as $itemz)
{
if (strstr ($items, $itemz) == false) {$est=false;}
}

if ($est !== false)
{
$temp=explode("|",$items);
#echo '<pre>';print_r($temp);echo '</pre>';
$summa+=$temp[2]; $i++;
$telo.='
<tr>
<td>'
.$temp[0].'</td>
<td>'
.$temp[1].'</td>
<td>'
.$temp[2].'</td>
<td>'
.$temp[3].'</td>
<td><input type="text" name="имя" value=""></td>
</tr>'
;
}
}

$telo.='</table>
<input type="submit" name="event" value="add_price"></form>'
;

$telo.='<br />Всего представлено '.$i.' товаров на сумму: '.$summa.' рублей<br />';

}
else{$_GET['event']='error';$_GET['zapros']=$r6;}
}

#//++++++++++++++++++++++++

Спустя 7 минут, 38 секунд (21.10.2011 - 10:46) temnet написал(а):
kmaks

Спасибо что помогаете )

При вводе количества теперь выскакивает

Warning: Invalid argument supplied for foreach() in /home/*******/public_html/index.php on line 722


Отрывок где возникает

#//++++++++++++++++++++++++
if($_GET['event']=="my_price")
{
if(file_exists("data/price/".session_id().".txt")==true)
{
$title=$ling[$lang][27];

#$temp=file("data/price/".session_id().".txt");
$telo.="<h4>".$ling[$lang][27]."</h4><table cellspacing=\"5\" cellpadding=\"5\"
border=\"0\"><tr><td>Название</td><td>Артикул</td><td>Цена</td>< td>Описание</td><td>Шт.</td><td></td></tr>";
$summa=0; $tempik="";
foreach(file("data/price/".session_id().".txt") as $item)
{$item = trim($item);
$tempik[$item]++;
}

Тут 722 строка foreach($tempik as $key=>$items)
{
$temp=explode("|",$key);
$summa+=$temp[2]*$items;
$telo.="<tr><td>$temp[0]</td><td>$temp[1]</td><td>$temp[2]</td>
<td>
$temp[3]</td><td>$items</td><td><a href=index.php?event=del_price&articul=".$temp[1].">Удалить</a></td></tr>";
}
$telo.="</table>";
$telo.="<br />Всего на сумму: ".$summa." рублей<br />";
$telo.="<br /><form class=form action=index.php method=post>
Ваш номер телефона и адрес доставки:<br><textarea class=search name=
\"komment\" rows=5 cols=40 wrap=\"on\"></textarea><br>
Электронная почта: <input class=search type=text name=pochta size=20 maxlength=100>
<input type =
\"hidden\" name=\"sendsumma\" value =".$summa.">
<input class=submit type=submit name=event value=buy>
<br /><br />Очистить корзину:
<input class=submit type=submit name=event value=clear>
</form>"
;
}
if(file_exists("data/price/".session_id().".txt")==false){$_GET['event']='error';$_GET['zapros']=$r6;}
}

#//++++++++++++++++++++++++


C Уважением Артём!

Спустя 5 минут, 46 секунд (21.10.2011 - 10:52) XCross написал(а):
походу $tempik не массив.

Спустя 10 минут, 44 секунды (21.10.2011 - 11:03) temnet написал(а):
kmaks
Тогда как лучше думаю сделать?)

Еще вариант сделать вариант как было расширив значение x до 3000 ? smile.gif

С Уважением Артём!

Спустя 4 минуты, 40 секунд (21.10.2011 - 11:07) Игорь_Vasinsky написал(а):
Свернутый текст
Цитата
php учу потихонечку ))

так ты же магазин блин делаешь, если себе - то лан.. но если заказчику - ты представляешь скока потом, когда его сломают, у тя головника то будет.

что за мода.. ни чё не умею, но делаю магазин.


Спустя 2 минуты, 55 секунд (21.10.2011 - 11:10) XCross написал(а):
Цитата
ни чё не умею, но делаю магазин.

Не вижу ничего плохого. Помнишь, как я только пришел? Ничего не понимал, смотрел на код, как баран на новые ворота. Через неделю уже взял заказ, не имея представления что делать. Ниче, справился ведь. Получилось весьма не плохо. Пока претензий не было.

Спустя 3 минуты, 48 секунд (21.10.2011 - 11:14) temnet написал(а):
Игорь
Исключительно себе =) Заказчику и прочее это профессионалам ) А нам до них далеко )
По скольку сам работаю в IT сфере отчетливо понимаю что какждый профессионал в своей сфере.
Тут же для себя, заодно новые знания. Собственно инет магазин простейший. Мог сделать просто прайс выкинуть без корзины и прочего и телефон на сайте. И ломать нечего. Но вот решил что нужно подругому )
Я же не делаю сайт под заказчика или прочего =) Все для себя )

Спасибо тем кто помогает!

С Уважением Артём!

Спустя 1 минута, 53 секунды (21.10.2011 - 11:16) Игорь_Vasinsky написал(а):
моё высказывание звучало как - совет.
я например тока рад буду если встречу дырявый магазин.

учить надо всё по порядку. в соседнем топике чел 4 дня назад начал учить php и ща выложил скрипт ... даже слов нет.. и формы и бд..... даже вникать не стал чё там на калякано.

ТС - удачь. учение - свет.

Спустя 9 минут, 58 секунд (21.10.2011 - 11:26) temnet написал(а):
Игорь

Спасибо! Да я как совет и воспринимаю )
По безопасности - честно ну вот например сломают магазин мой страшного ничего не будет. Электронных платжей нет, админок нет, паролей нет.... Копии каждые 24 часа )
Я бы с радостью безопасностью в первую очередь занялся )
Но все познается постепенно )
Например первый год сис админства помню серваки поднял с RDP для работы из дома) Так на шлюзе даже фильтра по ip не было ) Не задумывался я тогда ) как первые ласточки полетели быстро пришлось заботится уже о шлюзе ) Все же потихонечку учим ) Такие как я на своих ошибках наверное, но чужой опыт стараюсь перенимать )



По теме - увеличил значение x до 1500, когда больше 10-15 позиций на страницу сайт начинает тормозить =)
Вообщем то нужно все таки возвращаться для поля что бы вручную вписывались данные да еще ограничить символы для вписания....

Спустя 2 минуты, 19 секунд (21.10.2011 - 11:28) Игорь_Vasinsky написал(а):
да просто нагадят там.. обидно же - стока труда.

Спустя 20 минут, 45 секунд (21.10.2011 - 11:49) temnet написал(а):
Начал по php читать )

kmaks
А подскажите почему должен $tempik массивом быть?
Я вот читаю что такое массив в php......
Но не пойму почему input text в том случае не проходит....
Ведь по идее select выборка передает теже значения........

А еще заметил что Warning: Invalid argument supplied for foreach() on line 722
выскакивает с нулевым значением при select....

С Уважением!

Спустя 2 минуты, 37 секунд (21.10.2011 - 11:51) Игорь_Vasinsky написал(а):
foreach - это цикл, используемый для "распаковки" массивов

чё ещё за $tempik... я тока это вижу

foreach (explode("-",$_GET['zapros']) as $itemz)

Спустя 1 минута, 22 секунды (21.10.2011 - 11:53) XCross написал(а):
Цитата
Тут 722 строка  foreach($tempik as $key=>$items)

Спустя 2 минуты, 26 секунд (21.10.2011 - 11:55) Игорь_Vasinsky написал(а):
а как он формируется то?

нужно наверно сначала проверку делать: массив это или нет...

if(is_array($tempik))
{
//это массив
}
else
{
//это не массив
}

Спустя 5 минут, 31 секунда (21.10.2011 - 12:01) m4a1fox написал(а):
Проблему решили?

Спустя 55 минут, 28 секунд (21.10.2011 - 12:56) temnet написал(а):
m4a1fox

Решаю )

Спасибо всем за советы!

Пока искал решение этой проблемы(так пока не дошел до решения)
пришлось исправлять еще моментов 15 ))))
А именно что бы с нулевым значение в корзине ошибки не было это раз.
Добавкой пары полей в форме отправки заказа на почту. и прочее ) Следующим шагом возвращаюсь к своей предыдущей проблеме с количеством )
Вот так вот дерни за веревочку весь клубок приходится переделывать ()
Но зато столько нового для себя узнал )

Спустя 1 минута, 42 секунды (21.10.2011 - 12:58) Winston написал(а):
Цитата (temnet @ 21.10.2011 - 11:49)
foreach() on line 722

Вы весь магазин в одном файле пишите? ohmy.gif

Спустя 1 минута, 27 секунд (21.10.2011 - 12:59) Игорь_Vasinsky написал(а):
а ты добавь в начале кода

error_reporting(E_ALL);


если есть ошибки - увидишь все.

Цитата
Вы весь магазин в одном файле пишите?

может это ещё только - корзина.

Спустя 30 минут, 58 секунд (21.10.2011 - 13:30) temnet написал(а):
Ура!
Удалось решить =)

Единственное осталось поставить ограничение на символы......

Кстати может подскажет кто как лучше это сформировать?
Нужно что бы не более 4 знаков цифр могло находится в input text...

Winston
Это корзина




Стало
{ $temp=""; 
foreach(file("data/price/".session_id().".txt") as $items)
{$temp.=$items."\r\n";}



Было
{       $temp=""; $tempik=array();
foreach(file("data/price/".session_id().".txt") as $item)
{$item = trim($item);
$tempik[$item]++;
}

foreach($tempik as $key=>$items)
{
$temp2=explode("|",$key);
$summa+=$temp2[2]*$items;
$temp.="$temp2[0] $temp2[1] $temp2[2] (руб./шт.) $temp2[3] $items Шт.\r\n";
}

Спустя 51 секунда (21.10.2011 - 13:31) Winston написал(а):
Для input'a поставь атрибут maxlength="4"

Спустя 2 минуты, 9 секунд (21.10.2011 - 13:33) Игорь_Vasinsky написал(а):
в инпут добавь атрибут


maxlength = "4"

Winston тебяж здесь не было biggrin.gif

Спустя 21 секунда (21.10.2011 - 13:34) temnet написал(а):
Winston
Спасибо!
А что бы только цифры? ну фильтр по знакам и т д?

С Уважением Артём!

Спустя 1 минута, 9 секунд (21.10.2011 - 13:35) Winston написал(а):
Цитата (Игорь_Vasinsky @ 21.10.2011 - 13:33)
Winston тебяж здесь не было

Я здесь и не здесь я везде и нигде :P



Спустя 1 минута, 27 секунд Winston написал(а):

Цитата (temnet @ 21.10.2011 - 13:34)
А что бы только цифры?

if(preg_match("#\d{4}#", $var))
echo 'OK';

Цитата
ну фильтр по знакам и т д?

Какой фильтр ?
Свернутый текст
Цитата (temnet @ 21.10.2011 - 13:34)
С Уважением Артём!

Тёзка :)

Спустя 7 минут, 46 секунд (21.10.2011 - 13:43) temnet написал(а):
Winston
Спасибо!
Тёзке решили помочь бесплатно?)_

Про фильтр я и имел ввиду чтобы отсекались все символы(буквы,знаки) кроме цифр.

if(preg_match("#\d{4}#", $var))
echo 'OK';

Теперь бы понять как эту конструкцию реализовать к
<input type=\"text\" name=\"sum\" value=\"\" maxlength=\"4\" >


С Уважением Артём!

Спустя 4 минуты, 23 секунды (21.10.2011 - 13:47) Winston написал(а):
Цитата (temnet @ 21.10.2011 - 13:43)
Тёзке решили помочь бесплатно?)_

На форуме все бесплатно помогают, а вот когда просят за них написать, тогда деньги вперед :)
Цитата (temnet @ 21.10.2011 - 13:43)
Про фильтр я и имел ввиду чтобы отсекались все символы(буквы,знаки) кроме цифр

Ты когда будешь обрабатывать данные которые из инпута пришли, тогда и применяй фильтр
if(preg_match("#\d{4}#", $_POST['sum']))

Спустя 30 минут, 42 секунды (21.10.2011 - 14:18) temnet написал(а):
Собственно почему то пишу но не получается.....

Это то что есть код
if ($_GET['sum']==false) {$_GET['sum']=1;} 
$title=$ling[$lang][26];
$fpp=fopen("data/price/".session_id().".txt", "a+");
foreach($pricelist as $items)
{
if(strpos($items,$_GET['articul'])==true)
{
while ($_GET['sum']>0)
{fputs($fpp,$items."\r\n"); $_GET['sum']--;}



Добавляю в него

{if(preg_match("#\d{4}#", $_POST['sum']));}

или
{if(preg_match("#\d{4}#", $_GET['sum']));}



Но всеравно..... Точнее как символы то не появляются в корзине.
Просто сверху ошибка выскакивает которая указывает на
foreach($tempik as $key=>$items)



Вопрос еще такой. А можно в параметрах input как нибудь просто заблокировать ввод символов?

С Уважением Артём!

Спустя 3 минуты, 8 секунд (21.10.2011 - 14:21) Winston написал(а):
Цитата (temnet @ 21.10.2011 - 14:18)
input как нибудь просто заблокировать ввод символов

С JavaScript нужно парится
Цитата (temnet @ 21.10.2011 - 14:18)
{if(preg_match("#\d{4}#", $_POST['sum']));}

:blink: Такой записи нету !
Так нужно:
if(preg_match("#\d{4}#", $_POST['sum']))
{
// Здесь пиши код который будет выполнятся, если в строке только цифры
}

Спустя 14 минут, 25 секунд (21.10.2011 - 14:35) temnet написал(а):
Winston
Спасибо! За такой метод вдвойне!
Я наконец дошел своим уставшим мозгом до полного осознания if )
Что это условие для продолжения а в {} вставляем дейтсвие которое будет выполняться при этом условии )
Я вот с javaScript попарился ) Вдруг и вам когда пригодится =)

<input type=\"text\" name=\"sum\" value=\"\" maxlength=\"4\" onkeyup=\"this.value=parseInt(this.value) | 0\">


Вообщем то спасибо всем кто помог! Столько помощи =) Можно сказать как будто вернулся лет на 5 в институт )

С Уважением Артём!


Быстрый ответ:

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