用其他字段PHP更新外键

问题描述 投票:-1回答:1

我有一个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 var以及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 var与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 = ?";
php mysql
1个回答
1
投票

您需要生成一个包含PHP的列表(例如下拉列表),其中包含name作为标签,id作为value。因此用户可以在名单列表中进行选择。选择后,您必须使用值(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
    }
?>
© www.soinside.com 2019 - 2024. All rights reserved.