2012-04-10 9 views
1

Warum sind alle Eingaben leer? (siehe unten). Ich glaube, das liegt an einem Fehler in meiner JS-Datei.Aktualisieren einer gegebenen SESSION-Info

HTML-Formular, die eingereicht wird immer:

   <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> 

Die JS-Datei, die die Eingabe von dem HTML-Formular behandelt:

$(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; 
     }); 
    }); 

Die PHP-Datei Ich verwende, um die $fan_sess_id() bekommt variabler Wert rechts, aber keine der anderen Eingaben funktioniert.

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(); 
} 

Schließlich ist dies die Ausgabe ich bekomme, wenn $sth->debugDumpParams(); in meinem PHP-Skript ausgeführt oben:

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

Können Sie die HTML des Formulars posten? – jeroen

+0

Es gibt das [jQuery Form Plugin] (http://jquery.malsup.com/form/), mit dem Sie Formulare über Ajax senden können. Vielleicht möchten Sie sich das ansehen. :-) – Basti

+1

Nur eine Kuriosität: Sie haben auch das 'name'-Attribut für Ihre Eingaben gesetzt, oder? ''. Sie greifen auf den Wert des Inputs über '$ ('# bio') .val();' zu, der nach dem DOM-Element mit 'id =" bio "' sucht, aber bei 'serialisieren' wird das' name'-Attribut der Eingabe sein verwendet, nicht die ID. – Basti

Antwort

3

Sie müssen die Eingabe des setzen name auf den gleichen Wert, den Sie in Ihrem PHP-Code verwenden beim Zugriff auf $_POST.

Zum Beispiel: In <textarea id="bio" name="fan_bio" cols="27" rows="3"></textarea> die Attributänderung name-bio als $_POST["bio"] es ist Wert zu erhalten.

Wenn Sie ein HTML-Formular senden, wird das name -Attribut des Formularelements verwendet, um auf den Wert zu verweisen, nicht die id.

1

Sie verwenden die falschen Array-Schlüssel zu $_POST. Statt der HTML-Formularelement-ID-Attribute müssen Sie die Attribute name verwenden.

$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']; 

Sie haben ein weiteres sehr signifikantes Problem. Obwohl Sie PDO verwenden, haben Sie in Ihrer vorbereiteten Anweisung keine Platzhalter verwendet. Anstatt Variablen direkt in SQL zu übergeben, ersetzen Sie sie durch Platzhalter.

$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); 
Verwandte Themen