1

私はstackoverflowでたくさんの質問を読んでいて、それが私の人生を楽にしてくれました。

これが私の問題です。同じフォームの<select>入力で選択されているオプションに応じて、SQLデータベースから選択された<textarea>フィールドに異なる値を挿入できるようにする必要があります。

基本的な考え方は、データベースからのニュースを編集し、タイトルと本文を編集したいということです。そのために、SQLデータベースから取得することにより、どの(タイトル/本文)データにデータベースが含まれているかをユーザーに示したいと思います。ユーザーがデータベースに複数のエントリを持っている可能性があるため、<select>コンボボックスで1つのエントリを選択するときに、データベースから選択したエントリの内容に変更したいと思います。

私の英語が苦手なため、簡単なアイデアを表現するのは難しいです...

HTMLフォームは多かれ少なかれ次のようになります。

<form action="edit.php" method="post">
    <select name="id">
       <option value="1">Option 1</option>
       <option value="2">Option 2</option>
    </select>
    <textarea name="newsBody"></textarea>
    <input name="submit" type="submit" value="Edit" />
</form>

SQLデータベースの構造は、多かれ少なかれ次のようになります。

DB名:データベース

DBテーブル:ニュース(フィールドID、本文、タイトル、作成者、タイムスタンプ)

<select>からニュースを選択して'id'/'option value'を取得し、DBから正しい値を取得して、対応する<textarea>に表示できるようにしたいと思います。

私はウェブサイトのコーディングに不慣れで、趣味としてそれを行っているので、PHP、MySQLに関する私の知識は非常に基本的です。PHPのコードやオプションを提供していません。それを解決する方法がわからないからです...しかし、sql、phpの構文は理解できます。

<select> event'onchange'とjavascriptを使用することを考えましたが、機能させることができませんでした...おそらく有用な例がないため、jQuery/ajaxを使用することもできませんでした!!

誰かが理解し、解決策を提供できることを願っています!

よろしくお願いします!

4

5 に答える 5

1

Ajaxを使用できます。

.html次のページを作成します。

<html>

    <head>

        <script>

            function showData(str)
            {
                if (str=="")
                {
                    document.getElementById("ajax-content").innerHTML="";
                    return;
                } 

                // Code for IE7+, Firefox, Chrome, Opera, Safari
                if (window.XMLHttpRequest)
                {
                    xmlhttp=new XMLHttpRequest();
                }

                // Code for IE6, IE5
                else
                {
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }

                xmlhttp.onreadystatechange=function()
                {
                    if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    {
                        document.getElementById("ajax-content").innerHTML=xmlhttp.responseText;
                    }
                }

                xmlhttp.open("GET","showData.php?id="+str,true);

                xmlhttp.send();
            }

        </script>

    </head>

    <body>

    <form>

        <select name="news" onchange="showData(this.value)">
            <option value="">Select ID:</option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>

    </form>

    <div id="ajax-content"></div>

    </body>

</html>

そして、次の.phpスクリプト(showData.php私の例では):

<?php

    // Receive variable from URI
    $id=$_GET["id"];

    // Connect to your database
    $con = mysql_connect('localhost', 'user1591005', 'stackOverflow');
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    // Select your database
    mysql_select_db("myDatabase", $con);

    // Select all fields from your table
    $sql="SELECT * FROM news WHERE id = '".$id."'";

    $result = mysql_query($sql);

    while($row = mysql_fetch_array($result))
    {
        echo "<input type='text' value='" . $row['title'] . "'>";
        echo "<textarea>" . $row['content'] . "</textarea>";
    }

    // Close the connection
    mysql_close($con);

?>
于 2012-08-10T19:49:44.583 に答える
0

データベースからデータを取得するには、PHPなどのサーバー側言語を使用する必要があります。要素の変更に対応するには、<select>JavaScriptを使用する必要があります。AJAXは、2つの言語間のギャップを埋めるものです。

まず、JavaScriptを記述してクエリを作成します。jQueryを使用している場合、これは非常に簡単です。

    <script>
            var selector = $("#mySelectorID"); // first select the <select> elm
            selector.change(function(e) { // attach a function to it's change event
                    jQuery.get("getContents.php", // when it changes, make an AJAX call
                            {id:selector.val()}, // passing the value of the <select> as data
                            function(returnVal) { // after a successful AJAX ...
                                    $("#myTextAreaID").val(returnVal); // ... set the textarea to the correct value
                            });
            });
    </script>

次に、新しいphpファイルを作成します(少し簡略化されていますが、これで機能します)。

<?php
    $id = $_GET['id']; // get the id that was passed through the URL

    $connection = mysql_connect("hostname","username","password"); // connect to db

    mysql_select_db("database", $connection ); // select the db

    $result = mysql_query("SELECT * FROM news WHERE ID = $id"); // make SQL query

    if ($row = mysql_fetch_array($result)) { // fetch the first row
            echo $row['body']; // output the contents of the row
    }

    connection mysql_close($connection ); // close the connection
?>

jQueryを使用したAJAXの詳細:http://api.jquery.com/jQuery.get/

于 2012-08-10T19:50:09.600 に答える
0

さて、昼食の前に簡単なアイデアを教えてあげましょう... :)

  1. 選択したドロップダウンボックスの値をPHPスクリプトに渡すようにAJAXリクエストを設定します。

  2. このPHPスクリプトでは、選択した値のデータをデータベースからフェッチします。

  3. データを返し、テキストボックスの値をそれに設定します。

AJAXリクエストの送信

于 2012-08-10T19:40:05.843 に答える
0

これにはAJAXとMysql+PHPを使用する必要があるようです。まず、テーブルからデータを収集します。たとえば、2つ目は、使用できるテーブルの結果を含むhtmlコードを出力することです。これは、ループ$result = mysql_query('SELECT * FROM new_table WHERE author = author's id') を使用して実行できます。foreach()次に、(jQueryフレームワークからの)ajaxを使用し、ユーザーの選択時にデータベースからデータを再度プルする必要があります。お役に立てれば

于 2012-08-10T19:41:04.127 に答える
0

Ajaxに分岐する前に、単純なhtml/PHPソリューションで作業したいと思っています...

<?php
$title = "" ; // set the variables
$body = "" ;
$action = "" ;
$submit = "Edit";

if(isset($_POST['id']) && (int) $_POST['id'] > 0 ){
// a positive integer was sent to your form 
// so now construct your sql statement: ie
// "select title, body from new where id= " . $_POST['id'] ;
// assign your rows to your variables 
// $title = $row['title'] ;
// $body = $row['body'] ;
// now re-use your empty form to display the variables
// re-assign the form variables
// $action = "save.php" ;
// $submit = "Save changes";
}
?>


// have the form submit to itself by default
<form action="<?php echo $action; ?>" method="post">
<select name="id">
<option value="1" <?php if($_POST['id'] == 1 ) echo "selected=selected; ?>>Option 1</option>
<option value="2" <?php if($_POST['id'] == 1 ) echo "selected=selected; ?>>Option 2</option>
</select>
 // have your html form values the same name as your db table columns
    <input type="text" name="title" value="<?php echo $title; ?>"/>
    <textarea name="body"><?php echo $body; ?></textarea>
    <input name="submit" type="submit" value="<?php echo $submit; ?>" />
</form>

次に、save.phpは新しい値をデータベースに保存し、おそらくこのページにリダイレクトします...

私は本当にこれを減らしています、あなたはおそらくデータベースからの選択からあなたのIDを生成するでしょう、そしてそれらはおそらくアルファベット順のid、titleでしょう:

ビッグストーリービッグストーリー

考慮すべきことは他にもたくさんありますが、これはそれを回避するための1つの方法です。

于 2012-08-10T20:18:17.580 に答える