我一直在阅读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,可能是因为缺乏有用的示例!!
希望有人理解并提供解决方案!
非常感谢提前!
答案 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)
好吧我会在午餐前给你一个简单的想法...... :)
设置AJAX请求以将选定的下拉框值传递给PHP脚本。
在此PHP脚本中,从数据库中获取所选值的数据。
返回数据并将文本框的值设置为该值。
答案 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按字母顺序排列:
一个大故事 大故事
等
还有很多其他因素需要考虑,但这是一种解决方法。