繁体   English   中英

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

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

美好的一天,我有一个表格可以将新寄存器添加到名为“viajes”的表中,下面是两个表:

我的桌子的图片https://i.stack.imgur.com/nUHgJ.png

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>

这是我的表格代码,我设法在“选择 IMO”中列出了每艘船和她的 IMO,但是,我试图找到一种方法,在按下提交按钮时,IMO 及其相关buque 保存在 viajes 表中,而无需在表单中以任何方式添加“buque”。

我做事的方式是,在“viajes”表中创建了一个新的寄存器,其中包含其余数据,但“buque”字段保持空白,我收到以下 PHP 错误:注意:未定义索引:C 中的 elbuque :\\xampp\\htdocs\\agente-nav-online\\agregar-viaje.php 第 16 行

非常感谢四位朋友的帮助。

基于以下error_log行:

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

而这部分代码:

/* 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"];

通知出现在第 16 行,表明$buquedeimox数组中不存在索引elbuque

正如我们在第 13 行看到的,SQL 语法是错误的,其中如下:

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

实际上应该是:

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

进一步评论

不要使用mysqli_*因为这些过时和不安全的功能。 改用带有参数化语句的 MySQLi 或 PDO。 这也将防止 SQL 注入。

坚持面向对象风格或过程风格,但除非完全必要,否则不要混合使用。 我个人推荐面向对象的风格,这种范式提高了你代码的可读性、效率、功效、模块化,最终让你的应用程序更易于维护。

暂无
暂无

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

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