如何将ID添加到另一个表?

时间:2017-09-08 06:24:27

标签: php mysql

我是新来的,不是很方便PHP和MySql。虽然我设法得到了一些工作(在一些朋友的帮助下;-)并且它可能有点凌乱),但我现在已经陷入困境。

这就是情况; 我有三张桌子; 参与者,项目和面试。

参与者表格在访谈开始时填写了我面试的人员的详细信息。

项目表由我在访谈中使用的一组主题组成。

在面试中,面试表将填满数据。

我的工作是,我让系统在一组复选框旁边的弹出页面中显示项目,文本字段和选择框。 输入表单字段的数据将添加到访谈表中。

我仍然需要将参与者的ID以及项目和项目ID添加到面试表中。有人可以帮助我吗?

这是弹出页面调用的代码;

 <div class="communication">
        <a href="popups/DeveloperCommunication.php" onclick="window.open('popups/DeveloperCommunication.php','communication', 'width=800,height=350,scrollbars=no,toolbar=no,location=no'); return false">          
        <?php
        // get the records from the database
        if ($result = $conn->query('SELECT Categories FROM categories WHERE ID="2"'))
        {
        // display records if there are records to display
        if ($result->num_rows > 0)
        {

        while ($row = $result->fetch_object())
        {
        // set up a row for each record
        echo $row->Categories;
        }
        }
        // if there are no records in the database, display an alert message
        else
        {
        echo "No results to display!";
        }
        }
        // show an error if there is an issue with the database query
        else
        {
        echo "Error: " . $conn->error;
        }
        ?>
        </a></a>
    </div>

这是弹出页面的代码;

<?php
    include '../../include/dbh.inc.php';
    date_default_timezone_set('Europe/Amsterdam');
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Developer Communication</title>
<link href="../../css/chapterDeveloper.css" rel="stylesheet" type="text/css" media="screen">
</head>

<body>
<div class="popupTitle">
    <p>Developer Communication</p>
</div>

<?php 

    $comment = "";

// connect to the database  
$result = $conn->query('SELECT participant.ID, items.items, participant.yes, Participant.no, Participant.question, Participant.comment 
FROM participant 
RIGHT JOIN items ON participant.itemID=items.ID
WHERE items.role="DE" AND items.categorie="Communication"
ORDER BY items.items')

?> 

<form method="post" action="../../include/func.participant.inc.php" onsubmit="refreshAndClose()"> 

<table>
    <tr>
        <!--<th></th>--><th>Items</th><th>Y</th><th>N</th><th>?</th><th>Comment</th><th>levels</th>
         <?php 
         while ($row = mysqli_fetch_assoc($result)) {?>
    </tr>
    <tr>
         <td>
                <?php echo $row['items'] ?>
         </td>
         <td>
                <input name="items[<?php echo $row['ID']; ?>][yes]" type="checkbox" value="yes" <?php if ($row['yes'] == "yes") echo "checked"; ?>/>
         </td>
         <td>
                <input name="items[<?php echo $row['ID']; ?>][no]" type="checkbox" value="no" <?php if ($row['no'] == "yes") echo "checked"; ?>/>
        </td>
         <td>
                <input name="items[<?php echo $row['ID']; ?>][question]" type="checkbox" value="question" <?php if ($row['question'] == "yes") echo "checked"; ?>/>
        </td>
         <td>
                <textarea name="items[<?php echo $row['ID']; ?>][comment]" rows="1" cols="25" placeholder="comment"><?php echo $comment;?></textarea>
        </td>       
         <td>
            <select name="items[<?php echo $row['ID']; ?>][level]">
                <option value="">Select...</option>
                <option value="1">1. Starter</option>
                <option value="2">2. Junior</option>
                <option value="3">3. Intermediate</option>
                <option value="4">4. Senior</option>
                <option value="5">5. Expert</option>
                <option value="6">6. Un Known</option>
                <option value="7">7. Future</option>
                <option value="8">8. Not relefant</option>
            </select>
        </td>
    </tr>
        <?php } ?>
</table>
<input type="submit" name="submit" value="Submit">  

</form>

<?php 
function refreshAndClose() {
            window.opener.location.reload(true);
            window.close();
} ?> 
</body>
</html>

这是弹出页面中使用的功能;

<?php include 'dbh.inc.php'; ?>

<?php

var_dump($_POST); //met $_POST wordt de array met de verschillende items getoond

/*
 * Je lust nu door deze array met items, en ieder item sla je op in de database obv de id
 */
foreach($_POST['items'] as $item) {
    $query = "INSERT INTO interview (participantID, itemID, item, role, yes, no, question, comment, level)
              VALUES ('DE', '11', '12', '13', '".mysqli_real_escape_string($conn, $item['yes'])."', 
                      '".mysqli_real_escape_string($conn, $item['no'])."',
                      '".mysqli_real_escape_string($conn, $item['question'])."',
                      '".mysqli_real_escape_string($conn, $item['comment'])."',
                      '".mysqli_real_escape_string($conn, $item['level'])."', 
              )";
    mysqli_query($conn, $query);

    echo "<br>Record toegevoegd! ($query)<hr>";
}
#

职位11需要是参与者ID,职位12需要是项目ID,职位13需要是自己的项目。

我希望有人可以帮助我。

格尔茨。

2 个答案:

答案 0 :(得分:0)

FWIW,我发现这更易于阅读和理解,但是查看这些表的CREATE和INSERT语句以及期望的结果会很有用。

SELECT p.ID
     , i.items
     , p.yes
     , p.no
     , p.question
     , p.comment
  FROM items i
  LEFT
  JOIN participant p
     ON p.itemID = i.ID
 WHERE i.role = "DE" 
   AND i.categorie = "Communication"
 ORDER 
    BY i.items

顺便说一句,同时具有yes和no列是奇数

答案 1 :(得分:-1)

感谢您帮助我!

这读起来确实比较容易,虽然我不习惯别名喷射......

为我正在使用的三个表创建语句;

CREATE TABLE `participants` (
  `ID` int(11) NOT NULL,
  `first_name` text NOT NULL,
  `insertion` text NOT NULL,
  `last_name` text NOT NULL,
  `position` text NOT NULL,
  `email` text NOT NULL,
  `datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `role` varchar(2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `items` (
  `ID` int(3) NOT NULL,
  `items` varchar(75) DEFAULT NULL,
  `categorie` varchar(16) DEFAULT NULL,
  `role` varchar(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `interview` (
  `ID` int(11) NOT NULL,
  `participantID` int(11) NOT NULL,
  `ItemID` int(11) NOT NULL,
  `item` varchar(255) NOT NULL,
  `Categorie` varchar(255) NOT NULL,
  `role` varchar(2) NOT NULL,
  `yes` varchar(1) NOT NULL,
  `no` varchar(1) NOT NULL,
  `question` varchar(1) NOT NULL,
  `comment` text NOT NULL,
  `level` int(11) NOT NULL,
  `datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

插入语句已经在所提供的函数中。

参与者的插入声明是;

<?php include 'dbh.inc.php'; ?>

<?php

// create a variable
$first_name=$_POST['first_name'];
$insertion=$_POST['insertion'];
$last_name=$_POST['last_name'];
$position=$_POST['position'];
$role=$_POST['role'];
$email=$_POST['email'];

//Execute the query


mysqli_query($conn,"INSERT INTO participant (first_name, insertion, last_name,position,email,role) VALUES ('$first_name','$insertion','$last_name','$position','$email','$role')");

    if(mysqli_affected_rows($conn) > 0){
    echo "<p>Participant Added</p>";
    echo "<a href='../indexnl.php'>Select role to scan</a>";
} else {
    echo "Participant NOT Added<br />";
    echo mysqli_error ($conn);
}