PHP / MySQL - HTML表单文本区域查询(查询表单中的每一行)

时间:2016-02-29 22:04:00

标签: php html mysql forms

我需要一种方法让用户将数据粘贴到表单中的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>

2 个答案:

答案 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_方法。