我是一名自学成才的CS学生,目前正在工作列表网站上工作。我现在正在后端页面上工作,企业所有者将可以在该页面上查看,添加或删除工作。 this is how the back end looks like。
每个作业在三个不同的表jobs, keywords, requirements
之间分配了9个属性:
现在,我能够提交一个新作业并存储该作业表的所有属性,但是其他两个表存在问题。
我的问题与jobs
表不同,用户可以添加多个关键字。因此,我在add-jobs.js
中实现了JavaScript函数,以便在用户提交时创建一个新的innerHTLM ul .list-keywords
。我需要做的是遍历.list-keywords
并接受每个NodeValue
项目的li
。然后,我将在数据库中创建与rows
相同数量的li
。
由于我只需要做$attribute = $_POST["attribute_name"]
,所以作业表要容易得多,但是有了列表,我不知道该怎么做
Add-jobs.js
const keywords = document.querySelector(".keywords");
const addKeyword = document.querySelector(".add-keyword");
const listKeywords = document.querySelector(".list-keywords");
const generateTemplate = (word, location) => {
const html = `
<li><span>${word}</span>
<i class="far fa-times-circle delete"></i>
</li> `;
location.innerHTML += html;
};
addKeyword.addEventListener("click", (e)=>{
e.preventDefault();
const word = keywords.value.trim();
console.log(word);
keywords.value = "";
generateTemplate(word, listKeywords);
});
listKeywords.addEventListener("click", e =>{
if(e.target.classList.contains("delete")){
e.target.parentElement.remove();
};
});
Add-jobs.php
</p>
<div class="add">
<label for="keywords">Keywords : </label>
<input type="text" class="keywords" name="keywords" value=""/>
<button class="add-keyword">Add</button>
</div>
<ul class="list-keywords">
</ul>
<p>
Add-databse.php
<?php
require("config/db.php");
require("add-jobs.php");
$link = mysqli_connect("localhost","root","","benoit");
$title = $_POST["position"];
$type = $_POST["job-type"];
$location = $_POST["location"];
$salary = $_POST["salary"];
$description = $_POST["description"];
$date = $publisheddate;
mysqli_query($link,"INSERT INTO jobs (`title`, `type`, `location`, `salary`, `description`, `date`)
VALUES ('$title', '$type', '$location', '$salary', '$description', CURDATE())")
or die(mysqli_error($link));
?>
答案 0 :(得分:0)
将关键字输入更改为
<input type="text" class="keywords" name="keywords[]" value=""/>
(请注意[]
属性后的name
)
PHP将所有添加的关键字作为数组放入$_POST['keywords']
中。现在,您可以遍历数组并逐个插入每个关键字:
$jobId = ... // <- get last insert id here for job id
foreach($_POST['keywords'] as $keyword) {
// insert each $keyword and $jobId relation into db separately
}
当然,您应该使用React environment file not wokiing将数据安全地插入到数据库中(正如注释者已经指出的那样,请从一开始就使用它们,不要在以后添加它们, ,因为这种情况几乎不会发生)。