2016-05-01 4 views
0

私は教員のためのプロジェクトを行っています。注文のためのWebアプリケーション、つまりUPSが送信したいメールを受け取るためのプロジェクトです。私は、submitを使って注文フォームを実行すると、私が作成したスクリプトが私のDBのテーブルにデータを挿入していないという問題があります(接続は機能しています)。MySql DB(使用中のXAMPP)に注文を入力しない注文のPHPスクリプト

if(isset($_POST['city']) && isset($_POST['contact']) && isset($_POST['adress']) && isset($_POST['priority']) && isset($_POST['box_size'])){ 
    if(isset($_POST['del_name']) && isset($_POST['del_lname']) && isset($_POST['del_adress']) && isset($_POST['del_pob'])){ 
     if($_POST['priority'] == "Ne" && $_POST['box_size'] == "1*1*1"){ 
      $_POST['price'] = "50kn"; 
      $sql = "INSERT INTO orders SET price='$_POST[price]', city='$_POST[city]', contact='$_POST[contact], 
        adress='$_POST[adress]', del_adress='$_POST[del_adress]', del_pob='$_POST[del_pob]', box_size='$_POST[box_size]', 
        priority='$_POST[priority]', del_name='$_POST[del_name]', del_lname='$_POST[lname]'"; 
      $result=mysql_query($sql); 
     } 

上記のコードは、フォームのすべてのフィールドが設定されているかどうかを確認する条件を示しています。表内のすべての属性はvarcharです。

<form name="form2" method="post" action="order_script.php"> 
    <h2>Pošiljatelj</h2> 
     <p><!--Ovdje ide ime $_GET od ulogiranog--></p> 
     <p><!--Ovdje ide $_GET prezime od ulogiranog--></p> 
     <p>Grad/Mjesto: <input type="text" name="city" size="25" maxlength="20" value=""/></p> 
     <p>Kontakt broj: <input type="text" name="contact" size="25" maxlength="20" value=""/></p> 
     <p>Adresa: <input type="text" name="adress" size="25" maxlength="20" value=""/></p> 
     <!--select for box_size--> 
     <p>Brzina dostave/Prioritet: <select name="priority"> 
     <option value="">Da</option> 
     <option value="">Ne</option> 
     </select></p> 

    <p>Veličina kutije: <select name="box_size"> 
     <option value="sm">1*1*1</option> 
     <option value="md">2*2*2</option> 
     <option value="lg">3*3*3</option> 
     <option value="xl">4*4*4</option> 
     </select></p> 

    <h2>Primatelj</h2> 
     <p>Ime: <input type="text" name="del_name" size="25" maxlength="20" value=""/></p> 
     <p>Prezime: <input type="text" name="del_lname" size="25" maxlength="20" value=""/></p> 
     <p>Adresa: <input type="text" name="del_adress" size="25" maxlength="20" value=""/></p> 
     <p>Poštanski broj: <input type="text" name="del_pob" size="25" maxlength="20" value=""/></p> 

     <!--Price of delivery hidden --> 

     <input type="hidden" name="price" size="25" maxlength="20" value=""/></p> 

     <p><input type="submit" name="order" value="Naruči"/></p><br></br> 
</form> 

フォームを送信すると、スクリプトが実行され、空のページが表示されます。

+0

あなたのSQLクエリが実行されていないことを意味しますか?あなたの質問のタイトルの単語を理解するのに5分かかります。笑 –

+1

あなたのコードが完全なコピーであれば、クエリに文法エラーがあります: 'contact = '$ _ POST [contact]、' – lolbas

+0

あなたのエラーログを見ますか?それはあなたの完全なPHPコードです。また、SQLインジェクションと 'isset'は複数の変数を取ることができます。 – chris85

答えて

0

このクエリを試すことができます:提供されたコードと

INSERT INTO orders (city, contact, adress, priority, box_size, del_name, del_lname, del_adress, del_pob) 
VALUES ('$_POST[price]', '$_POST[city]', '$_POST[contact], '$_POST[adress]', '$_POST[del_adress]','$_POST[del_pob]', '$_POST[box_size]', '$_POST[priority]', '$_POST[del_name]', '$_POST[lname]'); 
+1

OPで使用される 'INSERT'文の構文が有効です。 – lolbas

1

複数の問題。まず、アポストロフィが欠けている(lolbasで示されている)と、2つの閉じ括弧がありません。

を:$ _POSTは[「優先」] ==「ネ」が、あなたのSELECTのオプションは任意の値が設定されていない場合も

if(isset($_POST['city']) && isset($_POST['contact']) && isset($_POST['adress']) && isset($_POST['priority']) && isset($_POST['box_size'])){ 
    if(isset($_POST['del_name']) && isset($_POST['del_lname']) && isset($_POST['del_adress']) && isset($_POST['del_pob'])){ 
     if($_POST['priority'] == "Ne" && $_POST['box_size'] == "1*1*1"){ 
      $_POST['price'] = "50kn"; 
      $sql = "INSERT INTO orders SET price='$_POST[price]', city='$_POST[city]', contact='$_POST[contact]', 
        adress='$_POST[adress]', del_adress='$_POST[del_adress]', del_pob='$_POST[del_pob]', 
        box_size='$_POST[box_size]', priority='$_POST[priority]', del_name='$_POST[del_name]', del_lname='$_POST[lname]'"; 
      $result=mysql_query($sql); 
     } 
    } 
} 

は、あなたがチェックしている:ここには、構文エラーのあるブロックです

<select name="priority"> 
    <option value="">Da</option> 
    <option value="">Ne</option> 
</select> 

...あなたのテストは常に偽であり、クエリは実行されません。

希望すると便利です。

0

この手順をすべて確認してください。

  1. mysql_queryは、PHP 5.5.0で廃止されましたので、PHPのバージョンを確認してください。
  2. MySQL Functionsの代わりにPDOを使用してください。
  3. あなたの第3のifが間違っていても動作しません。 を使用して、$_POST['priority'] == "Ne"$_POST['box_size'] == "1*1*1"が正しい値を返すかどうかを確認してください。そうでない場合は、修正してください。また
  4. あなたのクエリ間違ってこの
INSERT INTO orders(city, contact, adress, priority, box_size, del_name, del_lname, del_adress, del_pob) VALUES ('$_POST[price]', '$_POST[city]', '$_POST[contact], '$_POST[adress]', '$_POST[del_adress]','$_POST[del_pob]', '$_POST[box_size]', '$_POST[priority]', '$_POST[del_name]', '$_POST[lname]'); 

グッド不足を試してみてください。