我正在创建一个网页,其中一个人输入一个名称,并在该名称下注册的市场显示在下拉列表中。 这是我的代码的一部分
<form name="login" action="index_submit" method="get" accept-charset="utf-8">
<ul>
<li>
<label for="seller">Seller Name/ID</label>
<input type="text" id="username" placeholder="Seller Username/ID" required>
</li>
<?php
?>
<li>
<label for="marketplace">Choose a marketplace</label>
<select name="url" onchange="menu_goto(this.form)">
<?php
include ('config.php');
$username = $_POST['username'];
$query = "SELECT Marketplace FROM Details WHERE Seller_name='$username' OR Seller_ID='$username'";
$result = mysql_query($dbcon, $query) or die('error getting data');
while ($row = mysql_fetch_array($result)){
echo "<option value="marketplace1">" . $row['Marketplace'] . "</option>";
}
?>
</select>
</li>
但是当我运行.php文件时,我得到一个屏幕,结果是遇到PHP脚本,它下面的html代码保持不变。我是新来的。我无法在代码中检测到错误(如果有的话)。 config.php文件只是与我的数据库建立的连接(不再包含其中的代码)。另外,如果我从代码中删除php脚本,然后显示我的网页,我的其余代码工作正常。我猜这个问题是我的PHP脚本。
编辑:我使用了以下某人的回答: 在用户名输入字段上,输入一个javascript函数,然后使用ajax调用服务器端代码,然后将其结果作为选项附加到url字段。喜欢以下。 <form name="login" action="index_submit" method="get" accept-charset="utf-8">
<ul>
<li>
<label for="seller">Seller Name/ID</label>
<input type="text" onchange="ajaxCall(this.value)" id="username" placeholder="Seller Username/ID" required>
</li>
<?php
?>
<li>
<label for="marketplace">Choose a marketplace</label>
<select name="url" onchange="menu_goto(this.form)">
</select>
</li>
javascript函数应该是这样的。
<script>
function ajaxCall(val)
{
$.post('abc.php',{'username':val},function(res){
$.('#url').html(res);
});
}
</script>
abc.php将会跟随。
<?php
include ('config.php');
$username = $_POST['username'];
$query = "SELECT Marketplace FROM Details WHERE Seller_name='$username' OR Seller_ID='$username'";
$result = mysql_query($dbcon, $query) or die('error getting data');
$res='';
while ($row = mysql_fetch_array($result)){
$res .='<option value="marketplace1">' . $row['Marketplace'] . '</option>';
}
echo $res;
?>
我的整个代码现在正在执行,但我仍然没有在我的下拉列表中获得任何值。(它显示为空白,是的,我的数据库中有值)。
答案 0 :(得分:2)
echo "<option value="marketplace1">" . $row['Marketplace'] . "</option>";
^ ^ ---------> Not escaped
尝试
echo "<option value=\"marketplace1\">" . $row['Marketplace'] . "</option>";
或者
echo '<option value="marketplace1">' . $row['Marketplace'] . '</option>';
希望它有所帮助。
PS:看看MySQLi和/或PDO,因为不推荐使用mysql函数。
编辑:如果没有错误,你有错误报告吗?如果没有插入
error_reporting(E_ALL);
进入你的文档,你应该得到这样的东西:
Parse error: syntax error, unexpected 'marketplace1' (T_STRING), expecting ',' or ';' in C:\xampp\htdocs\testing\index.php on line 2
答案 1 :(得分:1)
假设您已经制作了@yaso
建议的HTML内容像这样更改你的代码,它应该设置错误显示在浏览器窗口上。
我也觉得你用一个像
这样的网址发布这个 example.com/myscript.php?username=OneThatExists
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include ('config.php');
$username = $_POST['username'];
$query = "SELECT Marketplace FROM Details WHERE Seller_name='$username' OR Seller_ID='$username'";
$result = mysql_query($query,$dbcon) or die('error getting data');
while ($row = mysql_fetch_array($result)){
echo "<option value="marketplace1">" . $row['Marketplace'] . "</option>";
}
?>
你应该真的测试一个参数实际上是这样传递的。您可以撰写sanityCheck()
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include ('config.php');
if ( isset($_POST['username']) ) {
$_POST['username'] = sanityCheck($_POST['username']);
$query = "SELECT Marketplace
FROM Details
WHERE Seller_name='{$_POST['username']'
OR Seller_ID='{$_POST['username']}'";
$result = mysql_query($query, $dbcon) or die('error getting data');
while ($row = mysql_fetch_array($result)){
echo "<option value="marketplace1">" . $row['Marketplace'] . "</option>";
}
} else {
// do whatever you want to do if no parameter was entered
}
?>