2017-03-10 11 views
0

私はCakePhpフレームワークが初めてで、現在はプロジェクトをテスト中です。私が持っている問題は、私はドロップダウンオプションを設定することができますが、私はオプションを選択したいときにデータベースに保存されません。私は何か見落としてますか?ドロップダウンからデータベースにデータを保存するCakePHP

私は、ドロップダウンを移入することができ、このコードを使用する - bookings.js

$("#contact_submit").click(function() { 

    var name = $("#name").val(); 
    var contact_email = $("#contact_email").val(); 
    var subject = $("#subject").val(); 
    var message = $("#txtmessage").val(); 
    var service = $("#sel1").val(); 

    console.log(name+contact_email+subject+message+service); 

    $.post("/inquiries/inquiry", //Required URL of the page on server 
      {// Data Sending With Request To Server 
       name: name, 
       email: contact_email, 
       subject: subject, 
       txt: message, 
       service_id: service, 
      }, 
      function (response) { // Required Callback Function 
      if (jQuery.parseJSON(response).status == 'success') { 
      if ($("#available").hasClass("hide")) { 
       $("#available").removeClass("hide"); 
      } 
      if (!$("#available").hasClass("hide")) { 
       $("#notavailable").addClass("hide"); 
      } 

      }else{ 
      if ($("#notavailable").hasClass("hide")) { 
       $("#notavailable").removeClass("hide"); 
      } 
      if (!$("#available").hasClass("hide")) { 
       $("#available").addClass("hide"); 
      } 
      } 
      }); 
}); 

InquriesController.php

public function inquiry() 
    { 
    $inquiry = $this->Inquiries->newEntity(); 
    if ($this->request->is('post')) { 

    $emailaddress = $this->request->data['email']; 
    $subject = $this->request->data['subject']; 
    $txt = $this->request->data['txt']; 
    $services = $this->request->data['service_id']; 
    $message = "this is a message"; 
    $inquiry = $this->Inquiries->patchEntity($inquiry, $this->request->data); 

     if ($this->Inquiries->save($inquiry)) { 

     $email = new Email('default'); 
     $email->from(['[email protected]' => 'Testing Hotel']) 
     ->to($emailaddress) 
     ->subject('Inquiry Mail') 
     ->emailFormat('html') 
     ->send($message); 

     echo json_encode(['status' => 'success']); 
     exit; 

     } else { 

     echo json_encode(['status' => 'failed']); 
     exit; 

     } 
    } 

} 

HTMLコードスニペット

 <div class="col-md-6 col-sm-6 col-xs-12"> 
      <input type="text" name="contact_email" id="contact_email" class="form-control" placeholder="Email *"> 
     </div> 
     <div class="col-md-12 col-sm-12 col-xs-12"> 
      <input type="text" id="subject" class="form-control" placeholder="Subject"> 
     </div> 
     <div class="col-md-12 col-sm-12 col-xs-12"> 

      <input class="form-control" name="txtmessage" id="txtmessage" rows="8" placeholder="Messages goes here.."></input> 

      <div class="form-group"> 
       <select class="form-control" id="sel1"> 
        <option>Select a service</option> 
        <?php 
         if (!empty($ServicesInfo)) { 
          foreach ($ServicesInfo as $Services):   
          ?> 
         <option value="<?= h($Services->name)?>"><?= h($Services->name)?></option> 
        <?php endforeach; } ?> 
       </select> 
      </div> 
+0

他のフィールドも保存されませんか? – Aarrbee

+0

保存されないservice_idのみ。 –

+0

'service_id'に' $ Services-> name'を送ります。データベースに** int **フィールドが含まれている可能性があります。そのため、サービス名は保存されません。 – Aarrbee

答えて

1

私が言ったように、あなたのフィールドは、サービス名のvarcharを保存できません。したがって、selectオプションから値としてサービスIDを送信する必要があります。同様に:

<option value="<?= h($Services->id)?>"><?= h($Services->name)?></option> 
+0

あなたのコードはうまくいきます。 ありがとうございます。 –

関連する問題