php html登陆逻辑,保持演示文稿(HTML)和逻辑(PHP)分开

我试图保持演示和逻辑分离,而不使用像Smarty这样的模板引擎.到目前为止我所做的工作是有效的,但我不知道如果不在我的演示文稿中添加更多

PHP而不是我想做的事情.例如,现在我有这样的事情:

product_list.php

try {

$query = $conn->prepare("SELECT p.id,p.name,p.description,IFNULL(url,title) AS url,GROUP_CONCAT(c.category SEPARATOR ',') AS category,FROM products p

LEFT JOIN product_categories pc ON p.id = pc.product_id

LEFT JOIN categories c ON pc.category_id = c.id

WHERE p.active = 1

GROUP BY p.id");

$query->execute();

$result = $query->fetchAll(PDO::FETCH_ASSOC);

}

catch (PDOException $e) {

echo $e->getMessage();

}

include('templates/product_list_tpl.php');

product_list_tpl.php

= $header_title; ?>

Category: = $row['category']; ?>

在上面的例子中,一些产品将有一个类别,一些将具有多个.它们在逗号分隔列表中很好地显示,但我想将类别名称变为链接.我知道我可以做类似下面的事情,但对我来说似乎很麻烦.

= $div_title; ?>

<?= $row['title']; ?>

= $row['title']; ?>

= $row['caption']; ?>

= $row['description']; ?>

Category: 

<?php foreach ($categories as $key => $category): ?>

= $category; ?>

= (sizeof($categories) > 1 && $key == end($categories)) ? ', ' : ''; ?>

Rating: = $row['rating']; ?>

Rated = $row['rated']; echo ($row['rated'] == 1) ? ' time' : ' times'; ?>

提前感谢您的任何建议.此外,如果任何人对我在示例代码中使用的一般分离格式有任何输入,我很乐意听到它.我在休息8年后才开始重新编码.

编辑:根据@Devon在评论中建议,在第三个代码块上添加了缺少的endforeach和改进的缩进.

编辑:我更新了第三个代码块,包括我之前遗漏的HTML,并添加了实现我正在寻找的输出所需的所有PHP功能.它有效,但IMO这样做可以消除我的分离.我现在基本上只有一个文件与我的数据库调用和另一个文件与此混乱.我觉得我没有朝着正确的方向寻找正确的业务逻辑/表示逻辑分离.

我哪里错了?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

层次分析法matlab_建模开讲课程回放2:层次分析法及其MATLAB

建模开讲&#xff1a;层次分析法及其MATLAB实践主讲人&#xff1a;于晶贤老师课程回放地址如下&#xff0c;大家可以复制链接到地址栏即可观看&#xff0c;也可以直接点击左下角的观看&#xff1a;https://ke.qq.com/webcourse/index.html?fromqqchat&cid493154&term_…

raw input()和input区别

版本差异 raw_input——》python2版本 input——》python3版本 2. 输入格式差异 就是raw_input()随便输都是字符串&#xff0c;而input()必须按照Python的规则来~ raw_input() nameraw_input(‘输入姓名&#xff1a;’) ageraw_input(‘输入年龄’) 我们输入汉字的姓名和数…

不同vlan之间如何ping通_【丰润达.安防百科】如何实现交换机不同VLAN、不同网段之间互访?...

交换机如何实现不同网段的互访&#xff1f;这个交换机完全可以实现&#xff0c;在实际项目中&#xff0c;交换机实现不同网段的互访用的也比较多&#xff0c;那么今天我们一起来看下。▎同一个vlan中&#xff0c;不同网段的主机如何互通同一个vlan&#xff0c;不同网段的主机如…

实例5:python

#输入三个整数x,y,z&#xff0c;请把这三个数由小到大输出。 l [] for i in range(3): x int(input(‘integer:\n’)) l.append(x) l.sort() print (l)

背景图层和普通图层的区别_008Photoshop四赞图层(图层样式)

图层过滤器图层滤镜&#xff0c;比如你只想看到像素图层&#xff0c;选择像素图层过滤器&#xff0c;这时就只能看到背景图层了(在图层面板)&#xff0c;如果再点击像素图层过滤器&#xff0c;其他图层又出现了。选中调整图层过滤器&#xff0c;就只能看到图层结构里的调整图层…

实例6:python

#斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;指的是这样一个数列&#xff1a;0、1、1、2、3、5、8、13、21、34、……。 #F0 0 (n0) #F1 1 (n1) #Fn F[n-1] Fn-2 #!/usr/bin/python -- coding: UTF-8 -- #def fib(…

vue devtools面板没有显示_vue 基础入门(四)

vue 基础入门(四)1.全局配置Vue.config 是一个对象&#xff0c;包含 Vue 的全局配置。可以在启动应用之前修改下列 property&#xff1a;1.1 silent类型&#xff1a;boolean默认值&#xff1a;false用法&#xff1a;Vue.config.silent true❝取消 Vue 所有的日志与警告。❞1.2…

vue 生命周期_Vue生命周期小白看了都会的

最近一直在学习Vue&#xff0c;而vue生命周期是我们不可能绕开的一个很核心的知识点&#xff0c;今天来简单的梳理一下大概的内容。一、钩子函数在一开始学习的时候&#xff0c;总有钩子函数这个名词冒出来&#xff0c;而且在vue官网文档中也频繁出现&#xff0c;也相信给很多初…

实例7:python

#将一个列表的数据复制到另一个列表中。 #程序分析&#xff1a;使用列表[:]。 #程序源代码&#xff1a; #!/usr/bin/python -- coding: UTF-8 -- #a [1, 2, 3] #b a[:] #print (b) #import copy #a [1, 2, 3] #bcopy.copy(a) #print(b) #[1, 2, 3] #使用 Python3 的参…

实例8:python

#输出 9*9 乘法口诀表。 #!/usr/bin/python -- coding: UTF-8 -- #for i in range(1, 10): print for j in range(1, i1): print ("%d*%d%d" % (i, j, i*j),) #!/usr/bin/python3 i0 j0 while i<9: i1 while j<9: j1 print(j,“x”,i,"",i*j,…

ant man 什么意思_浅谈为什么很多蓝牙模块厂家选择nRF52832?

浅谈为什么很多蓝牙模块厂家选择nRF52832&#xff1f;现在蓝牙低功耗(BLE)SOC作为新一代蓝牙&#xff0c;以其低功耗的优势&#xff0c;正凸显出强大的市场竞争力&#xff0c;而其中Nordic公司的nRF52832这一款低功耗蓝牙芯片更是受到大家的欢迎。Nordic是一家无晶圆厂半导体公…

实例9:python

#题目&#xff1a;暂停一秒输出。 #程序分析&#xff1a;使用 time 模块的 sleep() 函数 #!/usr/bin/python -- coding: UTF-8 -- import time l[1,2,3,4] for i in range(len(l)): print (l[i]) time.sleep(5) # 暂停一秒输出

php对话框制作,织梦系统“提示窗口对话框类”详解,oxwindow.class.php、catalog_do.php...

如果对织梦系统做过二次开发或学深入研究过的话&#xff0c;一定会知道在我们做织梦二次开发时&#xff0c;一般会把php文件以及对应的模板文件起的名字&#xff0c;除了扩展名外&#xff0c;其它都一样&#xff0c;这是织梦文件起名的一个特点。例如&#xff0c;index_body.ph…

B-JUI文档、下载

概述 特别说明 本文档仅适用于最新版的B-JUI&#xff0c;网站首页或下载页可以查看B-JUI的最后更新时间。 B-JUI前端管理框架适用于快速开发各类WEB管理系统&#xff0c;可与任意后端程序&#xff08;java、php、.net...&#xff09;配合使用。 B-JUI基于Bootstrap样式及jQuery…

vba xml 怎么设置父节点_熊二做了一个xml报文处理的开源库easyxml

❝自信、冷静、专注。—— TM 熊的自我勉励❞1. 前言熊二从去年开始&#xff0c;因项目需求接触到xml报文的处理&#xff0c;也是我第一次学习用C/C的方式处理基于DOM模型的xml报文。因为本人比较懒hhh&#xff0c;所以第一反应就是去看看网上有没有什么大家都在用的比较好的xm…

实例10:python

#题目&#xff1a;暂停一秒输出&#xff0c;并格式化当前时间。 #!/usr/bin/python -- coding: UTF-8 -- import time print (time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime(time.time()))) 暂停一秒 time.sleep(1) print (time.strftime(’%Y-%m-%d %H:%M:%S’,…

iview 可以选择当天 禁用_人脸识别刚要普及,怎么就被禁用了?|人脸识别|人脸信息|世超|rekognition...

点击播放 GIF 0.5M人脸识别大家都不陌生了&#xff0c;从 iPhone 上面的 Face ID 再到支付宝刷脸支付&#xff0c;这个曾经只有在科幻电影上面才能见到的技术逐渐变得越来越司空见惯。点击播放 GIF 0.4M按理来讲&#xff0c;一项方便的技术应该越来越普及才对&#xff0c;不过世…

oracle ytd,hana ytd计算

YTD解答方案要求&#xff1a;输出字段: 年月, YTD金额因为我这边只有system一个账号&#xff0c;就用system账号写合同表的结构和数据如下:create column table "SYSTEM"."CONTRACTS"("CONTRACT_ID" INTEGER null, --合同ID"START_DATE&qu…

linux 识别文件类型,技术|Linux 中 7 个判断文件系统类型的方法

文件通过文件系统在磁盘及分区上命名、存储、检索以及更新&#xff0c;文件系统是在磁盘上组织文件的方式。文件系统分为两个部分&#xff1a;用户数据和元数据(文件名、创建时间、修改时间、大小以及目录层次结构中的位置等)。在本指南中&#xff0c;我们将用 7 种方法来识别你…

二分归并排序算法_第五篇排序算法|归并排序

0x01&#xff0c;前言闲叙最近几年很少看电视了&#xff0c;因为没时间看了&#xff0c;除了偶尔刷刷头条&#xff0c;基本上不会花大块的时间沉迷于电视剧&#xff0c;综艺&#xff0c;这或许就是短视频时代所带来的一些改变吧&#xff0c;我们都会深受其中。0x02&#xff0c;…