#php #mysql #html-table #radio-button
#php #mysql #html-таблица #переключатель
Вопрос:
Я дизайнер внешнего интерфейса, а не разработчик PHP, и мне действительно нужна помощь. Необходимо создать систему, которая позволит клиенту входить в свою собственную область для обновления таблицы. В таблице будет около 20 записей, и каждая строка будет редактироваться с помощью переключателей (4 варианта). Всего 2 столбца, один для идентификатора и один под названием status (редактируемые данные).
Просмотрщик увидит только изменения, внесенные клиентом, и изменение цвета фона в этой строке в зависимости от статуса, что означает, что редактируемая часть должна будет содержать 2 фрагмента данных (целочисленное значение для изменения цвета и название статуса, например, значение переключателя для изменения цвета и метка кнопки для отображения текста в ячейке). О системе входа в систему поговорим позже…
Настройка базы данных:
Database: test
Table: fire_alert
Structure:
id (INT, PRIMARY); color(INT); warning(VACHAR);
connect.php
:
<?php
// Database Variables (edit with your own server information)
$server = 'localhost';
$user = 'root';
$pass = 'root';
$db = 'test';
// Connect to Database
$connection = mysql_connect($server, $user, $pass)
or die("Could not connect to server ... n" . mysql_error());
mysql_select_db($db)
or die("Could not connect to database ... n" . mysql_error());
?>
view.php
:
<div id="container">
<?php
// connect to the database
include('connect.php');
include("header.php");
// get results from database
$result = mysql_query("SELECT * FROM fire_alert")
or die(mysql_error());
echo "Current date - " . date("Y/m/d") . "<br /><br />";
// display data in table
echo "<table>";
echo "<tr> <th>Area</th> <th>Status</th></tr>";
// loop through results of database query, displaying them in the table
while($row = mysql_fetch_array($result)) {
// echo out the contents of each row into a table
echo "<tr>";
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['warning'] . '</td>';
echo "</tr>";
}
// close table>
echo "</table>";
echo '<td><a href="edit.php' . $row['id'] . '">Change Area Status</a></td>';
?>
</div>
<body>
</body>
</html>
edit.php
(только для клиентского доступа) пока никаких изменений динамических данных, жестко закодированный HTML:
<?php include("header.php"); ?>
<?php include("connect.php"); ?>
<div id="container" class="edit">
<div id="radio1">
<?
$result = mysql_query("SELECT * FROM fire_alert")
or die(mysql_error());
echo "Current date - " . date("Y/m/d") . "<br /><br />";
?>
<table class="edit">
<tr><th>Area</th><th>Status</th></tr>
<tr>
<td>1</td>
<td>
<form method="post" action="edit.php">
<input type="radio" id="radio1" name="radio" value="1" /><label for="radio1">Safe</label>
<input type="radio" id="radio2" name="radio" value="2" /><label for="radio2">Caution L1</label>
<input type="radio" id="radio3" name="radio" value="3" /><label for="radio3">Caution L2</label>
<input type="radio" id="radio4" name="radio" value="4" /><label for="radio4">Closed</label>
</form>
</td>
</tr>
</table>
</div>
<?php echo '<td><a href="view.php' . $row['id'] . '">Update</a></td>'; ?>
</div>
Ответ №1:
Самый простой способ запустить это обновление (или способ, которым я пользуюсь в любом случае) — использовать javascript. Имейте каждый раздел радиоблоков в своей собственной форме, которая автоматически отправляется при изменении, и включайте скрытую переменную для указания отправки страницы. Затем просто напишите функцию для обновления базы данных на основе введенного идентификатора пользователя (или того, что вы проверяете) и их выбора…
Что-то вроде:
if($_POST["submit"] == 1)
{
$id = $_POST["id"];
$radio = $_POST["radio"];
$query = "UPDATE fire_alert SET warning = '$radio' WHERE id = '$id'";
$result = mysql_query($query) or die(mysql_error());
}
У вас проблема с тем, как вы отформатировали свой view.php ссылка, эта строка должна быть следующей:
‘Обновить’; ?>’
Хотя вышеупомянутое не совсем сработает так, как вы намереваетесь, поскольку оно не отправляет форму, поэтому значения переключателей передаваться не будут … вместо этого вы должны сделать:
<form method="post" action="edit.php">
<input type="radio" id="radio1" name="radio" value="1" onChange="this.submit()"/><label for="radio1">Safe</label>
<input type="radio" id="radio2" name="radio" value="2" onChange="this.submit()"/><label for="radio2">Caution L1</label>
<input type="radio" id="radio3" name="radio" value="3" onChange="this.submit()" /><label for="radio3">Caution L2</label>
<input type="radio" id="radio4" name="radio" value="4" onChange="this.submit()"/><label for="radio4">Closed</label>
<input type="hidden" name="id" value="<?=$row["id"]?>" />
</form>
И вам также нужно отредактировать свой php, чтобы отразить это различие