2016-06-23 12 views
1

私のウェブサイトには2つのフォームがあります。最初の形式は静的(一般的な情報)です。複数のプロジェクトを挿入したい場合は、2番目のプロジェクト情報(プロジェクト情報)を複製することができます(jQueryを使用)。複数のプロジェクトが送信された場合は、最後のプロジェクトのみがデータベースに挿入されます。どのように動作するはずではありません。すべてのプロジェクトフォームを提出する必要があります。フォームは、(2つのプロジェクトで)次のようになります。複数のフォームを同じテーブルに挿入する - 最後のフォームのみが挿入されます

enter image description here

PHPコード:

<?php include './includes/database.php'; 
if(isset($_POST['submit'])){ 
    $company_name = mysqli_real_escape_string($connection, $_POST['company_name']); 
    $contact_name = mysqli_real_escape_string($connection, $_POST['contact_name']); 
    $email_address = mysqli_real_escape_string($connection, $_POST['email_address']); 
    $phone_number = mysqli_real_escape_string($connection, $_POST['phone_number']); 
    $project_name = mysqli_real_escape_string($connection, $_POST['project_name']); 
    $house_amount = mysqli_real_escape_string($connection, $_POST['house_amount']); 
    $people_type = mysqli_real_escape_string($connection, $_POST['people_type']); 
    $delivery_date = mysqli_real_escape_string($connection, $_POST['delivery_date']); 

//Set date 
$signup_date = date('Y-m-d', time()); 

//Lowercase email 
$email_address = strtolower($email_address); 

mysqli_autocommit($connection, false); 

$flag = true; 

    $query = "INSERT INTO developers_prospects (signup_date, company_name, contact_name, email_address, phone_number) 
    VALUES ('$signup_date','$company_name','$contact_name','$email_address','$phone_number')"; 

    $result = mysqli_query($connection, $query); 

    if (!$result) { 
     $flag = false; 
     echo "Error details: " . mysqli_error($connection) . "."; 
    } 

    $query1 = "INSERT INTO developers_prospects_projects2 (company_name, project_name, house_amount, people_type, delivery_date) 

    VALUES ('$company_name','$project_name','$house_amount','$people_type','$delivery_date')";  

    $result = mysqli_query($connection, $query1); 

    if (!$result) { 
     $flag = false; 
     echo "Error details: " . mysqli_error($connection) . "."; 
    } 

if ($flag) { 
    mysqli_commit($connection); 
    $success = "Bedankt $contact_name! We hebben je gegevens in goede orde ontvangen."; 
    header ("Location: index.php?success=".urlencode($success)); 
} else { 
    mysqli_rollback($connection); 
    $error = "Oeps. Sorry $contact_name! Er ging iets mis."; 
    header ("Location: index.php?error=".urlencode($error)); 

} 

mysqli_close($connection); 

} 

?> 

とコードのjQueryの一部:

<script> 
     $(document).ready(function() { 
      var max_fields  = 10; //maximum input boxes allowed 
      var wrapper   = $(".developers-signup-form-container"); //Fields wrapper 
      var add_button  = $(".developers-signup-form-add"); //Add button ID 
      var x = 1; //initlal text box count 

      $(add_button).click(function(e){ //on add input button click 
       e.preventDefault(); 
       if(x < max_fields){ //max input box allowed 
        x++; //text box increment 
        $len= $(".developers-signup-form-container").children("div").length+1; 
        $(wrapper).append("<div class='developers-signup-form-wrapper'><a href='#' class='developers-signup-remove-field'>X Sluiten</a><label class='developers-signup-form-label'>Projectnaam:</label><input class='developers-signup-form-field' type='text' name='project_name' ><label class='developers-signup-form-label'>Aantal woningen:</label><input class='developers-signup-form-field' type='text' name='house_amount' ><label class='developers-signup-form-label'>Type bewoners:</label><input class='developers-signup-form-field' type='text' name='people_type' ><label class='developers-signup-form-label'>Gewenste afleverdatum:</label><input class='developers-signup-form-field' type='text' name='delivery_date' ></div>");} }); 

      $(wrapper).on("click",".developers-signup-remove-field", function(e){ //user click on remove text 
       e.preventDefault(); $(this).parent('div').remove(); x--; 
      }) }); 
    </script> 

私が間違っているのは何?あなたの答えを楽しみにしています。

答えて

0

のjQueryによって追加されたあなたの入力のすべてのまず第一には、同じ名前(project_namehouse_amountpeople_typedelivery_date

を持って再度ごphpのコードでは、新しいプロジェクトの複数の挿入を処理しません。

それらが配列

'<input class="..." name="projectName[]"/>' 

または

indexphp配列のキーとなります
'...<input class="..." name="projectName[' + index + ']"/>...' 

として宣言されているので、入力の名前を変更します - あなたは、おそらくあなたのケース

x変数を使用することができます

あなたのPHPスクリプト$_POST['projectName']は、あなたがループしなければならない配列になります

もう一つの方法は、このような名前の入力に次のようになります。

'<input class="..." name="projects[' + index + '][projectName]" /> 
<input class="..." name="projects[' + index + '][house_amount]" />' 

次に$_POST['projects']にあなたは多次元配列を持つことになりますし、あなたがこのような何か行うことができます:

foreach ($_POST['projects'] as $projectKey => $project) { 
    $projectName = $project['projectName']; // don't forget to escape 
    $houseAmount = $project['houseAmount']; 
    // 
    // do insert to db 
} 
+0

こんにちはミカルを。私はPHPスクリプトにforeachループを追加しました($ query1部分の後、if-submit-statement内(これが正しい場所です)、データベースに挿入するための新しいクエリを追加しました。また、jQuery私は入力を(プロジェクト名の例)に変更しました: 'name = 'project [" + $ len + "] [project_name]'。$ lenはコードの先頭に宣言されています。最初のプロジェクトフォーム(これは私の最初の試行とは異なります)、2番目/ 3番目/ 4番目の/ etcフォームを挿入しません。 – Nicholas

+0

私のforeachステートメントは次のようになります: 'foreach($ _POST ['projects'] as $ $ project ['house_amount']; $ project_name = $ project ['project_name']; $ house_amount = $ project ['house_amount']; $ people_type = $ project ['people_type']; $ delivery_date = $ project [ 'delivery_date']; 休憩。 ' – Nicholas

+0

ループ内に' break'があるので、2番目/ 3番目などを挿入しません。 'break'の代わりにプロジェクト用の挿入ロジックを置いてください –

関連する問題