मैं काम करने के लिए सत्यापन कैसे प्राप्त करूं?

मैं ट्यूटोरियल पढ़ रहा हूं लेकिन अभी भी यह नहीं देख सकता कि मैं क्या गलत कर रहा हूं। यह एक साधारण प्रतिक्रिया फॉर्म होना चाहिए जो डेटाबेस में लेखक, ईमेल, टिप्पणी और टाइमस्टैम्प इनपुट करता है।

फीडबैक फॉर्म यहां दिया गया है:


  
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Feedback</title>

  
  </head>

  <body>
 <div id="sent">Thank You we appreciate your comments</div>

<div id="form" align="center">
<form id="feedback" action="#">
<input type="text" name="name" />
<input type="text" name="email" />


<input type="submit" name="submit" value="Send" /> <input type="reset" name="reset" value="Reset" />
 
    </form>
    </div>

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></>
 </script> <script type = "text/javascript">

 $(function(){ 
          var expressions = {
            name:/^[a-z]+[\.-']|\s)?[a-z]+$/i,
            email:/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/,
            comment:/^\w+/
           };

$('form#feedback').submit(function(e){
                 e.preventDefault(); 
             var valid=true;
                 for(var i=0; i<this.elements.length; i++){
                 var field= this.elements[i];
                if(field.type=='text'||field.type=='textarea'){
                 if(!expressions[field.name].test($(field).val())){
             alert('Oops! Mistake in '+field.name.replace('_',' ').toUpperCase()+'.');

                 field.focus();
                 valid=false;
                 return false;
                    }
                 }
         }

   If(valid){
             $.post('enter.php'; $(this).serialise(), function(data){
                                                    if(data.sucess{
                        $(div#form).fadeOut();
                        $(div#sent).fadeIn();
                           }else{
                               alert('We had a problem submitting the page');
                           }
              }, 'json');
                        return false;                                       }
                         });
         });
        </script>
 </body>                           
 </html>

और यहां प्रसंस्करण कोड है:

    $remove= array('submit','reset');
    $accepted= array('name','email', 'comment');


    foreach($data as $field=> $value){
        if(in_array($field,$remove)){
        unset($data[$field]);
            } elseif (!in_array($field, $accepted)){
          header('Location:feedback.php');
    }
    }
      $expressions = array(   
          name=>"~^[a-z]+[\.-']|\s)?[a-z]+$~i",
          email=>'~^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$~',
          comment=>'~^\w+~'
             );

      foreach($data as $field=> $value){
            if(!preg_match($expressions[$field], $value)) {
            header('Location: feedback.php');
                    }
        }

      require_once('connections\connect2.php');

              $response =(object) null;
              $Stmt= $db->stmt_init();
              $query='INSERT INTO feedback(name, email, comment, submitted) 
              VALUES(?,?,?,NOW())';

              if($Stmt->prepare($query)){
                  $Stmt-> bind_param('sss',
                                      $data['name'],
                                      $data['email'],
                                      $data['comment']);
                  $response->success=$stmt->execute();
              }else {
                  $response-> false;
              }
              echo json_encode($response);
              ?>

क्या कोई देख सकता है कि यह क्यों काम नहीं कर रहा है? फॉर्म सबमिट नहीं होता है, डेटाबेस में कुछ भी नहीं जाता है, जमा होने पर भरने के बाद फ़ॉर्म में कोई संदेश/परिवर्तन नहीं होता है।

0
धन्यवाद - उनको ठीक किया गया है लेकिन मेरा फॉर्म अभी भी सबमिट नहीं कर रहा है। कोड के पहले सेट में कोई समस्या है? -Merran
जोड़ा लेखक user3020097, स्रोत
"एक" चीज़ के लिए, आप 4 मानों को शामिल करते हैं, लेकिन आप बाध्यकारी हैं 3. मैं आपके शेष कोड के लिए नहीं कह सकता, लेकिन इससे आपको डीबग करना शुरू हो जाएगा। आप $ Stmt और $ stmt-> execute() एक और ईंट की दीवार का भी उपयोग कर रहे हैं।
जोड़ा लेखक Funk Forty Niner, स्रोत
आपका स्वागत है। यह कहना मुश्किल है कि अन्य त्रुटियां वास्तव में कहां झूठ बोल सकती हैं।
जोड़ा लेखक Funk Forty Niner, स्रोत

1 उत्तर

ऐसी कुछ चीजें हैं जिन्हें आपको जांचने की आवश्यकता है।

  • e.preventDefault() हटाएं; यह आपके फॉर्म को सबमिट होने से रोक रहा है।
  • this.elements.length नाम, ईमेल, टेक्स्ट, सबमिट, रीसेट करेगा, जबकि आपके पास केवल नाम, ईमेल और टिप्पणी के लिए वैधकर्ता अभिव्यक्ति होगी। जिसका अर्थ यह है कि आपको इसे किसी अन्य मूल्यों में बदलने की जरूरत है। केवल उन फ़ील्ड को चुनता है जिन्हें सत्यापन की आवश्यकता नहीं है, सबमिट बटन रीसेट करें।
0
जोड़ा