Javascript 在不刷新页面的情况下更新SQL数据
我试图用从数据库中获取的信息更新两个锁定的文本框。我在“Telefon”复选框中输入一个电话号码,我希望它能得到该电话号码的名字和姓氏。顺便说一句,这很有效,但不是我想要的方式。我希望信息自动放入文本框而不刷新页面。由于某种奇怪的原因,我的代码被一分为二。几个小时来我一直在寻找解决办法。我对编码非常陌生,我希望能得到一些帮助Javascript 在不刷新页面的情况下更新SQL数据,javascript,php,html,Javascript,Php,Html,我试图用从数据库中获取的信息更新两个锁定的文本框。我在“Telefon”复选框中输入一个电话号码,我希望它能得到该电话号码的名字和姓氏。顺便说一句,这很有效,但不是我想要的方式。我希望信息自动放入文本框而不刷新页面。由于某种奇怪的原因,我的代码被一分为二。几个小时来我一直在寻找解决办法。我对编码非常陌生,我希望能得到一些帮助 <?php SESSION_START(); $output = NULL; if(isset($_POST['btn_checkTelefon'])) {
<?php
SESSION_START();
$output = NULL;
if(isset($_POST['btn_checkTelefon'])) {
require 'connectdb.php';
$telefon_Search = $connect_DB->real_escape_string($_POST['telefon_Search']);
$sql = "SELECT * FROM elever WHERE Telefon = '$telefon_Search'";
$resultSet = $connect_DB->query($sql);
if($resultSet->num_rows > 0) {
while($rows = $resultSet->fetch_assoc()) {
$fornavnoutput_Database = $rows['Fornavn'];
$etternavnoutput_Database = $rows['Etternavn'];
}
echo '<script type = "text/javascript">';
echo 'function sayHi() {';
echo 'val1 = document.getElementById("telefon_Input").value;';
echo 'if(val1 == "") {';
echo ' alert("Vennligst skriv inn ditt telefon nummer!");';
echo '}';
echo 'if(val1 !== "") { ';
echo ' document.getElementById("check_Fornavn").value = "<?php echo $fornavnoutput_Database?>";';
echo ' document.getElementById("check_Etternavn").value = "<?php echo $etternavnoutput_Database?>";';
echo '}';
echo '}';
echo '</script>';
} else {
$output = "No results";
}
}
$fornavnoutput_Database2 = "Fornavn";
$etternavnoutput_Database2 = "Etternavn";
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style2.css?<?php echo time(); ?>" />
</script>
<script type = "text/javascript"></script>
<title></title>
</head>
<body>
<?php
include 'connectdb.php';
?>
<form name="form1" action="">
<table id="valgt_skap_tabell" class="bokssvartabell">
<tr>
<td>Valgt skap</td>
</tr>
<tr>
<td>
<input class="bokssvarskjema" type="text" name="Valgt skap" disabled value= <?php
if(isset($_POST["radios"])){
echo $_POST["radios"];
} else {
//header('location: index.php');
} ?>>
</td>
</tr>
</table>
<table id="telefon_tabell" class="bokssvar_tabell">
<tr>
<td>Telefon:</td>
</tr>
<tr>
<td><input type="text" name="telefon_Search" id="telefon_Input" maxlength=8"><br></td>
</tr>
<tr>
<td><button type="button" name ="btn_checkTelefon" id="sjekkTelefon" onclick = "sayHi()">Sjekk</button></td>
</tr>
<div id="d1"></div>
</table>
<table id="opplysninger_tabell" class="bokssvartabell">
<tr>
<td>Fornavn:</td>
<td>Etternavn:</td>
</tr>
<tr>
<td><input type="text" name="Fornavn" disabled id="check_Fornavn"></td>
<td><input type="text" name="Etternavn" disabled id="check_Etternavn"></td>
</tr>
</table>
</form>
<?php echo $output; ?>
</body>
瓦尔格特斯卡普
为此,您需要使用AJAX。示例$.ajax()
->快捷方式$.post()
,$(“id”)。加载(“url”)
。。。在stackoverflow上查找关于这些的详细说明
请不要将JavaScript与php混合使用。
在单独的文件中使用它
编辑:你修好了吗?
加载分页动态的更简单方法是加载方法+操作。$。如果需要处理从php返回的数据,可以使用post。我将给你举一个负载的例子
我将给出一个正确的例子如何编码
通用函数用于查看href值并将HTML部分(本例中为表单)从PHP DynamicCaly加载到页面的链接,如果只有一个默认操作,则确实需要实现操作或调用普通页面。我在这里使用jQuery库。此脚本必须位于单独的文件中,否则它将正常工作,但您将在控制台中收到同步警告
$(function() {
$('a').on("click", function(e) {
e.preventDefault();
e.stopPropagation();
var URL = $(this).attr('href');
$('body').load(URL, 'form');
})
})
php示例
首选在单独的文件(如showfunctions.php)中使用showsomethingfunction
function myLinks() {
echo "<a href='index.php?action=showsomething'>showsomething</a>"
}
<?php
myLinks();
if(isset($_GET["action"]){
// do your ordinary thing like open connection with database.
switch($_GET["action"]))
{
case "showsomething":
//show showsomething() function with html
break;
//further you can add more action instead of showsomething if you have several links
}
//close database.
}
?>
函数myLinks(){
回声“”
}
index.php+包含的showfunctions.php
function myLinks() {
echo "<a href='index.php?action=showsomething'>showsomething</a>"
}
<?php
myLinks();
if(isset($_GET["action"]){
// do your ordinary thing like open connection with database.
switch($_GET["action"]))
{
case "showsomething":
//show showsomething() function with html
break;
//further you can add more action instead of showsomething if you have several links
}
//close database.
}
?>
你需要分离你的代码,否则如果它变得更复杂,就会一团糟。HTML代码必须仅在showfunctions.php中,例如在调用操作的函数中
代码没有经过测试,但我认为它会起作用。这段代码在没有javascript的情况下也可以工作,但是它只会重新加载页面。为此,您必须使用jQuery$.post()
首先,您必须创建php文件来处理您的数据
例如,让我们使用以下内容创建文件query.php
:
<?php
if(isset($_POST['telefon_Search'])) {
require 'connectdb.php';
$telefon_Search = $connect_DB->real_escape_string($_POST['telefon_Search']);
$sql = "SELECT * FROM elever WHERE Telefon = '$telefon_Search'";
$resultSet = $connect_DB->query($sql);
if($resultSet->num_rows > 0) {
$row = $resultSet->fetch_assoc();
echo json_encode($row);
}
}
完整的html将如下所示:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style2.css?<?php echo time(); ?>" />
<title></title>
</head>
<body>
<table id="telefon_tabell" class="bokssvar_tabell">
<tr>
<td>Telefon:</td>
</tr>
<tr>
<td><input type="text" name="telefon_Search" id="telefon_Input" maxlength=8"><br></td>
</tr>
<tr>
<td><button name ="btn_checkTelefon" id="sjekkTelefon">Sjekk</button></td>
</tr>
<div id="d1"></div>
</table>
<table id="opplysninger_tabell" class="bokssvartabell">
<tr>
<td>Fornavn:</td>
<td>Etternavn:</td>
</tr>
<tr>
<td><input type="text" name="Fornavn" disabled id="check_Fornavn"></td>
<td><input type="text" name="Etternavn" disabled id="check_Etternavn"></td>
</tr>
</table>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$('#sjekkTelefon').click(function (){
$.post('query.php', { telefon_Search : $('#telefon_Input').val() }, function (data){
$('#check_Fornavn').val(data.Fornavn);
$('#check_Etternavn').val(data.Etternavn);
});
});
</script>
</body>
</html>
你必须使用jQuery$.post()
函数你必须使用ajax来实现这一点..可能重复使用ajax获取值。好吧,我相信我必须使用jQuery,但我不知道如何在我的代码中实现这一点。有人能帮我吗?为了便于理解,最好使用我使用的名称。我是否必须删除代码中的所有回音javascript?或者我可以保持一切原样,只添加AJAX吗?@Nniouz您需要使用json_encode才能将数据发送到javascript。或者你可以直接使用load而不是post,然后留下它是怎样的一秒钟,我将尝试为PHP创建通用函数。你有时间查看我的代码并编辑它,以便我更容易理解吗?因为我真的不知道在这里该做什么。我已经被困了好几天了,哈哈,把它留给ZeJur吧:P如果($_GET[“index.php?action”])在代码中对这样的特定代码片段有操作,你可以使用load而不是post。它必须是按钮类型,而不是submit。否则我的其他元素就不起作用了。不管怎样,我该把这个密码放在哪里?对不起,我绝对没有希望了。。我应该把这些放在哪里?如果可能的话,你能使用和我一样的格式和名称吗?谢谢你的努力,但我不知道把这些放在哪里。如果你愿意,我可以存档我所有的文件,并发布一个链接?在10分钟内,我会给你完整的解决方案。抱歉,迟了答复。但是你测试过这个吗?它对你有用吗?我不能让它工作。我没有收到任何错误,但当我点击按钮时,绝对没有任何事情发生。我已经把代码读了好几遍,但我似乎不明白哪里出了问题。