我已为我的网站下载了购物车,
它有一个PHP文件来填写篮子。篮子将在行中显示添加的项目,这是代码:
<?php
define('INCLUDE_CHECK',1);
require "XXXXX/XXXXX.php";
if(!$_POST['img']) die("There is no such product!");
$img=mysql_real_escape_string(end(explode('/',$_POST['img'])));
$row=mysql_fetch_assoc(mysql_query("SELECT * FROM XXXXXX WHERE img='".$img."'"));
$prsize=mysql_fetch_assoc(mysql_query("SELECT * FROM BBBBBB WHERE id='".$row['id']."'"));
echo '{status:1,id:'.$row['id'].',price:'.$row['price'].',txt:\'\
\
<table width="100%" id="table_'.$row['id'].'">\
<tr>\
<td width="60%">'.$row['name'].'</td>\
<td width="10%">$'.$row['price'].'</td>\
<td width="15%"><select name="'.$row['id'].'_cnt" id="'.$row['id'].'_cnt" onchange="change('.$row['id'].');">\
<option value="1">1</option>\
<option value="2">2</option>\
<option value="3">3</option></slect>\
\
</td>\
<td width="15%"><select name="'.$prsize['id'].'_cnt" id="'.$prsize['id'].'_cnt" onchange="change('.$prsize['id'].');">\
我需要把这个
while($item = mysqli_fetch_array($result))
{
这里为大小
制作动态选择菜单<option value="'.$prsize['id'].'">'.$prsize['id'].'</option>\
结束时
}
\
</td>\
<td width="15%"><a href="#" onclick="remove('.$row['id'].');return false;" class="remove">remove</a></td>\
</tr>\
</table>\'}';
?>
但我无法弄清楚如何在那里放PHP,我试图使用“”或“但没有运气。
在HTML代码中如何引用PHP?
由于
答案 0 :(得分:1)
也许是这样的:
$options = "";
while($item = mysqli_fetch_array($result))
$options .= "<option value=\"$item[id]\">$item[id]</option>\\\n";
然后只使用它
echo '{status:1,id:'.$row['id'].',price:'.$row['price'].',txt:\'\
\
<table width="100%" id="table_'.$row['id'].'">\
<tr>\
<td width="60%">'.$row['name'].'</td>\
<td width="10%">$'.$row['price'].'</td>\
<td width="15%"><select name="'.$row['id'].'_cnt" id="'.$row['id'].'_cnt" onchange="change('.$row['id'].');">\
'.$option.'</select>\
...
或者你可以简单地将你的echo
分成两部分,然后把你的循环放在电话之间:
echo '{status:1,id:'.$row['id'].',price:'.$row['price'].',txt:\'\
\
<table width="100%" id="table_'.$row['id'].'">\
<tr>\
<td width="60%">'.$row['name'].'</td>\
<td width="10%">$'.$row['price'].'</td>\
<td width="15%"><select name="'.$row['id'].'_cnt" id="'.$row['id'].'_cnt" onchange="change('.$row['id'].');">\
';
while($item = mysqli_fetch_array($result))
echo "<option value=\"$item[id]\">$item[id]</option>\\\n";
echo '</select>\
\
</td>\
...
顺便说一句,您的</select>
缺少一个“e”(它显示为</slect>
)。
答案 1 :(得分:1)
每当我看到PHP和HTML混合在一起时,我的眼睛都会流血。
我想在您的代码中强调6件事:
1)在我看来,你正试图用你的php构建某种JSON字符串,这是我的证据:
echo '{status:1, id:'.$row['id'].'} //The rest of your code
我想让你知道命令json_encode
,它将php数组转换为类似JSON的字符串,可以通过JavaScript读取(只需命名一个)并以任何你想要的方式进行操作。
这是你使用它的方式:
$myJSONobject = json_encode($myarray)
2)不推荐使用mysql_函数
我不知道每天要输入多少次,但他们不再使用它们了。即使您正在阅读过时的教程,也可能是由于2013年仍然使用 mysql _ * 功能的程序员编写的。
不推荐意味着这些功能可以在任何时间点消失,如果您的服务器更新为不再具有弃用功能的PHP版本,您的所有代码都将被破坏,您会想知道原因。
从现在开始,您必须使用mysqli
或PDO
4)您的SQL容易受到SQL注入攻击
$prsize=mysql_fetch_assoc(mysql_query("SELECT * FROM BBBBBB WHERE id='".$row['id']."'"));
我很确定你在整个程序中编写类似的语句,我也很确定在某些时候你接受用户的输入并进行类似的SQL查询。
如果恶意用户决定输入1 OR 1=1
该用户将执行他不应执行的SQL语句,例如:
SELECT * FROM BBBBBB WHERE id = 1 OR 1=1
如果您使用mysql_*
或mysqli
PDO
函数,则可能会被阻止
因为这些库带有预处理语句预准备语句会强制SQL引擎在将任何数据传递给它之前理解您的查询。因此,如果恶意用户尝试了好的'OR 1 = 1
,那么无关紧要,因为SQL引擎会将其作为任何其他字符串处理,而不是作为命令处理。
5)你的代码是一个丑陋的混乱。
即使这个评论看起来不像是建设性的批评,但实际上,请继续阅读以找出原因。
您编写此程序的方式使其难以维护。你不应该像你一样把PHP和HTML混合在一起。
大多数情况下,您应该只回显或返回原始数据。
如果你是标记代码,绝大多数时候,你做错了。
6)不再使用HTML中的onclick`,这是可怕的做法。请改用事件监听器
<a href="#" id="test">Click me</a>
<script type="text/javascript">
var link = document.getElementById("test").
link.addEventListener("click", function() {
link.innerHTML = "Do not click me anymore please";
});
</script>
回到你的问题,如果你想混合使用PHP和HTML,就没有必要写出这个混乱,我将向你展示一种更清晰的输出方法:
$prsize=mysql_fetch_assoc(mysql_query("SELECT * FROM BBBBBB WHERE id='".$row['id']."'"));?>
{
status:1,
id:<?=$row['id']=?>,
price:<?=$row['price']?>,
txt:
<table width="100%" id="table_<?=$row['id']?>">
<tr>
<td width="60%"><?=$row['name']?></td>
<td width="10%">$<?=$row['price']?></td>
<td width="15%">
<select name="<?=$row['id']?>_cnt" id="<?=$row['id']?>_cnt" onchange="change(<?=$row['id']?>);">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</td>
<td width="15%">
<select name="<?=prsize['id']?>_cnt" id="<?=$prsize['id']?>_cnt" onchange="change(<?=$prsize['id']?>);">
<?php while($item = mysqli_fetch_array($result)): ?>
<option value="<?=$prsize['id']?>"><?=$prsize['id']?></option>
<?php endwhile; ?>
</td>
<td width="15%">
<a href="#" onclick="remove(<?=$row['id']?>);return false;" class="remove">remove</a>
</td>
</tr>
</table>
}
希望这会有所帮助,然后再次......如果您正在创建JSON ...请使用JSON_ENCODE
答案 2 :(得分:0)
$SQL = "SELECT * from xxx WHERE img = '".mysql_real_escape_string($img)."'";
$result = mysql_query( $SQL );
while( $item = mysql_fetch_array( $result ) ) {
echo '<option value="'.$item['id'].'">'.$item['id'].'</option>';
}