用其他字段更新PHP外键

时间:2018-12-04 08:40:00

标签: php mysql

我有一个php页面,我可以在其中创建,更新并查看一些用户,而在其他页面中可以看到用户的{colaboradores's table)项目(ativos's table),它们与FK链接( id_colaborador
ativos创建页面上,我设法输入所有数据,而无需输入FK itselv(id_colaborador),用户可以输入用户名(colaboradores.nome)。
关键是,我想在UPDATE.PHP页面上做同样的事情,但是我无法弄清楚如何在colaboradores.nome字段上输入id.colaborador (FK)而不是它。
对不起,如果我不能清楚地说明自己。
这是带有$sql查询的create.php变量:

$sql = "INSERT INTO ativos (ativo,comentario,data_aquisicao,localizacao,fabricante,modelo,imei,
            numero_serie,ativo_sap,evento,data_evento,id_colaborador) 
            SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, id_colaborador 
            FROM colaboradores 
            WHERE nome = ?";

这是$sql的变量,其中包含对update.php的查询:

 $sql = "UPDATE ativos  SET ativo = ?, comentario = ?, data_aquisicao = ?, localizacao = ?, fabricante = ?, modelo = ?, imei = ?, 
        numero_serie = ?, ativo_sap = ?, anexo_a = ?, evento = ?, data_evento = ?, id_colaborador = ? WHERE id_ativo = ?";

谢谢您的时间!

更新:
我的意思是,是否有可能使update代码与create代码相似? 更新必须select colaboradores.nome才能替换id.colaborador (FK)并保持WHERE id_ativo = ?类似,我猜...

$sql = "UPDATE ativos  SET ativo = ?, comentario = ?, data_aquisicao = ?, localizacao = ?, fabricante = ?, modelo = ?, imei = ?, 
        numero_serie = ?, ativo_sap = ?, anexo_a = ?, evento = ?, data_evento = ? SELECT id_colaborador FROM colaboradores 
        WHERE nome = ? AND WHERE id_ativo = ?";

1 个答案:

答案 0 :(得分:1)

您需要使用PHP(例如下拉列表)生成一个列表,其中包含名称作为标签,id作为值。 因此,用户将能够在名称列表中进行选择。选择之后,您必须使用值(id)。

<form action="#" method="post">
    <select name="Users">
        <option value="1">Paul</option>
        <option value="2">Pierre</option>
        <option value="5">Marco</option>
        <option value="8">Jean</option>
    </select>
    <input type="submit" name="submit" value="Get Selected Values" />
</form>

然后使用PHP检索ID

<?php
    if(isset($_POST['submit'])){
        $selected_val = $_POST['Users'];  // Storing Selected Value In Variable
        echo "You have selected :" .$selected_val;  // Displaying Selected Value
    }
?>