-1

スクリプトの実行中に次の警告が表示されます。

Notice: Undefined variable: varName in C:\wamp\www\dash\index.php on line 38
Notice: Undefined variable: varMsg in C:\wamp\www\dash\index.php on line 38
Notice: Undefined variable: varDate in C:\wamp\www\dash\index.php on line 38

さらに、データベースに詳細を挿入できますが、ページを更新するたびにクエリが挿入されます。

スクリプトの重要な部分:

<?php
date_default_timezone_set('UTC');

if(isset($_POST['formSumbit']))
{
   $varName = $_POST['formName'];
   $varMsg = $_POST['formMsg'];
   $varDate = date(d/m/y);
   $errorMessage = "";
}
//line 38
 $order ="INSERT INTO dash (name,msg,msg_date) VALUES ('$varName','$varMsg','$varDate')";  
    $result = mysql_query($order); 


?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  name
  <input type="text" name="formName" maxlength="25"  />

  msg
  <input type="text" name="formMsg" maxlength="1500"  />


<input type="submit" name="formSumbit" value="Submit" />
</form>
4

3 に答える 3

2

if(isset($_POST['formSumbit'])) {}クエリも囲む必要があります。

if(isset($_POST['formSumbit']))
{
   $varName = $_POST['formName'];
   $varMsg = $_POST['formMsg'];
   $varDate = date('Y-m-d');
   $errorMessage = "";
   //line 38
   $order ="INSERT INTO dash (name,msg,msg_date) VALUES ('$varName','$varMsg','$varDate')";  
   $result = mysql_query($order); 
}

ページを更新するたびにクエリが実行されますが、値がifステートメントでラップされているため、空白の値が挿入されます。これが通知を受け取る理由です。フォームがまだ送信されていないため、値がありません。

于 2013-03-28T18:11:50.540 に答える
1

if(isset($_POST['formSubmit']))ステートメント内に 38 行目と 39 行目を追加します。現在、ページが読み込まれるたびにこれが実行されますが、フォームが送信されたときにのみ実行する必要があります。

if(isset($_POST['formSumbit']))
{
   $varName = $_POST['formName'];
   $varMsg = $_POST['formMsg'];
   $varDate = date(d/m/y);
   $errorMessage = "";
   $order ="INSERT INTO dash (name,msg,msg_date) VALUES ('$varName','$varMsg','$varDate')";  
   $result = mysql_query($order);
}
于 2013-03-28T18:12:12.877 に答える
0

次のコードを「insert.php」などの別のファイルに入れ、アクションをこれに設定すると、重複挿入の問題が解決されます。

if(isset($_POST['formSumbit']))
{
   $varName = $_POST['formName'];
   $varMsg = $_POST['formMsg'];
   $varDate = date(d/m/y);
   $errorMessage = "";
   $order ="INSERT INTO dash (name,msg,msg_date) VALUES ('$varName','$varMsg','$varDate')";  
   $result = mysql_query($order);
   if($result){
       header("Location: back-to-form.php");
   } else {
      echo mysql_error();
   }
}
于 2013-03-28T18:16:06.413 に答える