簡體   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