我需要一种方法让用户将数据粘贴到表单中的textarea中
并单独查询每一行
例如 - 让我们说用户需要获得每个人的年龄
来自db。而不是一次做一个名字 - 用户粘贴
10个名字。
NAME1
NAME2
name3等
然后用户提交表单,php输出为:
name1 | 43个
name2 | 21个
name3 | 17等。
有什么建议吗?
由于
<?php
//dbstuff:
$connection = mysql_connect($host,$user,$pass) or die (mysql_errno().": ".mysql_error()."<BR>");
mysql_select_db($dbname);
$list = explode("\r\n", htmlentities($_POST['name'])); // 'names' is the name of your textarea; I use htmlentities to help sanitize the data; $list is now an array of the entries split by a new line character
foreach($list as $l){
$name = $l;
//query the DB
$query= "select peg_site_id, fa_code from cpm where peg_site_id='". $name."'";
}
//DEBUG
$debug = 1; //Select 1 for ON, or 2 for OFF
if ($debug == 1){
echo "<br /><br />START DEBUG<br />" . "*********************************<br />" . $query. "<br /><br />" . $count_query. "<br /><br />" . "*********************************<br />" . "END DEBUG<br />";
}
else {
echo "";
}
?>
<html>
<head>
<style type="text/css">
h4 {font-family: sans-serif}
p {font-family: courier}
p.sansserif {font-family: sans-serif}
</style>
</head>
<body>
<?php
// Print out result
$result= mysql_query($query);
$num_results = mysql_num_rows($result);
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
echo "<b>Customer Site ID:</b> ".$row['fa_code'] . " <b>Site ID:</b> ".$row['peg_site_id'] . "</br>";
//echo "--------------------------------------------------------";
//echo "</br></br>";
}
?>
</font>
答案 0 :(得分:0)
您可以使用PHP中的 explode 功能从textarea中拆分字符串。拆分字符串后,您将迭代结果数组并查询数据库。请参阅爆炸文档:http://php.net/manual/en/function.explode.php
答案 1 :(得分:0)
基本上,您将采用表单输入并将其拆分为单独的实体,然后在每个实体上运行查询。例如:
$list = explode("\r\n", htmlentities($_POST['names'])); // 'names' is the name of your textarea; I use htmlentities to help sanitize the data; $list is now an array of the entries split by a new line character
foreach($list as $l){
$name = $l;
//query the DB
}
这是你要找的东西的要点吗?
修改强>
您只收到了最后一个,因为您只对最后一个进行了查询。你这样做的方法看起来有点奇怪。当我插入//query the DB
时,我的意思是,在那时查询数据库;不创建查询语句以便稍后运行。您使用
$query= "select peg_site_id, fa_code from cpm where peg_site_id='". $name."'";
每次循环时,都会重新创建变量$query
。所以$query
变量只会有一个条目。 $num_results
只会是一个。我建议这样的事情:
$html = '';
foreach($list as $l){
$name = $l;
//query the DB
$query= "select peg_site_id, fa_code from cpm where peg_site_id='". $name."'";
$result= mysql_query($query);
$row = mysql_fetch_array($result);
$html .= "<b>Customer Site ID:</b> ".$row['fa_code'] . " <b>Site ID:</b> ".$row['peg_site_id'] . "</br>";
}
echo $html;
您会注意到我创建了$html
变量,将与我想要的HTML格式集成的查询结果添加到其中,然后我echo
一次全部输出。希望有所帮助!
P.S。作为旁注,我使用PDO
来查询数据库,因为mysql_
已被弃用。我强烈建议切换到使用mysqli_
或PDO
方法而不是mysql_
方法。