Php脚本显示复选框和更新数据库

时间:2015-08-12 17:34:47

标签: php

我有以下代码来查询数据库中的字段hostname,notifier并将其打印在表格中。

$host = "test.xxxx.com";
$user = "host";
$pass = "xxxx";
$db = "hosts";

$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");

mysql_select_db($db) or die ("Unable to select database!");

$owner = $_GET['owner'];
$query = "SELECT `host`,`notifier` FROM `hosts` where `owner`='$owner'";

$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());

echo "<form method='post' action='#'>";
$len = mysql_num_fields($result);
$tempString =  "<html><body><table border='2'><tr>";
for($i=0; $i<$len; $i++)
{$tempString = $tempString.'<th>'.mysql_fetch_field($result)->name.'</th>';}
while ($row=mysql_fetch_array($result, MYSQL_ASSOC))
{$tempString = $tempString.'</tr><tr>';
foreach($row as $cell)
{$tempString = $tempString.'<td>'.(($cell==null) ? '<input type="checkbox">Null field</input>' : $cell).'</td>';}
}
 $tempString = $tempString.'</td></tr></table></body></html>';
 echo $tempString;
 echo "</tbody></table><input type='submit' value='submit'></form>";

如何使用&#34; Y&#34;来包含以下代码来更新我的数据库表?基于复选框中带值的检查值?

 $cell = N;
 if(isset($_POST['cell']) and $_POST['cell']==1) {
  $cell = Y;
}
   $query = mysql_query("UPDATE `hosts`.`hosts` SET `notifier`='$cell' WHERE `host`='$name';") or die ("Error in query: $query. ".mysql_error());

1 个答案:

答案 0 :(得分:0)

Using <th> inside <tr> works - that creates a table header

你有两个基本选择来将复选框放入你的html中。一种是通过你正在使用的echo过程创建html。如果db中的值为null,则if语句将进入foreach循环以创建复选框。您需要使用html中的id =元素为每个复选框命名。每个复选框都需要一个唯一的ID,以便您稍后可以引用它(例如id =“CB_nnn”,其中nnn是从000到任何最大值的值)。 然后,您可以将所有id添加到提交按钮语句中,或者编写一些javascript以将所有唯一ID集合在一起,然后再将数据发送回去。
虽然开始更难,但是将数据作为JSON流或XML流从数据包中打包并通过javascript为用户管理它可能更简单。这将使您更好地分离数据模型(来自数据库)和应用程序的视图部分。这将是MVC的简单应用 - 模型/视图/控制器模式。 这种方法可以让你的一部分javascript专门用于创建用户界面和一套单独的服务,用于管理你的php代码和用户界面之间的数据移动。

以下代码将创建一个表,标头并评估每个字段是否存在由DB引擎返回的空值(在本例中为mysql)。三元运算符(“?”运算符)将显示返回数据的值,或者将显示一个复选框,旁边带有文本“空字段”。

$len = mysql_num_fields($resultSet);
$tempString =  "<html><body><table border='2'><tr>";
for($i=0; $i<$len; $i++)
 {$tempString = $tempString.'<th>'.mysql_fetch_field($resultSet)->name.'</th>';}
 while ($row=mysql_fetch_array($resultSet, MYSQL_ASSOC))
 {$tempString = $tempString.'</tr><tr>';
 foreach($row as $cell)
 {$tempString = $tempString.'<td>'.(($cell==null) ? '<input type="checkbox">Null field</input>' : $cell).'</td>';}
 }
 $tempString = $tempString.'</td></tr></table></body></html>';
 echo $tempString;