0

一度に複数の行を更新するために使用するこのコードがありますが、更新は1つだけです..

チェックするのを手伝ってくれませんか?私はそれで何か悪いことを見つけることができません。ありがとう!

フォーム:

echo "<td><input type='hidden' name='att_id[$i]' value='{$rows['att_id']}' s/></td>";
echo "<td><input type='text' name='attivita_da_promuovere[$i]' value='{$rows['attivita_da_promuovere']}' /></td>";
echo "<td><input type='text'id='start_date' class='datepicker' title='D-MMM-YYYY' name='start_date[$i]' value='{$rows['start_date']}' /></td>";
echo "<td><input type='text'id='end_date' class='datepicker' title='D-MMM-YYYY' name='end_date[$i]' value='{$rows['end_date']}' /></td>";
echo "<td><input type='text' name='attivita_tip_merc[$i]' value='{$rows['attivita_tip_merc']}' /></td>";
echo "<td><input type='text' name='attivita_da_svolgere[$i]' value='{$rows['attivita_da_svolgere']}' /></td>";
echo "<td><input type='text' name='attivita_tip_personale[$i]' value='{$rows['attivita_tip_personale']}' /></td>";

クエリ:

$id_job=$_GET['id'];
$size = count($_POST['att_id']);
$i = 0;
while ($i < $size) {
$attivita_da_promuovere= $_POST['attivita_da_promuovere'][$i];
$start_date= $_POST['start_date'][$i];
$end_date= $_POST['end_date'][$i];
$attivita_da_svolgere = $_POST['attivita_da_svolgere'][$i];
$attivita_tip_merc = $_POST['attivita_tip_merc'][$i];
$attivita_tip_personale=$_POST['attivita_tip_personale'][$i];
$id=$_POST['att_id'][$i];


$query = "UPDATE attivita SET attivita_da_promuovere = '$attivita_da_promuovere',attivita_da_svolgere = '$attivita_da_svolgere',attivita_tip_merc = '$attivita_tip_merc',end_date = '$end_date',attivita_tip_personale = '$attivita_tip_personale',start_date = '$start_date' WHERE att_id = '$id' LIMIT 1";
$result=mysql_query($query) or die ("Error in query: $query");
++$i;
4

5 に答える 5

0

あなたのフォームはforeach関数の中にあると言いましたか?それは理にかなっています。

まず、フォームを一度開始する必要があります。

ex(正しいやり方):

<?php 
echo "<form method='post'>";
foreach(){
    // rows here
}
echo "</form>";
?>

多分あなたはこのようにしています(間違った方法です):

<?php 
foreach(){
    echo "<form method='post'>";
    // rows here
    echo "</form>";
}
?>
于 2012-10-04T10:21:44.280 に答える
0

なぜあなたLIMIT 1は質問に答えているのですか。のように削除します。

$query = "UPDATE attivita 
SET attivita_da_promuovere = '$attivita_da_promuovere',
attivita_da_svolgere = '$attivita_da_svolgere',
attivita_tip_merc = '$attivita_tip_merc',
end_date = '$end_date',
attivita_tip_personale = '$attivita_tip_personale',
start_date = '$start_date' WHERE att_id = '$id'";
于 2012-10-04T09:12:56.693 に答える
0

1行のみに影響している場合は、WHERE句、それが何を意味しているのか、およびなぜ1行しか得られないのかを確認する必要があるだけです。

また、クエリに LIMIT 1 があります。この場合、これはあなたが望むものとは正反対であることを理解しているので、削除してください。

新しいクエリは次のようになります。

$query = "UPDATE attivita SET attivita_da_promuovere = '$attivita_da_promuovere',attivita_da_svolgere = '$attivita_da_svolgere',attivita_tip_merc = '$attivita_tip_merc',end_date = '$end_date',attivita_tip_personale = '$attivita_tip_personale'$,start_date =' WHERE ' atstart_date = '$ID'";

そこにある「エコー」ブロックの小さなヒントです。phpスクリプトを終了し?>、HTMLを入力してスクリプトを再度開くことができます<?php

于 2012-10-04T09:13:20.813 に答える
0

ここで間違いを犯しましたか:

あなたがページに載せた名前は

name=attivita_da_promuovere1

name=attivita_da_promuovere2

name=attivita_da_promuovere3 ..

そして、'attivita_da_promuovere'($_POST['attivita_da_promuovere'][$i]) という名前の配列として投稿を読み取ろうとします。個々の名前を付けているため、そのような配列がどのように存在するのかわかりません。

そのように投稿を読むべきではありませんか?

$_POST['attivita_da_promuovere'.$i]
于 2012-10-04T09:13:59.990 に答える
0
$query = "UPDATE attivita SET attivita_da_promuovere = '$attivita_da_promuovere',attivita_da_svolgere = '$attivita_da_svolgere',attivita_tip_merc = '$attivita_tip_merc',end_date = '$end_date',attivita_tip_personale = '$attivita_tip_personale',start_date = '$start_date' WHERE att_id = '$id'";

アップデートでこのコードを試してください

于 2012-10-04T09:28:22.050 に答える