2014-02-18 2 views
1

테스트 데이터를 수집하는 데 사용하는 데이터베이스가 있습니다.mysql 데이터베이스의 행 편집

끝 부분에 편집 및 삭제 링크가있는 새 줄의 각 레코드와 새 레코드 링크 추가를 보여줍니다.

모든 것이 편집 섹션과 별도로 작동합니다. 내가 어디로 잘못 가고 있는지 알 수가 없어?

편집 링크를 클릭하면 필드 등이있는 표의 레이아웃이 표시되지만 행 ID를 지나가고 날짜 필드에 표시됩니다. 입력란에 입력하고 제출하면 변경됩니다. 단지 데이터를 전달하지 않습니다.

내 편집 페이지 및 편집 스크립트입니다.

<?php 
function valid($date,$error) 
{ 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<title>Edit Records</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 $date; ?>"/> 

<table border="1"> 
<tr> 
<td colspan="2"><b><font color='Red'>Edit Records </font></b></td> 
</tr> 

<tr> 
<td width="179"><b><font color='#663300'>Date</font></b></td> 
<td><label> 
<input type="text" name="date" value="<?php echo $date; ?>" /> 
</label></td> 
</tr> 

<tr> 
<td width="179"><b><font color='#663300'>Ammonia</em></font></b></td> 
<td><label> 
<input type="text" name="amm" value="<?php echo $amm; ?>" /> 
</label></td> 
</tr> 

<tr> 
<td width="179"><b><font color='#663300'>Nitrate</font></b></td> 
<td><label> 
<input type="text" name="nat" value="<?php echo $nat; ?>" /> 
</label></td> 
</tr> 

<tr> 
<td width="179"><b><font color='#663300'>Nitrite</font></b></td> 
<td><label> 
<input type="text" name="nit" value="<?php echo $nit; ?>" /> 
</label></td> 
</tr> 

<tr> 
<td width="179"><b><font color='#663300'>pH</font></b></td> 
<td><label> 
<input type="text" name="ph" value="<?php echo $ph; ?>" /> 
</label></td> 
</tr> 

<tr> 
<td width="179"><b><font color='#663300'>Alkalinity</font></b></td> 
<td><label> 
<input type="text" name="alk" value="<?php echo $alk; ?>" /> 
</label></td> 
</tr> 

<tr> 
<td width="179"><b><font color='#663300'>SG</font></b></td> 
<td><label> 
<input type="text" name="sg" value="<?php echo $sg; ?>" /> 
</label></td> 
</tr> 

<tr> 
<td width="179"><b><font color='#663300'>Temperature</font></b></td> 
<td><label> 
<input type="text" name="temp" value="<?php echo $temp; ?>" /> 
</label></td> 
</tr> 

<tr align="Right"> 
<td colspan="2"><label> 
<input type="submit" name="submit" value="Edit Records"> 
</label></td> 
</tr> 
</table> 
</form> 
</body> 
</html> 
<?php 
} 

include('config.php'); 

if (isset($_POST['submit'])) 
{ 

if (is_numeric($_POST['id'])) 
{ 

$id = $_POST['id']; 
$date = mysql_real_escape_string(htmlspecialchars($_POST['date'])); 
$amm = mysql_real_escape_string(htmlspecialchars($_POST['amm'])); 
$nat = mysql_real_escape_string(htmlspecialchars($_POST['nat'])); 
$nit = mysql_real_escape_string(htmlspecialchars($_POST['nit'])); 
$ph = mysql_real_escape_string(htmlspecialchars($_POST['ph'])); 
$alk = mysql_real_escape_string(htmlspecialchars($_POST['alk'])); 
$sg = mysql_real_escape_string(htmlspecialchars($_POST['sg'])); 
$temp = mysql_real_escape_string(htmlspecialchars($_POST['temp'])); 


if ($date == '') 
{ 

$error = 'ERROR: Please fill in all required fields!'; 


valid($date, $error); 
} 
else 
{ 

mysql_query("UPDATE employee SET date='$date', amm='$amm', nat='$nat', nit='$nit', ph='$ph', alk='$alk', sg='$sg', temp='$temp'") 
or die(mysql_error()); 

header("Location: view.php"); 
} 
} 
else 
{ 

echo 'Error!'; 
} 
} 
else 

{ 

if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0) 
{ 

$id = $_GET['id']; 
$result = mysql_query("SELECT * FROM employee WHERE id=$id") 
or die(mysql_error()); 
$row = mysql_fetch_array($result); 

if($row) 
{ 

$date = $row['date']; 
$amm = $row['amm']; 
$nat = $row['nat']; 
$nit = $row['nit']; 
$ph = $row['ph']; 
$alk = $row['alk']; 
$sg = $row['sg']; 
$temp = $row['temp']; 

valid($id,''); 
} 
else 
{ 
echo "No results!"; 
} 
} 
else 

{ 
echo 'Error!'; 
} 
} 
?> 
+0

당신은 정말 0의 코드를 유지 관련 서식? –

+0

'$ id = $ _GET [ 'id']; $ result = mysql_query ("SELECT * FROM employee = $ id")'SQL 인젝션에 취약합니다. –

답변

0

기능은 valid이 양식 렌더링을 담당합니다. 그러나이 함수에 $date 만 전달하므로이 값이 채울 수있는 유일한 값입니다. 다른 값도 전달해야합니다.

0

확인이 :

UPDATE employee SET date='$date', amm='$amm', nat='$nat', nit='$nit', ph='$ph', alk='$alk', sg='$sg', temp='$temp' WHERE id='$id' 
관련 문제