繁体   English   中英

PHP脚本显示复选框并更新数据库

[英]Php script to display checkbox and update database

我有以下代码来查询数据库中的字段主机名,通知者并将其打印在表中。

$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>";

如何包含以下代码,以基于复选框中的已检查值和“ Y”更新数据库表?

 $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());
Using <th> inside <tr> works - that creates a table header

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

以下代码将创建一个表,标头,并评估每个字段是否存在由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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM