将SQL数据插入HTML textarea

时间:2012-08-10 19:33:14

标签: php mysql html sql

我一直在阅读stackoverflow上的许多问题,这些问题让我的生活变得更轻松,但我第一次问了一些问题。

这是我的问题。我需要能够将我的SQL数据库中的不同值插入到选定的< textarea>字段,取决于在<中选择的选项。选择>在同一表格上输入。

基本思想是我想编辑数据库中的新闻,编辑标题和正文。为此,我想通过从我的SQL数据库中获取数据,向用户显示包含我的数据库的(标题/正文)数据。用户可能在数据库中有多个条目,因此当我在<数据库中选择一个条目时选择>组合框,我想将内容更改为数据库中所选条目的内容。

由于我的英语不好,这个简单的想法难以表达......

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数据库结构或多或少如下:

数据库名称:数据库

数据库表:新闻(字段ID,正文,标题,作者,时间戳)

我希望能够从我的&lt;中选择新闻。选择&gt;获取'id'/'选项值',然后从DB获取正确的值,并在相应的&lt;中显示它。 textarea&gt;。

我是网站编码的新手,并且只是作为一种业余爱好,所以我的PHP知识,MySQL是非常基础的。我不提供任何PHP代码或选项,只是因为我不知道如何解决它...我可以理解sql,php语法。

我想用&lt;选择&gt;事件'onchange'和javascript,但无法使其工作......我也不能使用jQuery / ajax,可能是因为缺乏有用的示例!!

希望有人理解并提供解决方案!

非常感谢提前!

5 个答案:

答案 0 :(得分: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);

?>

答案 1 :(得分:0)

好吧我会在午餐前给你一个简单的想法...... :)

  1. 设置AJAX请求以将选定的下拉框值传递给PHP脚本。

  2. 在此PHP脚本中,从数据库中获取所选值的数据。

  3. 返回数据并将文本框的值设置为该值。

  4. Sending an AJAX Request

答案 2 :(得分:0)

您似乎需要使用AJAX和Mysql + PHP。第一件事是从表中收集数据。 例如$result = mysql_query('SELECT * FROM new_table WHERE author = author's id') 第二件事是输出html代码,其中包含您可以使用的表的结果 您可以使用foreach()循环来完成此操作。然后你需要使用ajax(来自jQuery框架)并在用户选择时再次从数据库中提取数据。 希望这有帮助

答案 3 :(得分:0)

要从数据库获取数据,您必须使用服务器端语言,例如PHP。要对<select>元素中的更改做出反应,您必须使用JavaScript。 AJAX将弥合两种语言之间的差距。

首先编写一些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/

答案 4 :(得分: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按字母顺序排列:

一个大故事 大故事

还有很多其他因素需要考虑,但这是一种解决方法。