美好的一天,我有一个表单,可以在下面的两个表中添加新的寄存器到名为“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错误:注意:未定义的索引:第16行的C:\ xampp \ htdocs \ agente-nav-online \ agregar-viaje.php中的elbuque
非常感谢你的帮助。
答案 0 :(得分:0)
基于以下error_log
行:
PHP注意:未定义的索引:第16行的C:\ xampp \ htdocs \ agente-nav-online \ agregar-viaje.php中的elbuque
这部分代码:
/* 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行,表明elbuque
数组中不存在索引$buquedeimox
。
正如我们在第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注入。
坚持面向对象的风格或程序风格,但除非完全必要,否则不要将它们混合在一起。我个人建议面向对象的风格,这种范例可以提高代码的可读性,效率,功效,模块化,最终使您的应用程序更易于维护。