PHP遍历列表并存储在MYSQL数据库中

时间:2019-08-23 12:45:29

标签: php mysql

我是一名自学成才的CS学生,目前正在工作列表网站上工作。我现在正在后端页面上工作,企业所有者将可以在该页面上查看,添加或删除工作。 this is how the back end looks like

每个作业在三个不同的表jobs, keywords, requirements之间分配了9个属性:

  • 职位ID(职位表-主键)
  • 标题(工作表)
  • 类型(职位表)
  • 位置(工作表)
  • 工资(工作表)
  • 说明(职位表)
  • 日期(工作表)
  • 关键字(关键字表,因为每个作业可以有多个关键字)
  • 需求(由于每个作业可以有多个需求,因此是需求表)

现在,我能够提交一个新作业并存储该作业表的所有属性,但是其他两个表存在问题。

我的问题与jobs表不同,用户可以添加多个关键字。因此,我在add-jobs.js中实现了JavaScript函数,以便在用户提交时创建一个新的innerHTLM ul .list-keywords。我需要做的是遍历.list-keywords并接受每个NodeValue项目的li。然后,我将在数据库中创建与rows相同数量的li

由于我只需要做$attribute = $_POST["attribute_name"],所以作业表要容易得多,但是有了列表,我不知道该怎么做

keywords table

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));


?>

1 个答案:

答案 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将数据安全地插入到数据库中(正如注释者已经指出的那样,请从一开始就使用它们,不要在以后添加它们, ,因为这种情况几乎不会发生)。

相关问题