简体   繁体   English

如何保存来自不同 MYSQL 表的数据?

[英]How to save data coming from a different MYSQL table?

Good day, I have a form to add new registers to a table called "viajes", below, both tables:美好的一天,我有一个表格可以将新寄存器添加到名为“viajes”的表中,下面是两个表:

A picture of my tables https://i.stack.imgur.com/nUHgJ.png我的桌子的图片https://i.stack.imgur.com/nUHgJ.png

agregar-viaje.php agregar-viaje.php

<!doctype html>
<?php

include('libreria/motor.php');
require ('connection.php');
require ('libreria/verificar-usuario.php');
$est=viajes::mostrar();
$viajes=new viajes();
if($_POST){
$viajes->NROVIAJE=$_POST['NROVIAJE'];
$viajes->IMO=$_POST['IMO'];

$querybuqueimo="select NOMBRE from buques as elbuque where IMO='".$_POST['IMO']."'";
$relabuqueimo=mysql_query($querybuqueimo);
$buquedeimox=mysql_fetch_assoc($relabuqueimo);
$buquedeimo=$buquedeimox["elbuque"];

$viajes->BUQUE=$buquedeimo;
$viajes->PTOPROCEDENCIA=$_POST['PTOPROCEDENCIA'];
$viajes->PAISPROCEDENCIA=$_POST['PAISPROCEDENCIA'];
$viajes->PTODESTINO=$_POST['PTODESTINO'];
$viajes->PAISDESTINO=$_POST['PAISDESTINO'];
$viajes->OPERACION=$_POST['OPERACION'];
$viajes->CARGA=$_POST['CARGA'];
$viajes->CANTIDAD=$_POST['CANTIDAD'];
$viajes->CHARTER=$_POST['CHARTER'];
$viajes->guardar();
    }
$result = mysql_query("SELECT NOMBRE, IMO FROM buques ORDER BY NOMBRE ASC");
$opcion=' ';
while($row=mysql_fetch_assoc($result)){
    $opcion .= '<option value = "'.$row['IMO'].'">'.$row['NOMBRE'].' - IMO: '.$row['IMO'].'</option>';
}
$resultch = mysql_query("SELECT NOMBRECOMPANIA FROM clientes ORDER BY NOMBRECOMPANIA ASC");
$opcionch=' ';
while($row=mysql_fetch_assoc($resultch)){
    $opcionch .= '<option value = "'.$row['NOMBRECOMPANIA'].'">'.$row['NOMBRECOMPANIA'].'</option>';
}
$maxnroviaje=mysql_query("SELECT MAX(NROVIAJE) as maximo from viajes");
$nroviajenew=mysql_fetch_assoc($maxnroviaje);
$nroviajex=$nroviajenew["maximo"];
$nroviajex++;

?>
<html>
<head>
<meta charset="utf-8">
<title>Agregar Viaje</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" media="screen">
</head>

<body>
<div class="form-group">
<form id="form1" name="form1" method="post">
  <p>
    <label for="NROVIAJE">Número de Viaje:</label>
    <input name="NROVIAJE" type="number" id="NROVIAJE" autocomplete="off" class="form-control" readonly value="<?php echo $nroviajex; ?>">
  </p>
  <p>
    <label for="IMO">Buque:</label>
    <select name="IMO" required id="IMO" class="form-control">
    <option value=" "> Seleccione el buque </option>
    <?php echo $opcion; ?>
    </select>
  </p>
  <p>
    <label for="PTOPROCEDENCIA">Puerto de Procedencia:</label>
    <select name="PTOPROCEDENCIA" id="PTOPROCEDENCIA" class="form-control">
    <option value=" "> Seleccione un puerto de procedencia </option>
        <option value=" Aachen  "> Aachen </option>
        <option value=" Aalesund    "> Aalesund </option>
        <option value=" Aarhus  "> Aarhus </option>
        bla bla bla
    </select>
  </p>
  <p>
    <label for="PAISPROCEDENCIA">País de Procedencia:</label>     
    <select required name="PAISPROCEDENCIA" class="form-control">
      <option value="   ">Seleccione un país de procedencia </option>
        <option value=" Afganistán  "> Afganistán </option>
        <option value=" Akrotiri    "> Akrotiri </option>
        <option value=" Albania "> Albania </option>
        bla bla bla
      </select>
  </p>
  <p>
    <label for="PTODESTINO">Puerto de Destino:</label>
    <select name="PTODESTINO" required class="form-control" id="PTODESTINO">
    <option value=" "> Seleccione un puerto de destino </option>
        <option value=" Aachen  "> Aachen </option>
        <option value=" Aalesund    "> Aalesund </option>
        <option value=" Aarhus  "> Aarhus </option>
        bla bla bla
    </select>
  </p>
  <p>
    <label for="PAISDESTINO">País de Destino:</label>      
    <select required name="PAISDESTINO" class="form-control">
      <option value="   ">Seleccione un país de destino</option>
        <option value=" Afganistán  "> Afganistán </option>
        <option value=" Akrotiri    "> Akrotiri </option>
        <option value=" Albania "> Albania </option>
        bla bla bla
      </select>
  </p>
  <p>
    <label>Tipo de Operación:</label>
    <br>
    <label class="radio-inline">
      <input type="radio" name="OPERACION" value="CARGA" id="OPERACION_0" required>
      Carga</label>
    <label class="radio-inline">
      <input type="radio" name="OPERACION" value="DESCARGA" id="OPERACION_1">
      Descarga</label>
  </p>
  <p>
    <label for="CARGA">Cargamento:</label>
    <select name="CARGA" required id="CARGA" class="form-control">
    <option value=" ">  Seleccione el cargamento     </option>
    <option value=" 150N    ">  150N     </option>
<option value=" 150N/CHEVRONTEXACO  ">  150N/CHEVRONTEXACO   </option>
<option value=" 150N/SHELL  ">  150N/SHELL   </option>
bla bla bla

    </select>
  </p>
  <p>
    <label for="CANTIDAD">Cantidad (BBLS):</label>
    <input name="CANTIDAD" type="number" required id="CANTIDAD" min="1" class="form-control">
  </p>
  <p>
    <label for="CHARTER">Charter (Cliente):</label>
    <select name="CHARTER" required id="CHARTER" class="form-control">
    <option value=" "> Seleccione el charter (cliente) </option>
    <?php echo $opcionch; ?>
    </select>
  </p>
  <p>
    <input name="Enviar" id="Enviar" value="Enviar" type="submit" class="btn btn-default">
  </p>
</form>
</div>
</body>
</html>

This is the code of my form and I have managed to shoe a list of every vessel and her IMO in "Select IMO", however, I'm trying to find a way to, when pressing the submit button, both IMO and its related buque get saved in the viajes table, without having to add "buque" in any way in the form.这是我的表格代码,我设法在“选择 IMO”中列出了每艘船和她的 IMO,但是,我试图找到一种方法,在按下提交按钮时,IMO 及其相关buque 保存在 viajes 表中,而无需在表单中以任何方式添加“buque”。

The way I'm doing things, a new register is being created in the "viajes" table with the rest of the data, but "buque" field remains blank and I get the following PHP error: Notice: Undefined index: elbuque in C:\\xampp\\htdocs\\agente-nav-online\\agregar-viaje.php on line 16我做事的方式是,在“viajes”表中创建了一个新的寄存器,其中包含其余数据,但“buque”字段保持空白,我收到以下 PHP 错误:注意:未定义索引:C 中的 elbuque :\\xampp\\htdocs\\agente-nav-online\\agregar-viaje.php 第 16 行

Many thanks beforehand four your help.非常感谢四位朋友的帮助。

Based on the following error_log line:基于以下error_log行:

PHP Notice: Undefined index: elbuque in C:\\xampp\\htdocs\\agente-nav-online\\agregar-viaje.php on line 16 PHP 注意:未定义索引:elbuque in C:\\xampp\\htdocs\\agente-nav-online\\agregar-viaje.php 第 16 行

And this part of the code:而这部分代码:

/* 13 */ $querybuqueimo = "select NOMBRE from buques as elbuque where IMO='".$_POST['IMO']."'";
/* 14 */ $relabuqueimo = mysql_query($querybuqueimo);
/* 15 */ $buquedeimox = mysql_fetch_assoc($relabuqueimo);
/* 16 */ $buquedeimo = $buquedeimox["elbuque"];

The notice occurs on line 16, indicating that the index elbuque is nonexistent in the $buquedeimox array.通知出现在第 16 行,表明$buquedeimox数组中不存在索引elbuque

As we can see on line 13, the SQL syntax is wrong, where the following:正如我们在第 13 行看到的,SQL 语法是错误的,其中如下:

select NOMBRE from buques as elbuque where IMO='".$_POST['IMO']."'

Should actually be:实际上应该是:

select `NOMBRE` as `elbuque` from `buques` where `IMO`='".$_POST['IMO']."'

Further comments进一步评论

Do not use mysqli_* functions since these are deprecated and insecure.不要使用mysqli_*因为这些过时和不安全的功能。 Use MySQLi or PDO with parameterized statements instead.改用带有参数化语句的 MySQLi 或 PDO。 This will also prevent SQL injections.这也将防止 SQL 注入。

Stick to object-oriented style or procedural style, but don't mix them unless entirely necessary.坚持面向对象风格或过程风格,但除非完全必要,否则不要混合使用。 I personally suggest object-oriented style, this paradigm improves your code's readability, efficiency, efficacy, modularity, and ultimately makes your application more maintainable.我个人推荐面向对象的风格,这种范式提高了你代码的可读性、效率、功效、模块化,最终让你的应用程序更易于维护。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM