<?php
switch($_REQUEST['command']){
case 'delete':
if ($_REQUEST['pid']>0){
remove_product($_REQUEST['pid']);//Удаляем
}
break;
case 'clear':
unset($_SESSION['cart']);//Очищаем
break;
//Если нажата кнопка обновления, то обращаемся к команде обновления корзины
case 'update': //Обновляем
$max=count($_SESSION['cart']); //Колво товаров в корзине
for($i=0;$i<$max;$i++){ //Цикл до тех пор пока товары не кончатся =)
$pid=$_SESSION['cart'][$i]['productid']; //Идентификатор товара
$q=intval($_REQUEST['product'.$pid]); //Кол-во единиц данного товара
if($q > 0 && $q <= 999){ //Если кол-во больше нуди меньше 999 то
$_SESSION['cart'][$i]['qty']=$q; //Обновляем кол-во
}
else{
$msg=$lang['phrase_8']; //Если чето не разруливается, то говорим, что мол слишком много...
}
}
break;
}
ob_start(); //Буфиризация
?>
<table border="0" cellpadding="5px" cellspacing="1px" style="font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1" width="100%">
<br>
<br>
<tr bgcolor="#FFFFFF" style="font-weight:bold">
<td width="160">Изображение:</td>
<td>Наименование</td>
<td>Цена</td>
<td>Кол-во</td>
<td>Итого</td>
<td width="20">#</td>
</tr>
<?php
if(is_array($_SESSION['cart'])){ //Если корроче массиф есть, то
$max=count($_SESSION['cart']); //Определяем кол-во товаров в массиве
for($i=0; $i<$max; $i++){ //Перебираем весь массив
$pid=$_SESSION['cart'][$i]['productid']; //ID товара
$q=$_SESSION['cart'][$i]['qty']; //Кол-во(шт)
$pname=get_product_name($pid); //Имя продукта
$pic=get_product_pic($pid); //Картинка
if($q==0) continue;
?>
<tr bgcolor="#FFFFFF">
<td valign="middle" align="center"><div style="width: 150px; height: 150px; overflow: hidden; background: url(<?php echo $out_img=(empty($pic)) ? 'style/images/no_image.jpg' : $pic;?>) no-repeat;"></td>
<td ><a href="more.php?p_id=<?=$pid?>"><?=$pname?></a></td>
<td ><?=get_price($pid); echo($site_settings['currency']);?></td>
<td ><input type="text" name="product<?=$pid?>" value="<?=$q?>" maxlength="3" size="2" /></td>
<td ><?=get_price($pid)*$q; echo($site_settings['currency']);?></td>
<td ><a href="javascript:del(<?=$pid?>)"><img src="style/images/delete.png"/></a></td>
</tr>
<?php
}
}
else{
echo '<tr bgColor="#FFFFFF"><td colspan="6"><center>Корзина пуста.</center></td>';
}
?>
<tr>
<td><b><?=$lang['label_total']?> <?=get_order_total(); echo($site_settings['currency']);?></b></td>
<td colspan="5" align="right">
<input type="button" value="Очистить" onclick="clear_cart()">
<input type="button" value="Обновить" onclick="update_cart()">
<input type="button" value="Оплатить" onclick="window.location='index.php?page=order'">
</td>
</tr>
</table>
<?php
$out=ob_get_contents(); //попипастим
ob_end_clean();
include 'style/pages/cart/cart.tpl'; //Вот сюда
?>
Начал разделять логику от какашек.
Вот это решил положить в контроллер:
<?php
switch($_REQUEST['command']){
case 'delete':
if ($_REQUEST['pid']>0){
remove_product($_REQUEST['pid']);//Удаляем
}
break;
case 'clear':
unset($_SESSION['cart']);//Очищаем
break;
//Если нажата кнопка обновления, то обращаемся к команде обновления корзины
case 'update': //Обновляем
$max=count($_SESSION['cart']); //Колво товаров в корзине
for($i=0;$i<$max;$i++){ //Цикл до тех пор пока товары не кончатся =)
$pid=$_SESSION['cart'][$i]['productid']; //Идентификатор товара
$q=intval($_REQUEST['product'.$pid]); //Кол-во единиц данного товара
if($q > 0 && $q <= 999){ //Если кол-во больше нуди меньше 999 то
$_SESSION['cart'][$i]['qty']=$q; //Обновляем кол-во
}
else{
$msg=$lang['phrase_8']; //Если чето не разруливается, то говорим, что мол слишком много...
}
}
break;
}
?>
Вот это во View:
<?php
ob_start();
if(is_array($_SESSION['cart'])){ //Если корроче массиф есть, то
$max=count($_SESSION['cart']); //Определяем кол-во товаров в массиве
for($i=0; $i<$max; $i++){ //Перебираем весь массив
$pid=$_SESSION['cart'][$i]['productid']; //ID товара
$q=$_SESSION['cart'][$i]['qty']; //Кол-во(шт)
$pname=get_product_name($pid); //Имя продукта
$pic=get_product_pic($pid); //Картинка
if($q==0) continue;
include 'style/tpl/table.tpl';
}
}
else{
echo '<tr bgColor="#FFFFFF"><td colspan="6"><center>Корзина пуста.</center></td>';
}
?>
$out=ob_get_contents(); //попипастим
ob_end_clean();
include 'style/pages/cart/cart.tpl'; //Вот сюда
Вот это в table.tpl:
<tr bgcolor="#FFFFFF">
<td valign="middle" align="center"><div style="width: 150px; height: 150px; overflow: hidden; background: url(<?php echo $out_img=(empty($pic)) ? 'style/images/no_image.jpg' : $pic;?>) no-repeat;"></td>
<td ><a href="more.php?p_id=<?=$pid?>"><?=$pname?></a></td>
<td ><?=get_price($pid); echo($site_settings['currency']);?></td>
<td ><input type="text" name="product<?=$pid?>" value="<?=$q?>" maxlength="3" size="2" /></td>
<td ><?=get_price($pid)*$q; echo($site_settings['currency']);?></td>
<td ><a href="javascript:del(<?=$pid?>)"><img src="style/images/delete.png"/></a></td>
</tr>
А вот это в cart.tpl:
<table border="0" cellpadding="5px" cellspacing="1px" style="font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1" width="100%">
<?php echo $out; ?>
<tr>
<td><b><?=$lang['label_total']?> <?=get_order_total(); echo($site_settings['currency']);?></b></td>
<td colspan="5" align="right">
<input type="button" value="Очистить" onclick="clear_cart()">
<input type="button" value="Обновить" onclick="update_cart()">
<input type="button" value="Оплатить" onclick="window.location='index.php?page=order'">
</td>
</tr>
</table>
Но кажется, что получился полный бред. Ведь нелогично под каждый элемент делать шаблон? Да и в коде остались теги. Как разделить правильно?
Спустя 1 час, 30 минут, 53 секунды (23.05.2011 - 11:22) sebastjan написал(а):
Вот и меня этот вопрос долго мучает.
Испольлзовать темплайты мне уж как то совсем не по душе, одна морока потом искать где какой кусок хтмл кода.
И редизайн затруднительно делать.
Сделе себе без темплайтов, сделал нсколько страниц хтмл на котрых есть различия по дизайну
и меняю только данные с пхп.
Конечно понимаю что это отсебячина но мне так проще, минус в этом что делать редирек затруднительно, так как инклюденный болк пхп в середине хтмл документа и заголовок не первый отправляеться, но кажеться и это дело можно обойти используя хеширование.
Как и вы буду ждать коментариев.
Испольлзовать темплайты мне уж как то совсем не по душе, одна морока потом искать где какой кусок хтмл кода.
И редизайн затруднительно делать.
Сделе себе без темплайтов, сделал нсколько страниц хтмл на котрых есть различия по дизайну
и меняю только данные с пхп.
Конечно понимаю что это отсебячина но мне так проще, минус в этом что делать редирек затруднительно, так как инклюденный болк пхп в середине хтмл документа и заголовок не первый отправляеться, но кажеться и это дело можно обойти используя хеширование.
Как и вы буду ждать коментариев.
Спустя 17 минут, 57 секунд (23.05.2011 - 11:40) XCross написал(а):
Я вот о чем подумал. Мелкие элементы(такие, как постраничка(там одни ссылки) либо таблицы) их не выносить в отдельные шаблончики так как потом действительно ,как ты говоришь, будет затруднительно сменить дизайн.
профи, жду вашего мнения и советов
Себастьян, я думал,что один такой)))
профи, жду вашего мнения и советов
Себастьян, я думал,что один такой)))
Спустя 5 минут, 42 секунды (23.05.2011 - 11:46) Renden написал(а):
kmaks
sebastjan
Ненадо делать 100 тпл-ек, зачем. Просто делаешь модуль php файл в котором ты генеришь нужную тебе информацию, геты, посты, запросы к базе и тп. Все пишешь в переменные или массив, создаешь tpl для этого модуля, и там уже перебираешь массив и выводишь переменные нужные, кода php в tpl получается минимум(echo, if, foreach), но зато в контроллере, и в модуле мы имеем полное отсутвие html кода. Ну и в сам контроллер инклудишь этот модуль, или другой, или 3-й в зависимости от того чего тебе нужно. Я не про, но я делаю так))
sebastjan
Ненадо делать 100 тпл-ек, зачем. Просто делаешь модуль php файл в котором ты генеришь нужную тебе информацию, геты, посты, запросы к базе и тп. Все пишешь в переменные или массив, создаешь tpl для этого модуля, и там уже перебираешь массив и выводишь переменные нужные, кода php в tpl получается минимум(echo, if, foreach), но зато в контроллере, и в модуле мы имеем полное отсутвие html кода. Ну и в сам контроллер инклудишь этот модуль, или другой, или 3-й в зависимости от того чего тебе нужно. Я не про, но я делаю так))
Спустя 32 минуты, 47 секунд (23.05.2011 - 12:19) Krevedko написал(а):
делаешь основной шаблон, который содержит хидер, футер, меню и повторяющиеся элементы на страницах.
и потом под каждую страницу делаешь шаблон контента.
все весьма просто...контроллеру main.php соответствует темплейт main_view.tpl, контроллеру например registration.php соответствует registration_view.tpl
контроллеры лежат у себя в папке controllers
виды лежат у себя в папке views. под каждый вид еще можно подпапку сделать
и потом под каждую страницу делаешь шаблон контента.
все весьма просто...контроллеру main.php соответствует темплейт main_view.tpl, контроллеру например registration.php соответствует registration_view.tpl
контроллеры лежат у себя в папке controllers
виды лежат у себя в папке views. под каждый вид еще можно подпапку сделать
Спустя 1 минута, 24 секунды (23.05.2011 - 12:20) XCross написал(а):
Видимо еще рановато
Спустя 18 минут, 39 секунд (23.05.2011 - 12:39) Krevedko написал(а):
это я еще не говорю про то, что все запросы к базе должны лежать в файлах моделей.
обычно в виде функций (классов с методами), к которым ты обращаешься из контроллера и они возвращают тебе результат (булево значение, массив , переменную итд)
ЗЫ Должны в данном случае надо понимать под требованием мвц ...делать ты волен как хочешь )
обычно в виде функций (классов с методами), к которым ты обращаешься из контроллера и они возвращают тебе результат (булево значение, массив , переменную итд)
ЗЫ Должны в данном случае надо понимать под требованием мвц ...делать ты волен как хочешь )
Спустя 35 минут, 48 секунд (23.05.2011 - 13:14) maurise написал(а):
На счёт того, что редизайн делать трудно, я категорически не согласен. Вот когда и код и вид в одном файле смешаны, тогда трудно. Помню дали мне сайт на перле - всё в одном файле, чуть умом не тронулся, пока разобрался. А когда вид отдельно, код отдельно, чего же трудного? Как раз и хорошо менять дизайн, не трогая программной части и наоборот, доработать функционал, не боясь испортить дизайн.
Спустя 6 минут, 10 секунд (23.05.2011 - 13:21) Krevedko написал(а):
согласен как грица на все сто. у меня в виде вы никогда не увидите ни циклов, ни условий. только echo $... в нужных местах
Спустя 2 минуты, 24 секунды (23.05.2011 - 13:23) Renden написал(а):
Krevedko
Тогда у тя всяко пару html-ных тегов присутвует в контроллере, или нет?
Да и логику полностью из шаблона убрать помоему не реально, придется либо писать чуть-чуть в контролере html, или бить на много шаблонов.
Тогда у тя всяко пару html-ных тегов присутвует в контроллере, или нет?
Да и логику полностью из шаблона убрать помоему не реально, придется либо писать чуть-чуть в контролере html, или бить на много шаблонов.
Спустя 3 минуты, 48 секунд (23.05.2011 - 13:27) maurise написал(а):
Я так понимаю, что если пустить в код теги типа <ul> или <а>, то ничего страшного не произойдёт. Это всего лишь структура. А вот как будут выглядеть все эти списки, ссылки и таблицы, задаёшь в виде.
Спустя 3 минуты, 49 секунд (23.05.2011 - 13:31) XCross написал(а):
Я имел ввиду бедет затруднительно менять шаблон, если будет множество tpl'ек. Но так как это не правильно делать 100 tpl значит буду делать как получится.
С разделением вообще косяк у меня. Еще и дождь пошел, ниче делать не хочется
С разделением вообще косяк у меня. Еще и дождь пошел, ниче делать не хочется
Спустя 6 минут, 21 секунда (23.05.2011 - 13:37) maurise написал(а):
Ну, что тут сказать, каждый делает как ему удобнее. Но по мне, если ты меняешь шаблон, причём, кардинально меняешь, то тебе старые tpl-ки и не понадобятся. А если изменения небольшие, то чаще всего достаточно поменять CSS
Спустя 50 минут, 19 секунд (23.05.2011 - 14:27) sebastjan написал(а):
Цитата (maurise @ 23.05.2011 - 10:14) |
На счёт того, что редизайн делать трудно, я категорически не согласен. Вот когда и код и вид в одном файле смешаны, тогда трудно. Помню дали мне сайт на перле - всё в одном файле, чуть умом не тронулся, пока разобрался. А когда вид отдельно, код отдельно, чего же трудного? Как раз и хорошо менять дизайн, не трогая программной части и наоборот, доработать функционал, не боясь испортить дизайн. |
Про вид отдельно и код отдельно, это првильно.
Про редизайн и темплайты не соглашусь, ничего не легче менять.
Приходиться брать шаблонн хтмл страницы, делать редизайн, которой как раз не изменишь методом Цсс, когда к примеру блоки меняются местами или ещё тому подобное.
Так вот там редактировать, потом вырезать и вставлять в темплайт.
Я основнуюшаблон страницу, вернее сам скелет так и оставил в хтмл, внутри всё что надо просто инклюдю модули которые что то выполняют.
Файлов получаеться минимум.
В самих модулях присутствует хтмл но отдельно от логики, модули небольшие по количеству строк, так что нет смысла делать для них свои темплайты.
Дизайн легко поменять любому верстальщику, так как костяк сайта представлен из 3-6 хтмл страниц с вставкой инклюдов(модулей) которые играют основную роль в формировании сайта.
Так и не получил для себя оптимала в ответах,если модули включают несколько строк хтмл, не стоит тогда для них темплайт делать.
Может ещё я не созрел я для таких конструкций.
Спустя 10 минут, 17 секунд (23.05.2011 - 14:38) Renden написал(а):
sebastjan
А смысл таких модулей если у него вывод 2 строки html?)) Можно сделать функцию например. В моем понятии модуль это то что расшираяет сильно функционал, например модуль новости, модуль страницы, модуль файлы и тп. А не просто <?php $a = date("d.m.Y");?> смысл под такой код делать модуль?)
А смысл таких модулей если у него вывод 2 строки html?)) Можно сделать функцию например. В моем понятии модуль это то что расшираяет сильно функционал, например модуль новости, модуль страницы, модуль файлы и тп. А не просто <?php $a = date("d.m.Y");?> смысл под такой код делать модуль?)
Спустя 8 минут, 50 секунд (23.05.2011 - 14:46) sebastjan написал(а):
Ну это я так назвал *модули* части документа формируемые скриптом, которые олгично конечно заменить функциями.
Мне просто как начинающему в таких модулях легче орентироваться, чем искать что там я передал функции.
В моём варианте ,например, страницу артикли-подключаю модуль, он формирует из бд блок с этими артиклями.
Модуль на столько мал что действительно его можно напрямик всунуть в хтмл страницу без инклюда.
Но хочеться хоть немного по человечески приблизиться к нормальному стилю, вот и начал тоже отделять кости отдельно, мясо отдельно.
Мне просто как начинающему в таких модулях легче орентироваться, чем искать что там я передал функции.
В моём варианте ,например, страницу артикли-подключаю модуль, он формирует из бд блок с этими артиклями.
Модуль на столько мал что действительно его можно напрямик всунуть в хтмл страницу без инклюда.
Но хочеться хоть немного по человечески приблизиться к нормальному стилю, вот и начал тоже отделять кости отдельно, мясо отдельно.
Спустя 18 минут, 1 секунда (23.05.2011 - 15:04) XCross написал(а):
Цитата |
Но хочеться хоть немного по человечески приблизиться к нормальному стилю, вот и начал тоже отделять кости отдельно, мясо отдельно. |
Сегодня начал. Некоторые не получаются приходится занаво вю логику перестраивать(if, else).
Так как код и состоял только из условных операторов которые там всем рулили. А теперь попробуй вынести код в отдельный файл, а разметку в другой..
_____________
Обмен Ukash на WebMoney