0

わかりましたので、ページの更新を呼び出さずにデータベースを動的に更新するのはかなり初めてです。http://mytinytodo.net/のようなものを、はるかに単純な規模で作成しようとしています

ここで達成しようとしている最終目標は、プログラムが次のことを行うことです。

  1. フィールドを動的に生成できるようにする (完了)
  2. PHP 経由のロード時に MYSQL データベースの既存のエントリを Web ページに入力する (完了)
  3. ユーザーが「すべてチェック」または「すべてチェック解除」できるようにする (完了)
  4. ユーザーの個人的なリストを覚えておいてください.. Cookie かな?ヘルプ!
  5. ユーザーが既存のリスト アイテムに加えた変更でデータベースを更新するか、新しく作成されたリスト アイテムをコミットします。AJAX? Jクエリ?ヘルプ!

これまでのところ、この小さなプロジェクトに数時間を費やしてきましたが、ここに私が持っているものがあります:

index.php:

<!doctype html>
<html>
    <head>
    <metacharset="utf-8" />
    <title>Simple To-Do List</title>
    <?php
    // Create connection via my connect.php file
    require 'connect.php';

    // Create query
    $query = "select * from checklist";
    $result = mysql_query($query);

    // Create requisite array for checklist
    $checklistItems = array();

    //Check to ensure query won't implode and is valid
    if ($result === FALSE) {
        die(mysql_error());
    }

    // Calculates number of rows from query  
    $num = mysql_numrows($result);

    mysql_close($con);
    ?>
    <!-- javascript code to dynamically add new form fields as well as check\uncheck all boxes -->
    <script src="addInput.js" language="Javascript" type="text/javascript"></script>

</head>
<body>   

    <h1>My To-Dos</h1>


    <form name="checklist" id="checklist" action="" method="">
        <?php
        // Loop through query results     
        while ($row = mysql_fetch_array($result)) {
            $entry = $row['Entry'];
            $CID = $row['CID'];
            $checked = $row['Checked'];
            // echo $CID;
            echo "<input type=\"text\" value=\"$entry\" name=\"textfield$CID;\" id=\"textfield$CID;\" />";
            echo "<input type=\"checkbox\" value=\"\" name=\"checkbox$CID;\" id=\"checkbox$CID;\"  value=\"$checked\"" . (($checked == '1') ? ' checked="checked"' : '') . "  />";
            echo "<br>";
        }
        ?> 
        <div id="dynamicInput"></div>
        <input type="submit" id="checklistSubmit" name="checklistSubmit"> <input type="button" id="CompleteAll" name="CompleteAll" value="Check All" onclick="javascript:checkAll('checklist', true);"><input type="button" id="UncheckAll" name="UncheckAll" value="Uncheck All" onclick="javascript:checkAll('checklist', false);">               
        <input type="button" value="Add another text input" onClick="addInput('dynamicInput');"></form>
</body>
</html>

connect.php

<?php 

// Create connection
$con=mysql_connect("localhost","root","");
$selected = mysql_select_db("madmonk",$con); 

// Check connection
if (mysqli_connect_errno($con))
{
    echo "Failed to connect to MySQL: " . mysql_connect_error();
}

?>

要約すると、フォーム フィールドの 1 つに "onchange" が発生したときに、投稿ファイルでページ全体をスローしてから URL をリダイレクトすることなく、ユーザー リストを慎重に更新するにはどうすればよいでしょうか? リフレッシュしたくありません。

ユーザーが誰で、ユーザーの個人的なアイテムのリストが何であるかを記憶する Cookie を作成するにはどうすればよいですか?

これは、このようなことへの私の最初の本当の試みです。明らかに、私はまだ「スタイリング」段階に近づいていないので、CSS や派手なものはありません。

編集: したがって、訪問者を互いに区別するために使用している(本質的に)一意のセッション変数があり、データベースに新しい「チェックリスト」を作成すると、「uid」がそこに記録されます。したがって、システムはセッションが続く限りそれらを「記憶」します...これは、あなたの何人かが私がしていることをほのめかしていたことだと思います.

4

3 に答える 3

1

あなたは jQuery を取り上げたいと思うかもしれません - 基本的な JS フレームワーク (および ajax のもの) に関しては、あなたの生活を楽にしてくれます。

次に、いつでもセッションを使用できます。session_start()PHPファイル(使用されるすべてのもの)の先頭に配置するだけで、$_SESSION['name']必要なものにアクセスして割り当てることができます。

PHP はステートレスです - Cookie の使用は推奨されません。セッションはサーバー側であり (通常、セッション ID Cookie をクライアントに配置しますが、それ以外には何もしません)、通常は信頼できます。

「ユーザーの個人的なリストを覚えている..多分クッキー?」-これにデータベースを使用していると思いましたか?

于 2013-05-31T23:09:49.847 に答える
1

あなたが使用できるAJAX部分のために

$.ajax({                                      
            url: 'api.php',           //the script to call to get data          
            data: ''//you can insert url arguments here to pass to api.php
                                   //for example "id=5&parent=6"
            dataType: 'json',                //data format      
            success: function(data)          //on recieve of reply
            {
                //what you do after the script has been called
            } 
    });
于 2013-05-31T23:13:56.570 に答える
1

Carlos が提供する jQuery ajax メソッドを利用し、Rob が述べているようにセッションを使用すると仮定すると、api.php ファイルの中にこのようなものを含めることができます。

$json_data = $POST;

do_update($json_data);

function do_update($DATA) {
    if ($DATA['type'] == 'update') {        
        foreach ($json_data as $key=> $value) {
            $query .= " UPDATE table SET {$key} = '{$value}' WHERE user_id = '{$_SESSION['some_user_id']}' ";
        }
    } elseif ($DATA['type'] == 'delete') {      
        foreach ($json_data as $key=> $value) {
            $query .= " DELETE FROM table WHERE {$key} = '{$value}' AND user_id = '{$_SESSION['some_user_id']}' ";
        }
    }

    if (mysql_query($query)) {
        echo "Yay";
    } else {
        echo "Nay";
    }  
}
于 2013-05-31T23:44:19.830 に答える