2011-01-27 13 views
0

ここで私はかなり分かりませんが少し問題があるようです。PHPを使用してHTMLフォームから値を取り出し、MySQL DBに格納します

私はHTMLファイルと一緒にPHPスクリプトを持っています。そのファイルには、いくつかのテキストボックスとドロップダウンがいくつかあります。今私がこれらのすべての上で単一のフォームに行かなければならなかった理由は、私が大きなボタンを1つ行った場合、送信ボタンを押したときに誰も働かないからです。私は考えていない...私の現在のコードは以下の通りです、私の以前のコードは1つの形式しか持たず、全く動作しません。

  <form method="post" id="locationFromPost" name="locationFormPost"> 
           <div class="formRow"> 
            <div class="label"> 
             <label for="locationForm">Current Location:</label> 
            </div> 

            <div class="field"> 
              //If post is null go back to value pull originally else echo post   
               <?php if($_POST['locationForm']==null) $location=$location;else $location=$_POST['locationForm']; ?>    
             <input type="text" name="locationForm" id="locationForm" value="<?php echo $location?>"></input> 
            </div> 
           </div> 
          </form> 

......というように.......

  <form method="post" id="sexFromPost" name="sexFormPost">  
          <div class="formRow"> 
           <div class="label"> 
            <label for="sexForm">Sex</label> 
           </div> 

           <div class="dropDown"> 
            <select name="sex" id="sexForm" > 
//If post is null go back to value pull originally else echo post         
           <?php if($_POST['sexForm']==null) $sex=$sex;else $sex=$_POST['sexForm']; ?> 
             <option value="1" <?php if($sex==1){echo"selected='selected'";}?>>Male</option> 
             <option value="2" <?php if($sex==2){echo"selected='selected'";}?>>Female</option> 
             <option value="3" <?php if($sex==3){echo"selected='selected'";}?>>Not Specified</option> 
            </select> 
           </div> 
          </div> 
      </form> 

......というように.......

<form method="post" id="submit" name="submit"> 
    <div class="formRow"><div id="seperator"></div></div> 
        <div class="submitButton"> 
         <input type="submit" name="submit" id="submit" value="Save Changes"/> 
        </div>   
       </div> 
</form> 

コードの上部がどのように見えるのか、すべてのdivは書式設定のためのものであり、それらについて心配する必要はありません。情報を保存するPHPコードは以下の通りです。上記のコードのPHPの部分で見られる変数は、コードの前の部分でデータベースから取得されています。正常に動作しています。私が問題を抱えているのは、ユーザーが情報を編集して送信ボタンと情報を保存できるようにすることです。現在起こっていることは、まあ、絶対に気づいていることです。ページがリフレッシュされ、すべての値が引っ張られたときの状態に戻ります.DBにはまったく格納されません。コードの一部が動作していることを確認した後、テストを購入します。それはデータを問題なく保存します。私が薄くしているのは問題はフォームそのものです。私はすべてのことを1つの大きなフォームで行い、うまくいかない場合はどうしたらいいのでしょうか。今ではフォームの最後にあるenterキーを押してブラウザのデータを入力すると、そのフィールドだけが表示され、時には他のフィールドが完全に消去され、空の文字列が格納されます。私はこのことを全く理解していないようだ。

この情報を保存するにはPHPが必要です。

<?php 
if (isset($_POST['submit'])) 
{ 
mysql_query("UPDATE members SET location= '".$_POST['locationForm']."' WHERE usr='" .mysql_real_escape_string($_SESSION['usr']) ."'"); 
mysql_query("UPDATE members SET location= '".$_POST['sexForm']."' WHERE usr='" .mysql_real_escape_string($_SESSION['usr']) ."'"); 

........ you know the rest....... 
}?> 

私は完全にこの事は、これをやっている理由で失われたのですが、今ではない任意の-手段で最高のPHPプログラマーをイムので、それは(おそらく)私にある可能性があります。そのようなシステムを得るために私がする必要があることを誰かが指摘できたら、私に知らせてください。

ありがとう。

+1

まず、SQLクエリ変数をエスケープします。しかし、第二に、一度に提出できる書式は1つだけです。すべてのフォームフィールドを一度に送信するには、フォームフィールドを1つのフォーム内に作成する必要があります。数百万のWebサイトでこれが管理されているため、「動作しないので分割するのではなく、フォームの処理に実際に誤りがあります。 – Andrew

+0

さて、あなたのご意見ありがとうございます、私は実際に別のページで同じことをやったことがありますが、私はちょうどこれに取り組むことができませんでした。悪い試み。ありがとうございました。 – awmayhall

答えて

0

あなたの問題が何であるかはっきりしませんでした。

しかし、この:多くを行うために起こっているよう

<?php if($_POST['locationForm']==null) $location=$location;else $location=$_POST['locationForm']; ?> 

は私には見えません。

<?php 
    if(!isset($_POST['locationForm'])){ 
     $location=$location; 
    } 
    else { 
     $location=$_POST['locationForm']; 
    } 
?> 

(中括弧は、私自身の個人的な好みです)

あなたはどこかにあなたが私たちを示さなかった定義された$の場所を持っていると仮定すると:このような何かを試してみてください。これは、$ _POST ['locationForm']が存在しないかどうかをチェックし、存在する場合はそれを使用します。

+0

ああ、あなたはそこに何をしているのかわかります。そして、$場所は他の場所で定義されています。 – awmayhall

0

すべてのフォームフィールドをフォームタグ内に配置し、変数にもmysql_real_escape_stringを使用してください。

+0

すでに、そのおかげで、 – awmayhall

0

特定のページに送信されるすべてのフィールドが単一のフォームタグに存在する必要があります。異なるフォームタグ内の要素は、そのフォームタグのセットとして送信されます。 私はあなたもまたあなたのアップデートを統合したいと思っていますか?

//$_SESSION['usr'] should already be sanitized and safed wherever you handle your site credentials.. 
//set your submittable values, with a default to an empty string in this case. 

$sex=isset($_POST['sexForm'])?mysql_real_escape_string($_POST['sexForm']):""; 
$location=isset($_POST['locationForm'])?mysql_real_escape_string($_POST['locationForm']):""; 

//single statement, no need to iterate for each field, that's wasted connections. 
$sql="update "UPDATE members SET location= '$location' , sex='$sex' WHERE usr='".$_SESSION['usr']."'"; 
関連する問題