2013-11-28 1 views
2

Я пытаюсь вставить данные в MySQL из динамической формы с помощью jQuery. Для записи я использую Twitter Bootstrap. Я действительно добился ввода «строк», но без данных. Лучшая помощь, которую я нашел прямо сейчас, это here для вставки в MySQL и here в сценарий jQuery.Добавление данных в MySQL из динамической формы jQuery

Заранее благодарим за это.

Файл: add.php

<form action="../reglas/insert.php" method="post" class="form-horizontal"> 
<div class="container"> 
<div id="content"> 
<div class="row"> 

<a class="add_line btn btn-small" href="#" style="margin-left:5px">+</a> 
</div> 

<br> 
</div> 



</div> 

</div> 
</div> 

<div style="margin:20px auto; width:80px;"> 

<input class="btn btn-success" type="submit" value="Guardar"> 
</div> 

</form> 


<script> 
$("#content").delegate(".add_line", "click", function() { 
var content = '<div class="row">' + 

        '<div class="span3"><div class="input-append"><input type="text" class="span2 text-right" placeholder="0.00" id="enganche" name="enganche" value="" /><span class="add-on">%</span></div></div>' + 
        '<div class="span3"><div class="input-append"><input type="text" class="span2 text-right" placeholder="0.00" id="comision" name="comision" value="" /><span class="add-on">%</span></div></div>' + 
        '<div class="span3"><div class="input-append"><input type="text" class="span2 text-right" placeholder="0.00" id="r1" name="r1[]" value="" /><span class="add-on">%</span></div></div>' + 

        '<div class="span2"><div class="input-append"><input type="text" class="span1 text-right" placeholder="0.00" id="r2" name="r2[]" value="" /><span class="add-on">%</span></div></div>'+ 

        '<a class="del_line btn btn-small" href="#" style="margin-left:5px">-</a>&nbsp;' + 
        '<br><br>'+ 

        '</div>'; 
$("#content").append(content); 
return false; 
}); 

$("#content").delegate(".del_line", "click", function() { 
$(this).parent().remove(); 
return false; 
}); 
</script> 

Файл: insert.php

соединительном:

$con=mysqli_connect("$host","$username","$password","$db_name"); 
mysqli_autocommit($con, false); 

$flag=true; 

Запрос:

$query=" 
INSERT INTO $tbl_name(
the_input, 
) 
VALUES (
'$the_input', 
)"; 

"За":

for ($i = 0; $i < count($_POST['the_input']); $i++) { 
$the_input = $_POST['the_input'][$i]; 


$result = mysqli_query($con, $query); 
if (!$result) { 
$flag = false; 
echo "Error details: " . mysqli_error($con). ". "; 
} 
} 
if ($flag) { 
mysqli_commit($con); 
echo "Done!"; 
} 

mysqli_close($con); 

?> 
+0

Спасибо @leemo, вы можете быть более конкретным? Я действительно ценю некоторые рекомендации здесь. – Horacio

+0

Я угадаю, на какие биты данных вы пытаетесь отправить и попробуете макет ответа для вас – hammus

+0

спасибо @leemo. Вот как выглядит фактическая форма в браузере. (https://www.dropbox.com/s/61hxtuls9kwa959/Screen%20Shot%202013-11-27%20at%208.19.37%20PM.png) – Horacio

ответ

0

все в порядке.

Первые вещи сначала:

$.delegate() осуждается так, если вы не используете версию, < JQuery 1,7 (который много версий назад), вы должны перейти на $.on() событие вяжущего/функции доверителя. Это гарантирует, что ваш код на будущее

Во-вторых (по крайней мере, пока они снова не измените апи!):

Я предполагаю, что вы обернули свои данные в виде тега и значения фактически получаете отправить страница получения, вот как я это сделаю:

if(isset($_POST['the_input'])) 
{ 
    //create connection object; 
    $mysqli = new mysqli($host,$username,$password,$db_name); 

    $query = "INSERT INTO `the_input` VALUES ("; 

    //construct the query. Get the the_input data and paramater string (required for stmt binding) 
    foreach($_POST['the_input'] as $value) 
    { 
     $query .= $value . ","; 
    } 

    //remove trailing comma 
    $query = substr($query, 0, strlen($query)-1); 
    $query .= ")"; 

    //this is just so you can see what the loop did and test the output of the query, remove this when you're confident 
    echo "The constructed query string is: " . $query 

    if($mysqli->query($query) == false) 
    { 
     trigger_error($mysqli->error); 
    } else { 
     echo "Success! Check the DB!"; 
    } 

} else { 
    Echo "No POST data was recieved"; 
} 
+0

Большое спасибо @leemo за советы и ответ. давай попробуем! – Horacio

+0

@HcH произошла ошибка в моем коде, которую я сейчас исправил ... отсутствующую скобку. – hammus

+0

Спасибо @leemo У меня есть эта ошибка. Я использую Adobe Dw. https://www.dropbox.com/s/bgp5ukcw4ihom8o/Screenshot%202013-11-27%2021.01.42.png – Horacio

Смежные вопросы