2015-03-03 2 views
1

Из кода ниже, если он отображает 10 записей, и если пользователь изменяет «код» или «Номер» значение 2-й и 5-й записи, как вставить только то, что 2-й и 5-й запись в другой отдельной таблице. Но из моего запроса на вставку я могу вставить все 10 записей. Но мне нужно установить только две затронутые записи. Пожалуйста помоги.Вставка что особое значение изменилось запись

include('DB.php'); 
$sql="SELECT * FROM customer where customer_name='".$q."' "; 
$result = mysql_query($sql); 
$num_row = mysql_num_rows($result); 
$row_count=1; 
if($num_row>0) 
{  
echo "<table > 
<tr> 
<th>S.No</th> 
<th>Name</th> 
<th>Code</th> 
<th>Number</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) { 
$c_name=$row['c_name']; 
$c_code=$row['c_code']; 
$c_number=$row['c_number']; 

    echo "<tr>"; 
    echo "<td> $row_count.</td>"; 
    echo "<td><input type='text' name='c_name[]' id='c_name' value='$c_name' readonly /></td>"; 
    echo "<td><input type='text' name='c_code[]' id='c_code' value='$c_code' /></td>"; 
    echo "<td><input type='text' name='c_number[]' id='c_number' value='$c_number' /></td>"; 
    echo "</tr>"; 

    $row_count++; 
      } 
echo "</table>"; 
} 

ВСТАВИТЬ:

$c_name=$_POST['c_name']; 
$c_code=$_POST['c_code']; 
$c_number=$_POST['c_number']; 

if(isset($c_code)) 
{      
for($i=0;$i<count($c_code);$i++) 
{ 
{ 
$insert=mysql_query("INSERT INTO customer_table2(name,code,number) 
VALUES ('$c_name[$i]','$c_code[$i]','$c_number[$i]')"); 
} 
} 
+0

Не используйте 'INSERT', используйте' UPDATE' для изменения существующих строк. Если значения одинаковы, это не будет иметь никакого эффекта. – Barmar

+0

Нет. Мне нужно показать в отчете старую и новую запись, поэтому у меня есть две таблицы. Первая таблица будет иметь старую запись, вторая таблица (customer_table2) будет иметь только обновленные записи. –

+0

Перед установкой проверьте, существует ли строка в старой таблице. – Barmar

ответ

1

Сделайте SELECT запрос первым, чтобы увидеть, если строка уже в исходной таблице. Если нет, добавьте его в новую таблицу.

$c_name=$_POST['c_name']; 
$c_code=$_POST['c_code']; 
$c_number=$_POST['c_number']; 

if(isset($c_code)) 
{      
    for($i=0;$i<count($c_code);$i++) 
    { 
     // Prevent SQL injection 
     $name = mysql_real_escape_string($c_name[$i]); 
     $code = mysql_real_escape_string($c_code[$i]); 
     $number = mysql_real_escape_string($c_number[$i]); 
     $select = mysql_query("SELECT COUNT(*) AS c FROM customer WHERE name = '$name' AND code = '$code' AND number = '$number'"); 
     $row = mysql_fetch_assoc($select); 
     if ($row['c'] == 0) { 
      $insert=mysql_query("INSERT INTO customer_table2(name,code,number) 
           VALUES ('$name','$code','$number')"); 
     } 
    } 
} 
+0

Спасибо за образец. Но это вставляет все записи. Но мне нужна только вторая и пятая записи, которые нужно вставить, так как я изменяю значение в обеих записях. –

+0

Я не уверен, почему это происходит. Если вы не изменили значения, 'SELECT COUNT (*)' должен найти существующую строку, поэтому 'COUNT (*)' будет больше 0. – Barmar

+0

Что-то удаляет эти строки из таблицы 'customer' перед Пользователь отправляет форму? – Barmar