0

ドロップダウン、ラジオ ボタン、テキスト フィールド、テキストエリア、および非表示の値 (時間) を使用するフォームを作成しようとしています。そのフォームからその情報を取得し、SQL データベースを更新します。

私のフォームは以下にあり、すべて正しく読み込まれますが、値の更新に問題があり、値のphpコードを作成できず、値を渡す必要があるため、ラジオボタンとドロップダウンを機能させる方法を見つけようとしています。Web で見つけたものはすべて、ユーザーが何かを入力するテキスト フィールドの操作方法です。

更新を選択すると、データが送信されますが、何も変わりません。update.php の最後にサニタイズ関数があり、変数を渡す方法がわかりません。$var という名前の配列を作成し、すべての変数をそれに入力するか、一度に各変数を渡すか?

私は Web で HOW TO を検索しており、現在 2 冊の本を読んでいますが、十分な詳細が説明されていないため、ご協力いただきありがとうございます。

control.php

 <?php
 session_start();
 if( !isset($_SESSION['myusername']) ){ header("Location: login.php"); }
 ?> 

 <?php 
 require("../../system/templates/includes/constants.php");
 $connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
 if(!$connection) { die("Database connection failed: " .mysql_error()); }
 $db_select = mysql_select_db(DB_NAME,$connection);
 if(!$db_select) { die("Database selection failed: " . mysql_error()); }
 ?>

<form method="post" action="update.php">
<select name="name" required="true" value="<?php echo $row['name']; ?>">
<?php                         
$query="SELECT id, name FROM modules";
$result=mysql_query($query);
while ($row=mysql_fetch_array($result)) {
echo "<option value=\"" . $row['id'] . "\">" . $row['name'] . "</option>";
}
?>
</select>
<br />
Select Status:
Red    <input type="radio" value="red" name="status" />
Yellow    <input type="radio" value="yellow" name="status" />
Green    <input type="radio" checked="checked" value="green" name="status" />
<br />
Reason:
<br />
<select name="reason" required="true">
<option value="0" selected="selected" value="">Select Reason</option>
<option value="ONLINE">Online</option>
<option value="MAINTENANCE">Maintenance</option>
<option value="ERROR">Error</option>
<option value="OFFLINE">Offline</option>
<option value="">No Reason</option>
</select>
<br />
ETA:
<br />
<input type="text" name="eta" value="<?php echo $row['eta']; ?>" maxlength="8" />
<br />
Description:
<br />
<textarea rows="5" cols="30" name="explanation" wrap="hard" required="true" maxlength="320" value="<?php echo $row['description']; ?>" /></textarea>
<br />
<div align="right">
<input name="update" type="submit" value="Update"/>
<input type="hidden" name="last_updated" value="<?php $mysqldate = date ('H:i');  $phpdate = strtotime ( $mysqldate );?> />
 </form>

update.php

<?php
print_r(_POST);
if(isset($POST['update']))
{
$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
if(! $connection) 
{
die('Could not connect: ' .mysql_error());
}
$name = $POST['name'];
$status = $POST['status'];
$reason = $POST['reason'];
$eta = $POST['eta'];
$description = $POST['description'];
$last_updated = $POST['last_updated'];
$updated_by = $POST['updated_by'];
$sql = "UPDATE module SET status = $status , reason = $reason , eta = $eta , description = $description , last_updated = $last_updated , updated_by = $updated_by WHERE name = $name";
mysql_select_db('status');
$retval = mysql_query ( $sql, $connection);
if (!retval)
{
die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully";
mysql_close($connection);
} else {
// not sure what to do here
}
function sanitizeString($var)
{
$var = stripslashes($var);
$var = htmlentities($var);
$var = strip_tags($var);
return $var;
}
function sanitizeMySQL($var)
{
$var = mysql_real_escape_string($var);
$var = satnizeString($var);
return $var;
}
header("Location: control.php");
?>

いつものように、私は誰でも提供できる支援に非常に感謝しています. 私はまだこれを学び始めたばかりで、この Web サイトとコミュニティは、これまで読んだどの本やチュートリアルよりも私を助けてくれました。

4

1 に答える 1

0

SQL ステートメントでは、各パラメーターに引用符が必要です。

$sql = "UPDATE module SET status = '$status' , reason = '$reason' , eta = '$eta' , description = '$description' , last_updated = '$last_updated' , updated_by = '$updated_by' WHERE name = '$name' ";

関数に関してsanitizeString()は、一度に 1 つの文字列しか取りません。たぶん、以下のようなものはシンプルできれいかもしれません:

$params = array($name, $status, $reason); // put all your params in here
foreach ($params as &$p) { // the '&' before $p is essential, so do not forget it
    $p = sanitizeString($p);
}

それが役に立てば幸い。

于 2013-10-17T16:41:07.053 に答える