gpt4 book ai didi

javascript - 使用 JS 和 PHP 将
保存到 MySQL - 可能吗?

转载 作者:行者123 更新时间:2023-11-29 16:23:22 26 4
gpt4 key购买 nike

我有一个 HTML/PHP 插入表单,其中一个条目需要改进。有问题的条目是“成员”。

为此,我有以下代码(归功于 @ Joe Warner ),可以在没有 PHP here 的情况下进行测试

基本上我保存了 <div>到 PHP 变量,然后打印它。它工作得很好。

<?php $msgs = "<div id='output'></div>"
echo $msgs; ?>

这应该是添加的每个成员的一个字符串。

问题是我无法将其他字段推送到MySQL(每个字段在提交时都会推送)。似乎该变量首先被假定为空白,并且仅在 getResults() 之后才被假定为空白。它被填充。

我知道这很困惑,但目前形式无法更改。

有什么建议吗?

const optionsSelect = [{
id: 1,
title: 'Mr'
},
{
id: 2,
title: 'Mrs'
}
];

function getResults() {
const { selects, inputs } = getInputs();

return selects.reduce((acc, select, i) => {
const { title, name } = getValuesFromElements(select, inputs[i]);
msgs = (title && name) ? `${acc} ${title}. ${name}` : acc;
document.getElementById("output").innerHTML = msgs;
return (title && name) ? `${acc} ${title}. ${name}` : acc;
}, '');
}

function getValuesFromElements(select, {value: name}) {
const { title } = optionsSelect[select.value - 1];

return {title, name};
}

function getContainerElements(query) {
return Array.from(document.querySelectorAll(`#container > ${query}`));
}

function getInputs() {
const selects = getContainerElements('select');
const inputs = getContainerElements('input');

return {
selects,
inputs
}
}


function addFields() {
const { value: number } = document.getElementById('member');
const container = document.getElementById('container');

while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}

for (let i = 0; i < number; i++) {
const select = document.createElement('select');
for (let j = 0; j < optionsSelect.length; j++) {
const options = document.createElement('option');
options.value = optionsSelect[j].id;
options.text = optionsSelect[j].title;
select.appendChild(options);
}
container.appendChild(select);
container.appendChild(document.createTextNode(' -> Name ' + (i + 1)));
const input = document.createElement('input');
input.type = 'text';
container.appendChild(input);
container.appendChild(document.createElement('br'));
}
}

<input type="text" id="member" name="member" value="">Number of members: (max. 10)<br />
<a href="#" id="filldetails" onclick="addFields()">Fill Details</a>
<a href="#" onclick="console.log(getResults())">Log results</a>
<div id="container"></div>
<?php $msgs = "<div id='output'></div>"
echo $msgs; ?>

编辑

我尝试添加链接到 PHP 函数的第二个按钮,以便获取 $msgs 的当前值,但仍然不起作用。它通过了 MySQL 插入(“记录更新成功”),但在数据库中仍然只保存空白。

<a href="index.php?msgs=true">Insert into DB</a>

<?php
$msgs = "<div id='asservat'></div>";
echo $msgs;

function insertMsgs() {
$server = 'myserver';
$user = 'myuser';
$pass = 'mypass';
$db = 'mydb';
$conn=mysqli_connect($server, $user, $pass, $db);
if (mysqli_connect_errno()) {
echo ("Connection failed: " . mysqli_connect_error());
}
$sql= "UPDATE mytable SET myfield='$msgs' WHERE member=blabla";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo ("Error updating record: " . mysqli_error($conn));
}
mysqli_close($conn);
}

if (isset($_GET['msgs'])) {
insertMsgs();
}

最佳答案

我使用以下代码进行管理:

get_names.html

<head>
<script src="jquery-3.3.1.min.js"></script>
</head>
<script type='text/javascript'>
const optionsSelect = [{
id: 1,
title: 'Mr'
},
{
id: 2,
title: 'Mrs'
}
];
function getResults() {
const { selects, inputs } = getInputs();

return selects.reduce((acc, select, i) => {
const { title, name } = getValuesFromElements(select,
inputs[i]);
msg = (title && name) ? `${acc} ${title}. ${name}` : acc;
document.getElementById("asservat").innerHTML = msg;
var msgs = msg;
//return (title && name) ? `${acc} ${title}. ${name}` : acc;
return msgs;
}, '');
}

function getResultsAsArray() {
const { selects, inputs } = getInputs();

const getFieldValues = (select, i) => {
const { title, name } = getValuesFromElements(select,
inputs[i]);

return (title && name) ? `${title}. ${name}` : '';
};

return selects.map(getFieldValues).filter(Boolean);
}

function getValuesFromElements(select, {value: name}) {
const { title } = optionsSelect[select.value - 1];

return {title, name};
}

function getContainerElements(query) {
return Array.from(document.querySelectorAll(`#container >
${query}`));
}

function getInputs() {
const selects = getContainerElements('select');
const inputs = getContainerElements('input');

return {
selects,
inputs
}
}
function addFields() {
const { value: number } = document.getElementById('member');
const container = document.getElementById('container');

while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}

for (let i = 0; i < number; i++) {
const select = document.createElement('select');
for (let j = 0; j < optionsSelect.length; j++) {
const options = document.createElement('option');
options.value = optionsSelect[j].id;
options.text = optionsSelect[j].title;
select.appendChild(options);
}
container.appendChild(select);
container.appendChild(document.createTextNode(' -> Name ' + (i + 1)));
const input = document.createElement('input');
input.type = 'text';
container.appendChild(input);
container.appendChild(document.createElement('br'));
}
}

</script>

<input type="text" id="member" name="member" value="">Number of members: (max. 10)<br />
<a href="#" id="filldetails" onclick="addFields()">Fill Details</a>
<a href="#" onclick="console.log(getResults())">Log results</a>
<p id="container"></p>
<div id="asservat"></div>
<input type="button" value="Submit" onclick="post();">ajax<br />
<script type="text/javascript">
function post(){
var name = getResults();
$.post('return_names.php',{postname:name},
function(data){
$('#name').html(data);
});
return $('#name').html(data);
}
</script>

return_names.php

    <?php
function data() {
$name = $_POST['postname'];
echo "Name as string ->", $name, " <- here";
return $name;
}
data();
?>

关于javascript - 使用 JS 和 PHP 将 <div> 保存到 MySQL - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54407982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com