2017-09-12 10 views
-1

私はまだ基​​礎を学んでいるので、私と一緒に裸にしてください。既存のエントリを更新する(MySQL PHP HTML)

私はオーナーの名前を取得し、彼の行動のコメントを入力するオプションを与えるページを作ろうとしています。適切な選択された人物のタイムスタンプと共にコメントを送信する。

私は閲覧形式で「所有者」の名前を取得できますが、コメントのすべての列が更新されるため、コメントを送信するときに問題があります。選択したエントリだけに追加するのではなく、 id 'issue)フィールドとタイムスタンプが正しくキャプチャされない場合は、ブランクフィールドを含む新しい行をタイムスタンプ値とともに追加します。

これは私がこれまで持っているものです。

<?php 
function renderForm($id, $owner, $attendance, $comments, $log, $error) 
{ 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<title>Log</title> 
</head> 
<body> 
<?php 
if ($error != '') 
{ 
echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>'; 
} 
?> 
<form action="" method="post"> 
<input type="hidden" name="id" value="<?php echo $id; ?>"/> 
<div> 
<strong>OWNER: </strong><?php echo $owner; ?><br/><br/> 

<strong>ATTENDANCE: </strong><select name="attendance" id="attendance"> 
      <option value=""><?php echo $status; ?></option> 
      <option value = "Present">Ongoing</option> 
      <option value = "Absent">Closed</option> 
    </select><br/><br/> 

<div style="position: absolute; top: 200px; left: 300px; width: 210px; height: 125px;"> 
<strong>COMMENTS: </strong><br/> 
<?php 
// connect to the database 
$conn = mysqli_connect("localhost", "root", ""); 
$result = mysqli_query($conn, "SELECT * FROM arc.log WHERE attendance IN ('Present', 'Absent')", MYSQLI_USE_RESULT) 
    or die(mysql_error()); 
echo "<table border='1' cellpadding='10'>"; 
echo "<font color=\"white\"><tr><th>TIMESTAMP</th><th>COMMENTS</th></tr>"; 
while($row = mysqli_fetch_array($result)) { 
echo "<tr>"; 
echo '<td>' . $row['timestamp'] . '</td>'; 
echo '<td>' . $row['comments'] . '</td>'; 
echo "</tr>"; 
} 
// close table> 
echo "</table>"; 
?></div> 

<div style="position: absolute; top: 8px; left: 700px; width: 210px; height: 125px;"> 
<strong>COMMENTS: </strong> <br/><textarea id="comments" name="comments" rows="10" cols="50"></textarea></div> 
</div> 
<br/> 
<br/> 
<input type="submit" name="submit" value="Submit"> 
</form> 
</body> 
</html> 

<?php 
} 
$conn = mysqli_connect("localhost", "root", ""); 
if (isset($_POST['submit'])) 
{ 
if (is_numeric($_POST['id'])) 
{ 
$comments = mysqli_real_escape_string($conn, $_POST['comments']); 
$timestamp_history = date("Y-m-d h:i:s"); 
if ($comments == '') 
{ 
$error = 'ERROR: Please fill in all required fields!'; 
renderForm($remarks, $error); 
} 
else 
{ 
mysqli_query($conn, "UPDATE arc.log SET comments='$comments'") 
or die(mysql_error()); 
$query = "INSERT INTO `ticket`(`timestamp`) VALUES ('$timestamp')"; 
$result = mysqli_query($conn, $query); 
} 
} 
else 
{ 
echo 'Error1'; 
} 
} 
else 
{ 
if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0) 
{ 
$id = $_GET['id']; 
$result = mysqli_query($conn, "SELECT * FROM arc.log WHERE id=$id") 
or die(mysql_error()); 
$row = mysqli_fetch_array($result); 
if($row) 
{ 
$owner = $row['owner']; 
$attendance = $row['attendance']; 
$comments = $row['comments']; 
renderForm($id, $owner, $attendance, $comments, ''); 
} 
else 
// if no match, display result 
{ 
echo "No results!"; 
} 
} 
else 
{ 
echo 'Error2'; 
} 
} 
?> 

のMySQL:

enter image description here

は、事前にありがとうございます。あなたはPOSTパラメータを脱出し、盲目的にこれをコピーしてはいけません

答えて

0

UPDATE arc.log SET comments='$comments' WHERE id = $_POST['id']

注意。

タイムスタンプの問題については、新しいレコードを挿入するのではなく、既存のレコードを更新する場合は、で、INSERTではなく、新しいレコードを挿入します。

0

--itアップデート「コメント」のすべての列が -

mysqli_query($conn, "UPDATE arc.log SET comments='$comments'"); by 
$id = $_POST['id']; 
mysqli_query($conn, "UPDATE arc.log SET comments='".$comments."',log.timestamp = '".$timestamp_history."' where id=$id "); 

とcolumsタイムスタンプの種類は、あなたが日時がキャプチャされているため、以下のようにタイムスタンプに変換する必要があり、タイムスタンプであるかを交換することによって補正しなければなりません: この行の後に追加する必要があります

$timestamp_history = date("Y-m-d h:i:s"); 
$timestamp_history = strtotime($timestamp_history); 
関連する問題