0

http://imageshack.us/photo/my-images/221/mysystem.jpg/

誰でも私を助けることができます、私は今、最初の列である合計保留列で立ち往生しています.フロントエンドページで「200」のデータを変更することはできません.phpmyadminにあるバックエンドページで手動で編集することができます.ユーザーは前面のデータを変更できますが、なぜ他の列を前面で編集できるのか混乱しますか? 保留中の合計列のみを編集できません。更新ボタンをクリックすると、最初の列を除いて他の列が更新されます。

私を助けてください..

ここに私の更新PHPコーディング

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE sr1 SET appt_today=%s, partial_complete=%s, full_complete=%s, return_technical=%s, return_customer=%s, return_cancel=%s, cancel=%s, reappt=%s, focus=%s WHERE total_pending=%s",
                       GetSQLValueString($_POST['appt_today'], "int"),
                       GetSQLValueString($_POST['partial_complete'], "int"),
                       GetSQLValueString($_POST['full_complete'], "int"),
                       GetSQLValueString($_POST['return_technical'], "int"),
                       GetSQLValueString($_POST['return_customer'], "int"),
                       GetSQLValueString($_POST['return_cancel'], "int"),
                       GetSQLValueString($_POST['cancel'], "int"),
                       GetSQLValueString($_POST['reappt'], "int"),
                       GetSQLValueString($_POST['focus'], "int"),
                       GetSQLValueString($_POST['total_pending'], "int"));

  mysql_select_db($database_pods, $pods);
  $Result1 = mysql_query($updateSQL, $pods) or die(mysql_error());

  $updateGoTo = "main.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}

mysql_select_db($database_pods, $pods);
$query_sr1 = "SELECT * FROM sr1";
$sr1 = mysql_query($query_sr1, $pods) or die(mysql_error());
$row_sr1 = mysql_fetch_assoc($sr1);
$totalRows_sr1 = mysql_num_rows($sr1);
?>

そして、これが入力データのコーディングです。上記で述べたのは「200」ですが、更新できません。

<input name="total_pending" type="text" class="style6" onKeyPress="return checkIt(event)" value="<?php echo $row_sr1['total_pending']; ?>" size="3" maxlength="3" />
4

1 に答える 1

1

あなたの SQL クエリは、 という値を更新しませんtotal_pending:

UPDATE
  sr1
SET
  appt_today=%s,
  partial_complete=%s,
  full_complete=%s,
  return_technical=%s,
  return_customer=%s,
  return_cancel=%s,
  cancel=%s,
  reappt=%s,
  focus=%s
WHERE
  total_pending=%s

更新したいレコードを見つけるために使用total_pendingしますが、実際にはそのレコードの値を更新しません。

レコードの検索に使用している同じフィールドを更新するには、そのパラメーターを 2 つの異なる値で 2 回含める必要があることに注意してください。1 つは更新する新しい値用で、もう 1 つはレコードを検索するために使用する既存の値用です。

例えば:

UPDATE
  sr1
SET
  appt_today=%s,
  partial_complete=%s,
  full_complete=%s,
  return_technical=%s,
  return_customer=%s,
  return_cancel=%s,
  cancel=%s,
  reappt=%s,
  focus=%s,
  total_pending=%s -- update this field as well
WHERE
  total_pending=%s

編集:もう少し明確にするために、最初に別のフィールドをフォームに追加して別のtotal_pending値を追跡する必要があります。これは、更新のために 2 つが必要になるためです。1 つは元の値 (WHERE句の) を表し、もう 1 つは新しい値を表します。したがって、次のようなものを追加する必要があります。

<input name="total_pending_original" type="hidden" value="<?php echo $row_sr1['total_pending']; ?>" />

次に、上記で提供した更新されたクエリを使用して、新しいパラメーターも追加する必要があります。したがって、クエリ/パラメータ コード全体は次のようになります。

$updateSQL = sprintf("UPDATE sr1 SET appt_today=%s, partial_complete=%s, full_complete=%s, return_technical=%s, return_customer=%s, return_cancel=%s, cancel=%s, reappt=%s, focus=%s, total_pending=%s WHERE total_pending=%s",
                   GetSQLValueString($_POST['appt_today'], "int"),
                   GetSQLValueString($_POST['partial_complete'], "int"),
                   GetSQLValueString($_POST['full_complete'], "int"),
                   GetSQLValueString($_POST['return_technical'], "int"),
                   GetSQLValueString($_POST['return_customer'], "int"),
                   GetSQLValueString($_POST['return_cancel'], "int"),
                   GetSQLValueString($_POST['cancel'], "int"),
                   GetSQLValueString($_POST['reappt'], "int"),
                   GetSQLValueString($_POST['focus'], "int"),
                   GetSQLValueString($_POST['total_pending'], "int"),
                   GetSQLValueString($_POST['total_pending_original'], "int"));

また、注意すべきことの 1 つは、もはや mysql_* 関数であってはならないということです。PHPはそれらを非推奨にしています。ここを示す大きな赤いボックスを見てください

于 2012-07-27T13:08:17.083 に答える