1

我一直在 stackoverflow 上阅读很多问题,这些问题让我的生活更轻松,尽管我第一次问一些问题。

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

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

由于我的英语很差,这是一个难以表达的简单想法......

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 表:新闻(字段 id、正文、标题、作者、时间戳)

我希望能够从我的 <select> 中选择新闻,获取他们的“id”/“option value”,然后从 DB 中获取正确的值,并将其显示在相应的 <textarea> 中。

我是网站编码的新手,只是作为一种爱好来做,所以我在 PHP、MySQL 方面的知识非常基础。我不提供任何 PHP 代码或选项,只是因为我不知道如何解决它……虽然我可以理解 sql、php 语法。

我想使用 <select> 事件 '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

好吧,我在午餐前给你一个快速的想法...... :)

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

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

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

发送 AJAX 请求

于 2012-08-10T19:40:05.843 回答
0

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

于 2012-08-10T19:41:04.127 回答
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/

于 2012-08-10T19:50:09.600 回答
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,按字母顺序排列的标题:

一个大故事 一个大故事

ETC

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

于 2012-08-10T20:18:17.580 回答