Обновить внешний ключ другим полем PHP

У меня есть 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? Обновление должно selectcolaboradores.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 = ?";

Зачем вам вообще нужно обновлять этот идентификатор? Разве ты не можешь просто это оставить? Он уже там, правда?

minitauros 04.12.2018 09:42

Кроме того, возникают ли у вас какие-либо ошибки? Или просто не работает? Если возникают ошибки, укажите их в вопросе :).

minitauros 04.12.2018 09:43

если вы обновляете связанный объект (ativo's), вам не нужно снова устанавливать ID + Name таблицы colaboradores, просто оставьте это.

gries 04.12.2018 09:45

@minitauros Этот идентификатор - это идентификатор пользователя, я хочу обновить это поле, потому что пользователя элемента можно переключить (допустим, Iphone с Майком, Майк (id=1) уходит, а Iphone уходит Джо (id=2))

Carlos Santiago 04.12.2018 09:51

Я больше не получаю ошибок

Carlos Santiago 04.12.2018 09:51

Я обновил вопрос!

Carlos Santiago 04.12.2018 09:53

Вы пробовали выполнить запрос вручную? С вводимыми вручную значениями? Смотрите, что происходит? Может быть, в запросе не ошибка, а вставленные значения.

minitauros 04.12.2018 10:05

Я имею в виду, можно ли получить код update, похожий на код create? Обновление должно выбрать colaboradores.nome для замены id.colaborador (FK) и оставить WHERE id_ativo = ?

Carlos Santiago 05.12.2018 11:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
560
1

Ответы 1

Вам необходимо создать список с помощью PHP (например, раскрывающийся список), содержащий имя в качестве метки и идентификатор в качестве значения. Таким образом, пользователи смогут выбрать в списке имя. Когда выбор сделан, вы должны использовать значение (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

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

Спасибо за вашу помощь, Николас, но у меня будет более 300 пользователей ... У меня не может быть такого раскрывающегося списка: / Я думал об автозаполнении, как о create.php, но по какой-то причине его не будет работать над update.php: / Я думал, могу ли я иметь два предложения WHERE, но idk

Carlos Santiago 04.12.2018 10:10

@CarlosSantiago можно настроить автозаполнение для выбора идентификатора, вам просто нужно правильно его настроить. Мы не знаем, что вы сделали не так, но, возможно, вам стоит отредактировать вопрос, включив это, если теперь это ваша проблема. P.S. Ввод имени напрямую бесполезен, потому что оно не уникально - в конечном итоге у вас появятся два пользователя по имени Майк. Вы можете направить пользователя в Выбрать по имени, но вам нужно отправить на сервер полученный идентификатор.

ADyson 04.12.2018 10:15

Банкомат @CarlosSantiago большая часть выпадающего списка реализована с поиском. Таким образом, если вы введете «Mi», когда раскрывающийся список имеет фокус, список переместится к первому входу, соответствующему «Mi».

Nicolas 04.12.2018 10:28

@Nicolas правда, но он действительно простой (поиск только с начала строки), не удобен для пользователя (функция скрыта и также не показывает вам, что происходит, когда вы печатаете), и большинство людей, вероятно, даже не знают об этом. В любом случае список Plus 300 по-прежнему остается громоздким - он может выпадать из нижней части экрана в зависимости от дизайна страницы. Автозаполнение было бы гораздо более приятным решением.

ADyson 04.12.2018 10:47

Я имею в виду, можно ли получить код update, похожий на код create? Обновление должно выбрать colaboradores.nome для замены id.colaborador (FK) и оставить WHERE id_ativo = ?

Carlos Santiago 05.12.2018 11:18

Другие вопросы по теме