0

難問があります。私はシンプルなフォームを持っています。データベースとテキストエリアから技術者名を取得する動的選択リスト。このフォームは、郵便番号 (この形式: 12345、12346、12347 など) を貼り付けて、技術者の ID と共に 1 つずつテーブルに挿入するためのものです。これはうまくいきます!ただし、zipで作業するにはライセンスが必要なので、どんなzipでも機能しません。

この厄介な問題を回避するために、私がサービスを提供している郵便番号のリストを含む表を作成しました。SO、私はそれらの郵便番号のレコードセットを持っています。それらを配列に挿入し、挿入する前に textarea からの値がその配列に存在するかどうかを確認します。ただし、機能していません。配列はうまく印刷されたので、うまくいきました。in_array を追加する前と同様に、挿入は正常に機能します。一緒に - 彼らは私のガールフレンドと私のようです. それはただおかしくなり、一緒に機能しません。

これが私のコードです:

//This is my recordset and where I'm putting it into an array
mysql_select_db($database_localhost, $localhost);
$query_Recordset1 = "SELECT zip_code FROM zip_code";
$Recordset1 = mysql_query($query_Recordset1, $localhost) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
$results = array();
do {
  $results[] = $row_Recordset1;
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
//DONE ARRAY
//Now I'm taking zipcodes pasted in textarea so they can be inserted one at a time
$zipcodes = explode(",", $_POST['textarea']);
$countZips = (count($zipcodes));
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
foreach($zipcodes as $key=>$value)
{

while ($countZips >= 1) {
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
//DONE textarea
    //If statement to see if value exists in array
        if (in_array($value, $results)){
  $insertSQL = sprintf("INSERT INTO zip_zip (zip_code, tech_id) VALUES (%s, %s)",
                       GetSQLValueString($value, "int"),
                       GetSQLValueString($_POST['select'], "int"));

  mysql_select_db($database_localhost, $localhost);
  $Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
    $countZips--;
} else {
    $countZips--;
}
//Done value exists
//Now moving to next page when done
} 
    $insertGoTo = "index.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
}

//END

世界で何が問題なのか誰か知っていますか?また、誰かがこれを編集してコードの書式設定をきれいにするとしたら、どのようにしますか?

ありがとう!

4

1 に答える 1

0

次の行を変更

$results[] = $row_Recordset1;

行の下に $results[] = $row_Recordset1['zip_code'];

コードでは、DB からレコードをフェッチしているときに、各行を $result 配列に割り当てています。そのため、$result 配列で $value をチェックして偽の結果を得る場合、bcoz $result 配列は次のような構造になっています。上記のコードごとに

配列 ( [0] => 配列 ( [zip_code] => 12312331 ) )

in_array() には次の配列構造が必要です

配列 ( [0] => 12312331 )

于 2013-10-30T14:55:19.487 に答える