Простая задача PHP обновления базы данных с помощью радио-кнопок - PullRequest
3 голосов
/ 13 апреля 2011

Фронт-энд дизайнер здесь, а не PHP-разработчик, и мне действительно нужна помощь. Нужно сделать систему, которая позволит клиенту входить в свою область для обновления таблицы. В таблице будет около 20 записей, и каждая строка будет редактироваться с помощью переключателей (4 варианта). Всего 2 столбца, один для идентификатора и один вызываемый статус (редактируемые данные).

Зритель увидит только изменения, внесенные клиентом, и изменение цвета фона для этой строки в зависимости от состояния, что означает, что редактируемая часть должна содержать 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 Ответ

1 голос
/ 14 апреля 2011

Самый простой способ запустить это обновление (или способ, которым я в любом случае пользуюсь) - использовать javascript. Имейте каждый раздел радиоблоков в его собственной форме, которая автоматически отправляет onChange, и включите скрытую переменную, чтобы указать отправку страницы. Затем просто напишите функцию для обновления базы данных на основе введенного идентификатора пользователя (или того, что вы проверяете) и его выбора ...

Что-то вроде:

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, чтобы отразить и эту разницу

...