【问题标题】:foreach save to mysqliforeach 保存到 mysqli
【发布时间】:2013-07-08 00:46:54
【问题描述】:

这让我很困惑, 我无法将表单有序地保存到数据库中。

请看下图。 形成图像

数据库示例只保存...

所以当您看到它时,它不是 1、2、3、4,而是图像上的 1、3、2、4 如何保存有序?

HTML 代码

<table cellpadding="5" cellspacing="0" width="100%" class="computation_table">
<tr>
    <th></th>
    <th>Categorie&euml;n</th>
    <th>Aantal</th>
    <th>Omschrijving</th>
    <th>Bedrag</th>
    <th>Totaal</th>
    <th>BTW</th>
    <th></th>
</tr>
<tr>
    <td>
    <a id="add_new_element"><img src="images/add.png" width="20" alt="add product" /></a> 
    <a id="add_new_category"><img src="images/cat.png" alt="add category" /></a>
    </td>
    <td align="left" colspan="6">
        <input type="text" name="input[0][cat_name]" style="font-weight:bold;" value="Categorie naam" />
    </td>
</tr>
<tr>
    <td>
    <a id="add_new_element"><img src="images/add.png" width="20" alt="add product" /></a>
    <a id="add_new_category"><img src="images/cat.png" alt="add category" /></a>
    </td>
    <td>
        <input type="text" name="input[0][category]" class="text_com" value="" />
    </td>
    <td>
        <input type="text" name="input[0][quantity]" id="new_quan" class="quantity text_com" value="" /> x
    </td>
    <td width="180">
        <textarea name="input[0][quo_definition]" class="input"></textarea>
    </td>
    <td>
        <input type="text" name="input[0][quo_amt]" id="new_amt" class="quantity text_com" value="0" />
    </td>
    <td id="total">
        <span id="view_total_0">0</span>
        <input type="hidden" name="input[0][quo_total]" id="new_total" class="quantity text_com" value="0" />
    </td>
    <td>
        <select name="input[0][quo_btw]" class="btwselect">
            <option value="21%" selected="selected">21%</option>
            <option value="6%">6%</option>
            <option value="0%">0%</option>
        </select>
    </td>
</tr>
</table>
<br />
<div class="ClientProductItemsSubTotal">
<table cellpadding="5" cellspacing="0" width="100%">
<tr>
<td><strong>Korting</strong></td><td><input type="text" name="discount" class="quantity" value="" /></td>
</tr>
</table>
</div>

表格到 DB $input = array();

foreach( $_POST['input'] as $input ) {
$mysqli->query( "INSERT INTO jon_com_quo_computation VALUE('', '$uc', '$cc', '$ct', '$cur', '', '".$input['cat_name']."', '".$input['category']."', '".$input['quantity']."', '".$input['quo_definition']."', '".$input['quo_amt']."', '".$input['quo_total']."', '".$input['quo_btw']."', '$dis', '', '', '1', 'new', NOW() )" );
}

jQuery 在下面添加表单...应该在底部...我使用了.insertAfter(rowfield);

jQuery(function() {    
id = 0;
jQuery('a#add_new_element').live('click', function() {
id++;

var rowfield = jQuery(this).parent().parent();//add some .parent() untill you get the TR element
jQuery('<tr><td><a id="add_new_element"><img src="images/add.png" width="20" alt="add product" /></a> <a id="add_new_category"><img src="images/cat.png" alt="add category" /></a></td><td><input type="text" name="input['+id+'][category]" class="text_com" value="" /></td><td><input type="text" name="input['+id+'][quantity]" id="new_quan" class="quantity" value="" /> x</td><td width="200"><textarea name="input['+id+'][quo_definition]" class="input"></textarea></td><td><input type="text" name="input['+id+'][quo_amt]" id="new_amt" class="quantity" value="0" /></td><td><span id="view_total_'+id+'">0</span><input type="hidden" id="new_total" name="input['+id+'][quo_total]" class="quantity" value="0" /></td><td><select name="input['+id+'][quo_btw]" class="btwselect"><option value="21%" selected="selected">21%</option><option value="6%">6%</option><option value="0%">0%</option></select></td><td><a id="del_row"><img src="images/del.png" class="DelRow" alt="delete" /></a></td></tr>').insertAfter(rowfield);

});

非常感谢您的分享想法......

已编辑:更多解释... 我需要修复两件事。 首先是当它保存到我的数据库时,顺序并没有真正遵循。 应该是a b c d 而不是a c b d

第二件事是我不确定我是要使用insertAfter() 还是insertBefore() 我老板想要的是,他可以添加任何形式——当他点击添加按钮时,它应该在下面添加。

例如,当我单击绿色 + 添加按钮时,它应该添加到已添加的最后一个 tr。

我愿意解释更多..

【问题讨论】:

  • 天哪,我也糊涂了!
  • 如果我的英语也很混乱,我很抱歉...让我编辑它并进行更多解释...
  • "从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应优先使用 .delegate() 而不是 .live ()。”
  • id 必须是唯一的,id="add_new_element" 多次使用类是错误的

标签: php jquery mysql


【解决方案1】:

尝试在点击事件中使用 append 而不是 insertAfter:

var $table = jQuery(this).closest('table')
$table.append('<tr>whatever</tr>');

【讨论】:

  • 嗨,@HarryFink 先生,非常感谢,append 现在工作正常。天哪,我的帖子太长了,唯一的答案很简单 T_T 我需要更多的经验才能像你一样先生。
  • 我在我的数据库中尝试了它->现在保存它是有序的保存我很高兴...再次感谢@HarryFink
  • 顺便用类名代替id,因为id在html文档中应该是唯一的。并考虑将 live() 替换为 on()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 2010-12-04
  • 2015-10-01
  • 2023-03-19
  • 2019-08-17
相关资源
最近更新 更多