2012-04-10 8 views
1

送信されるすべての入力が空白なのはなぜですか?(下記参照)。これは私のJSファイルのエラーが原因だと思う。提出されたばかり指定されたセッションの情報を更新する

HTMLフォーム:

   <form method="post" id="FanDetail"> 
         <textarea id="bio" name="fan_bio" cols="27" rows="3"></textarea><br /> 
         <input id="dob" name="fan_dob" value="(e.g. 01/05/1965)" onFocus="clearText(this)" /><br /> 
         <div class="ui-widget"> 
          <input id="zip" name="term" value="What is your Zipcode?" onFocus="clearText(this)" /><br /> 
          <input id="actualZip" type="hidden" name="actualzipval" value="" /> 
         </div><!--ui-widget :: zip --> 
         <div class="ui-widget"> 
          <input id="occup" type="text" name="term2" value="e.g. Computer Programmer, etc" onFocus="clearText(this)" /><br /> 
          <input id="actualOccup" type="hidden" name="actualOccupval" value="" /> 
         </div><!--ui-widget :: occup --> 
         <input id="fbkurl" type="text" name="fan_fbk" value="e.g. SportsFan12" onFocus="clearText(this)" /><br /> 
         <input id="twiturl" type="text" name="fan_twit" value="e.g. AboutSports2012" onFocus="clearText(this)" /><br /> 
         <input id="phoNum" type="text" name="fan_pho" value="cell or home phone" onFocus="clearText(this)" /><br /> 
       <input style="background-image:url('../../img/save.png');" type="submit" name="saveAbout" value="" id="submit" /> 
       </form> 

HTMLフォームからの入力を処理するJSファイル:

$(document).ready(function() { 
     $("form#FanDetail").submit(function() { 
     // store the values from the form input box, then send via ajax below 
     var bio = $('#bio').val(); 
     var dob = $('#dob').val(); 
     var zip = $('#actualZip').val(); 
     var occup = $('#actualOccup').val(); 
     var fbkurl = $('#fbkurl').val(); 
     var twiturl = $('#twiturl').val(); 
     var phoNum = $('#phoNum').val(); 
     $.post(
       "../../src/php/registration/about/submitvalues_about_tab.php", 
       $("form#FanDetail").serialize(), 
       function(){ 
        $('form#FanDetail').hide(function(){ 
         $('div.success').fadeIn(); 
       }); 
       }); 
      return false; 
     }); 
    }); 

私が使用しているPHPファイルが$fan_sess_id()を得ています他の入力のどれも働いていません。

try { 
    $sth = null; #kill any possible previous connections 
    /////////////////////////////////////////////// 
    ######## Get Input to Submit ############## // 
    /////////////////////////////////////////////// 
    $fanBio=$_POST['bio']; 
    $fanDob=$_POST['dob']; 
    $zipval=$_POST['zip']; 
    $occupval=$_POST['occup']; 
    $facebookurl=$_POST['fbkurl']; 
    $twitterurl=$_POST['twiturl']; 
    $phoneNum=$_POST['phoNum']; 
    //$fanID=1; 
    $fan_sess_id = session_id(); // assign $fan_sess_id to the current sessionID 

    ### DB Connection already established above. 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sth = $dbh->prepare(" 
    UPDATE Fan 
    SET fanBio='$fanBio',fanDob='$fanDob',fanDetLocID='$zipval',occupID='$occupval', 
    fanFbk='$facebookurl',fanTwit='$twitterurl',fanPho='$phoneNum' 
    WHERE fansessID='$fan_sess_id'; 
    "); 
    $sth->execute(); 
} 

最後に、これは上記$sth->debugDumpParams();を実行しているとき、私は私のPHPスクリプトで取得出力されます:あなたがアクセスしたときに、あなたのPHPコードで入力のnameあなたが使用するのと同じ値に設定する必要が

SQL: [152] 
    UPDATE Fan 
    SET fanBio='',fanDob='',fanDetLocID='',occupID='', 
    fanFbk='',fanTwit='',fanPho='' 
    WHERE fansessID='90707e4c37762a38ffb50883ce64ee1b'; 
+0

フォームのhtmlを投稿できますか? – jeroen

+0

[jQuery Form Plugin](http://jquery.malsup.com/form/)があり、Ajax経由でフォームを送信できます。あなたはこれを調べたいかもしれません。 :-) – Basti

+1

ちょうど好奇心:入力の 'name'属性も設定しましたか? ''あなたは 'id =" bio "でDOM要素を検索する' $( 'bio').val();で入力の値にアクセスしますが、 'serialize'を実行すると入力の' name'属性は'id'ではなく、使われています。 – Basti

答えて

3

$_POST

例えば:それは$_POST["bio"]として値です取得するbioへ 変更<textarea id="bio" name="fan_bio" cols="27" rows="3"></textarea>で属性name

HTMLフォームを送信すると、ではなく、フォーム要素のname -attributeが値の参照に使用されます。

1

$_POSTに間違った配列キーを使用しています。 HTMLフォーム要素ID属性の代わりに、name属性を使用する必要があります。

$fanBio=$_POST['fan_bio']; 
$fanDob=$_POST['fan_dob']; 
$zipval=$_POST['term']; 
$occupval=$_POST['occup']; 
$facebookurl=$_POST['fan_fbk']; 
$twitterurl=$_POST['fan_twit']; 
$phoneNum=$_POST['fan_pho']; 

別の非常に重大な問題があります。 PDOを使用していますが、プリペアドステートメントにプレースホルダを使用していないため、SQLインジェクションを広く利用できます。 SQLに変数を直接渡す代わりに、プレースホルダに置き換えてください。

$sth = $dbh->prepare(" 
    UPDATE Fan 
    SET fanBio=:fanBio,fanDob=:fanDob,fanDetLocID=:zipval,occupID=:occupval, 
    fanFbk=:facebookurl,fanTwit=:twitterurl,fanPho=:phoneNum 
    WHERE fansessID=:fan_sess_id; 
    "); 
    $arr_params = array(
    ':fanBio'=>$fanBio, 
    ':fanDob'=>$fanDob, 
    ':zipval'=>$zipval, 
    ':occupval'=>$occupval, 
    ':facebookurl'=>$facebookurl, 
    ':twitterurl'=>$twitterurl, 
    ':phoneNum'=>$phoneNum, 
    ':fan_sess_id'=>$fan_sess_id 
    ); 
    // Execute the statement with the parameters array 
    $sth->execute($arr_params); 
関連する問題