1

バスのルートを登録するアプリケーションを作成し、ルート名を一度指定し、テキスト ボックスと選択ボックスを動的に作成して、ユーザーがそのルートにバス停を好きなだけ作成できるようにします。これは私の CodeIgniter のビューです。テキスト ボックスを作成し、フォーム div でボックスを動的に選択するスクリプトです。

入力したデータを、次のフィールドを持つデータベースに投稿したい:

route_number     stop_name  am_pm  timing 

CodeIgniter モデルのコントローラー機能について教えてください。ビューは次のとおりです。

<form method='post' action='<?php echo site_url('a3_bus_system/output')?>'>
<div class="_25">
<strong>Route Name/Number</strong>
     <br/>
<input type="text" name=""></input>
</div>
<p>&nbsp;<p>&nbsp;</p></p>
<p>&nbsp;<p>&nbsp;</p></p>
<div id="div">
</div>
<p>&nbsp;</p><div class="_25">
<p><input type="button" name="button" class="button red" id="button" value="Add"  onclick="generateRow() "/></a></p>
</div>
<input type='button' value='Remove Button' id='removeButton'>
<p>&nbsp;</p><p>&nbsp;</p></div>
 <input type="submit"  class="button blue" id="button" value="Register" />
/form>  
</div>
</div>
<div class="clear height-fix"></div>
</div></div> <!--! end of #main-content -->
</div> <!--! end of #main -->
<script>
var counter=1;
  function generateRow() {
var count="<font color='red'>"+counter+"</font>";
var temp ="<p>&nbsp;&nbsp;&nbsp;&nbsp;<div class='_25'><input type='textbox' id='textbox' name='stop"+counter+"' placeholder='Stop Name'></input></div>&nbsp;&nbsp;&nbsp;<div class='_25'><input type='textbox' id='textbox' name='timing"+counter+"' placeholder='Timing'></input></div>&nbsp;<div class='_25'><select id='ampm"+counter+"' name='ampm"+counter+"'><option>a.m</option><option>p.m</option></select>  </div>";
var newdiv = document.createElement('div');
newdiv.innerHTML = temp + count;
var yourDiv = document.getElementById('div');
yourDiv.appendChild(newdiv);
counter++;
}
</script>
4

1 に答える 1

0

フォームを同じ PHP ファイルに送信する必要があります。counterパラメーターを渡すことで、送信されたデータ セットの数がわかり、データをデータベースに挿入できます。フォームを送信した後、次の php コードがデータをデータベースに挿入します。

<?php
if(!empty($_POST["counter"]) && !empty($_POST["route"])){
    $counter = $_POST["counter"];
    $route   = $_POST["route"];
    $pdo     = new mysqli("host", "username", "password", "database");
    $stmt    = "INSERT INTO table_name(route_number, stop_name, am_pm, timing) VALUES(?, ?, ?, ?)";
    $insert  = $pdo->prepare($stmt);

    for($i = 1; $i <= $counter; $i++)
    {
        $stop   = $_POST["stop" . $i];
        $timing = $_POST["timing" . $i];
        $ampm   = $_POST["ampm" . $i];
        $insert->bind_param("isss", $route, $stop, $ampm, $timing);
        $insert->execute();
    }
    $stmt->close();
    $pdo->close();
}
?>


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Buss Routes</title>
<script type="text/javascript">
    var counter = 1;

    function generateRow() {
        var count = "<p align='center' ><font color='red'>" + counter + "</font></p></div>";
        var temp = "<div id='container" + counter + "'  class='_25' >"
            + "<input type='text' name='stop" + counter + "' placeholder='Stop Name' />"
            + "<input type='text' name='timing" + counter + "' placeholder='Timing' />"
            + "<select name='ampm" + counter + "'><option>a.m</option><option>p.m</option></select>"
            + "<input type='button' onClick='Javascript:this.parentNode.remove(); counter--;' value='Remove' />";
        var newdiv = document.createElement('div');
        newdiv.innerHTML = temp + count;
        document.getElementById('div').appendChild(newdiv);
        document.getElementById('counter').value = counter;
        counter++;
    }
</script>
</head>
<body>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
    <div class="_25">
        <p align="center"><strong>Route Name/Number</strong></p>
        <input type="text" name="route" placeholder="Route Number" />
    </div>
    <div id="div"></div>
    <div class="_25">
        <input type="button" class="button red" value="Add" onclick="generateRow()" />
        <input type="hidden" name="counter" id="counter" />
        <input type="submit" class="button blue" value="Register" />
    </div>
    </form>
<div class="clear height-fix" ></div>
</body>
</html>

これは、javascript コードがどのように機能するかを示すデモです: jsfiddle

host, database,usernamepasswordサーバーの詳細とtable_nameデータを含むテーブル名に置き換えます。


CodeIgniter の場合、上記の php コードの代わりにこれを試してください (テストされていません。以前は CodeIgniter を使用したことがありませんでしたが、ellislab Web サイトのドキュメントを確認すると、これが機能するはずです)。

<?php
if(!empty($_POST["counter"]) && !empty($_POST["route"])){
    $counter = $_POST["counter"];
    $route   = $_POST["route"];
    $this->load->database();

    for($i = 1; $i <= $counter; $i++)
    {
        $data = (
            'route_number' => $route,
            'stop_name'    => $_POST["stop" . $i],
            'am_pm'        => $_POST["ampm" . $i],
            'timing'       => $_POST["timing" . $i]
        );
        $this->db->insert('mytable', $data);
    }
}
?>
于 2013-04-08T19:12:48.913 に答える