-1

これについて助けが必要です。チェックされた項目のみを mysql テーブルに送信したい。

これは、php ページからレンダリングされた html です。

<table id="mylist" data-campaignId="2" cellspacing="0" width="100%">
<tbody>
        <tr>
      <td><input type="checkbox" name="selected[]" value="92" class="checkbox"></td>
      <td><a href="/client/view/92">Bob</a></td>
      <td><ul class="keywords">
          <li><a href="#">Peter T</a></li>
          <li class="orange-keyword"><a href="#">New Lead</a></li>
        </ul></td>
      <td>(555) 555-5555</td>
      <td>dad@msn.com.com</td>
      <td>2011-03-21</td>
      <td class="table-actions"><a href="/client/view/92" title="View / Edit" class="with-tip"><img src="/images/icons/fugue/pencil.png" width="16" height="16"></a></td>
    </tr>
    <tr>
      <td><input type="checkbox" name="selected[]" value="1074" class="checkbox"></td>
      <td><a href="/client/view/1074">Elinda Canty</a></td>
      <td><ul class="keywords">
          <li><a href="#">Mary</a></li>
          <li class="orange-keyword"><a href="#">New Lead</a></li>
        </ul></td>
      <td></td>
      <td>mary@live.com</td>
      <td>2011-06-29</td>
      <td class="table-actions"><a href="/client/view/1074" title="View / Edit" class="with-tip"><img src="/images/icons/fugue/pencil.png" width="16" height="16"></a></td>
    </tr>

</tbody>
</table>
<button id="add_users_to_campaign">Add Selected to Subscribers</button>

ここにページの完全なソースがあります。

<? $campaignid = $this->uri->segment(4); ?>
<script type="text/javascript">
<!--
$(document).ready(function(){
toggleChecked = function(status)
{

$(".checkbox").each( function() {
    $(this).attr("checked",status);
});
}
});
-->
</script>

<script type="text/javascript">
$(function() {
$('#add_users_to_campaign').click(function() {
var campaignId = $("#mylist").attr("data-campaignId");
var clientid = [];
$("#mylist :checked").each(function() {
    clientid.push($(this).closest("tr").attr("data-clientid"));
});
if (clientid.length === 0) {
    return;
}
console.log(campaignId, clientid);
$.post('/ajaxmodels/add_users_to_campaign', {
    campaignId: campaignId,
    "clientid[]": clientid
}, function(data) {}, "json");
});
});​
</script>

<!-- Content -->
<article class="container_12">

<section class="grid_12">
    <div class="block-border">
    <?
    $attributes = array('class' => 'block-content form', 'id' => 'table_form');
    echo form_open('', $attributes);
    ?>
        <h1>Search Fields</h1>
        <div class="columns">
            <p class="colx4-left">
                <label>Find</label>
                <?php echo form_dropdown('quicksearch',$qs_array,'','class="full-width"');?>
            </p>
            <p class="colx4-mid">
                <label>Where</label>
                <?php echo form_dropdown('where',$where_array,'','class="full-width"');?>
            </p>
            <p class="colx4-center">
                <label>Search</label>
                <?php echo form_input('searchfor','','class="full-width"');?>
            </p>
            <p class="colx4-right">
                <label>&nbsp;</label>
                <input type="submit"/>
            </p>
        </div>
    <? echo form_close(); ?></div>
</section>

<section class="grid_12">
    <div class="block-border">
    <form class="block-content form" id="table_form" method="post" action="">
        <h1>Sortable table</h1>

        <table id="mylist" data-campaignId="<?=$campaignid?>" class="table sortable no-margin" cellspacing="0" width="100%">

            <thead>
                <tr>
                    <th class="black-cell"><span class="loading"></span></th>
                    <th scope="col">
                        <span class="column-sort">
                            <a href="#" title="Sort up" class="sort-up"></a>
                            <a href="#" title="Sort down" class="sort-down"></a>
                        </span>
                        Name
                    </th>
                    <th scope="col">Client Of</th>
                    <th scope="col">
                        <span class="column-sort">
                            <a href="#" title="Sort up" class="sort-up"></a>
                            <a href="#" title="Sort down" class="sort-down"></a>
                        </span>
                        Home Phone
                    </th>
                    <th scope="col">
                        <span class="column-sort">
                            <a href="#" title="Sort up" class="sort-up"></a>
                            <a href="#" title="Sort down" class="sort-down"></a>
                        </span>
                        Email
                    </th>
                    <th scope="col">
                        <span class="column-sort">
                            <a href="#" title="Sort up" class="sort-up"></a>
                            <a href="#" title="Sort down" class="sort-down"></a>
                        </span>
                        Created On
                    </th>
                    <th scope="col" class="table-actions">Actions</th>
                </tr>
            </thead>

            <tbody>
            <?php foreach($r->result() as $row) : ?>
                <tr>" 
                  <td>
                    <input type="checkbox" name="selected[]" value="<?=$row->id?>" class="checkbox">
                  </td>
                    <td><a href="/client/view/<?=$row->id?>"><?=$row->firstname?> <?=$row->lastname?></a></td>
                    <td><ul class="keywords">
                        <li><a href="#"><?=$row->clientof?></a></li>
                        <li class="orange-keyword"><a href="#"><?=$row->status?></a></li>
                    </ul></td>
                    <td><?=$row->homephone?></td>
                    <td><?=$row->email?></td>
                    <td><?=$row->created?></td>
                    <td class="table-actions">
                        <a href="/client/view/<?=$row->id?>" title="View / Edit" class="with-tip"><img src="/images/icons/fugue/pencil.png" width="16" height="16"></a>
                    </td>
                </tr>
            <?php endforeach;?>
            </tbody>

        </table>

        <div class="clear"></div>

<div class="block-footer">
            <img src="images/icons/fugue/arrow-curve-000-left.png" width="16" height="16" class="picto"> 
            <a href="javascript:toggleChecked('checked')" class="button">Select All</a> 
            <a href="javascript:toggleChecked('')" class="button">Unselect All</a>
            <span class="sep"></span>
            <button id="add_users_to_campaign">POST selected</button>
        </div>                  
    </form></div>
</section>
</article><!-- End Content -->

チェックした項目のみをこのテーブルに挿入したい:

ID - 自動インクリメント

キャンペーンID

クライアントID

作成日

これどうやってするの?

また、クライアント ID を同じキャンペーン ID に重複して挿入しないようにする必要があります。そのため、このキャンペーン ID の clientid が既に存在する場合は、挿入をスキップします。

これが私が現在コントローラajaxmodelsに持っている機能です:

function add_users_to_campaign(){
$campagnid=$this->input->post('campaignid');
$client = $this->input->post('client');
    foreach ($client as $client_id) {
        $submit['clientid'] = $clientid;
        $submit['campaignid'] = $this->input->post('campaignid');
        $submit['creationdate'] = date('Y-m-d H:i:s');
        $submit['createdby'] = $this->session->userdata('uid');
        $newid = $this->campaign_model->add_user_to_campaign($submit);

    }
}

これが Campaign_model->add_user_to_campaign です

function add_user_to_campaign($data)
{
    $this->db->insert('campaign_to_client',$data);

    $newid = $this->db->insert_id();
    return $newid;
}

アイテムをチェックして送信すると、エラーなしでページが更新され、何も挿入されません。

4

1 に答える 1

0

最初のインスタンスで 4 つすべてを実行する (つまり、理解を深めるために) 代わりに、表の 1 行だけを試して、それが機能するかどうかを確認します。

また、各項目に同じ名前を使用しないことを検討する必要があります。すなわち使用

<input type="checkbox" name="selected[1]" class="checkbox" value="yes">
<input type="checkbox" name="selected[92]" class="checkbox" value="yes">
<input type="checkbox" name="selected[1024]" class="checkbox" value="yes">

編集

ペアでフォームから返されるデータ (つまり、名前、値)。名前は一意である必要があります。しかし、あなたのものはそうではありません。selected[]値があり、異なる (潜在的な) 値を持つ 3 つの名前があります。どのようにそれらを区別しますか?

私の最初の段落は、デバッグを行う最善の方法を説明することでした (最初にデバッグを単純にしてから、より複雑なものを追加します。

さらに編集

上記に値ビットを追加しました。

または、これを行うことができます

<input type="checkbox" name="selected[]" class="checkbox" value="1">
<input type="checkbox" name="selected[]" class="checkbox" value="92">
<input type="checkbox" name="selected[]" class="checkbox" value="1024">

ミッキーマウスの例

PHPファースト

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
<pre>

The forms data
<?php
$selector = $_GET['selector'];
print_r($selector);
echo "Now go through than data\n";

foreach ($selector as $name=>$value)
{
    // Find the name
    $character = $_GET["id$name"];

    echo "$character is $name or $value depends on the method you chose\n";
}
echo "\n\nThose are the checked ones";
?>
</pre>
</body>
</html>

そして、ここにフォームがあります:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Wibble</title>
</head>
<body>
<form action="send.php" method="get">
<input type="hidden" name="id0" value="client Joe Bloggs">
<input type="hidden" name="id1" value="Client Bugs Bunny">
<input type="hidden" name="id2" value="Client Al Capone ">
Check 1 <input type="checkbox" name="selector[]" value="1">
Check 80 <input type="checkbox" name="selector[]" value="80">
Check 200 <input type="checkbox" name="selector[]" value="200">
<input type="submit" value="depends">
</form>
<form action="send.php" method="get">
<input type="hidden" name="id1" value="client Joe Bloggs">
<input type="hidden" name="id80" value="Client Bugs Bunny">
<input type="hidden" name="id200" value="Client Al Capone ">
Check 1 <input type="checkbox" name="selector[1]" value="yes">
Check 80 <input type="checkbox" name="selector[80]" value="yes">
Check 200 <input type="checkbox" name="selector[200]" value="yes">
<input type="submit" value="otherway">
</form>

</body>
</html>
于 2012-12-17T18:46:00.437 に答える