Это изображение показывает структуру моей базы данных, но попробовав вводить реестр в консультациях, я не знаю, как связывать это с таблицей historial
.
Я объясняю структуру, Empresa
сохраняй имена, поля какого-то предприятия, Web
сохраняй данные какого-то пользователя какого-то предприятия, historial
сохраняй данные о начале и завершение сеанса, consultas
все то, что происходит в этом сеансе. Когда пользователь консультирует какой-то продукт, это должно сохранять в таблице consultas
согласно id
historial
, в сеансе пользователь может делать много консультаций, идея состоит в том, чтобы присоединять с сеансом консультации, но я не нахожу query, который это делает.
Ты можешь делать insert и внутри субконсультация, которую тебе получал бы id, ты консультируешься в вопросе.
INSERT INTO
Consultas (id_historial, n...)
VALUES
( (SELECT id_historial
FROM Historial AS H JOIN Web AS W
ON H.id_web = W.id_web WHERE W.nombre_usuario = $_SESSION['nombre-usuario'] ))
Ты добавляешь синтаксис, согласно которому ты использовал.
Логика:
Хорошие, ты мог бы делать следующее, если ты хочешь поддержать строгий контроль, мог помещать, как пойдите Веб IP клиента (
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
);
Исторический id мог бы быть числом autoincrementable просто, таким образом знал, что ты сделал консультации в том же сеансе, так как все группировались бы в том же самом, пойдите autoincrementable...
Потом начало и завершение сеанс они были бы объектом Восходите, с одним new Date();
в подходящем мгновении это было бы достаточным.
Надеешься быть ты помогший :D!
Ok отвечая на твой комментарий ты должен создавать один пойдите пользователя, который будет единственным для каждого пользователя! Таким образом ты убеждаешься, что, хотя они присоединятся одновременно они принадлежат различным реестрам :)
пойдите пользователя он появится в Вебе и будет основной forana в биографии и консультациях.
Сначала ты должен иметь в виду, что в loguearse в системе ты будешь должен создавать переменные сеанса для id_web
и id_historial
, поле inicioSession
он создается с настоящим часом и датой, cierreSession
сначала он будет введен как один NULL
. Сейчас эти данные вводятся в таблице Historial
.
Хорошо, сейчас всякий раз когда пользователь сделал консультацию ты будешь использовать параметр сеанса id_historial
, поле id_consultas
это должен будет быть автомобиль incrementable относительно id_historial
(а именно, это должен быть составной ключ) и позже также ты пошлешь остальные поля, которые соответствуют таблице Consultas
для того, чтобы ты INSERT
в базе данных останьтесь следующей формы понимая, что ты реализуешь INSERT
через один Stored Procedure
CREATE PROCEDURE InsertaConsultas
@inIdHistorial INT
,@vcPlacaConsultada VARCHAR(256)
,@dtHoraConsultada DATETIME
,@btExportarPDF BIT
,@dtHoraExportacion DATETIME
AS
BEGIN
DECLARE @inIdConsultas INT
SET @inIdConsultas = 0
SELECT @inIdConsultas = ISNULL(id_consultas, 0) + 1 FROM consultas
WHERE id_historial = @inIdHistorial
INSERT INTO [consultas]
([id_consultas]
,[id_historial]
,[PlacaConsultada]
,[HoraConsultada]
,[ExportarPDF]
,[HoraExportacion])
VALUES
(@inIdConsultas
,@inIdHistorial
,@vcPlacaConsultada
,@dtHoraConsultada
,@btExportarPDF
,@dtHoraExportacion)
END
В конце концов, ты будешь должен манипулировать завершением сеанса и посылать один UPDATE
для того, чтобы с настоящей датой и часом стало отвечающим совремнным требованиям поле cierreSession
и смоги иметь полную информацию в таблице Historial
Ты был бы должен добавлять, что поле id_web в таблице ты 'консультируешься'. Как он, если 2 ó больше пользователей инициализируют сеанс в то же время, как ты показываешь в одном из твоих комментариев, у тебя не было бы способа знать, кому принадлежит она (s) консультация (s) реализованная (s) в этом сеансе. sakulino он это объясняет в конце Вашего ответа.