У меня проблема с прохождением $last
:
$last = $db->lastInsertId();
Мне нужно пройти lastInsertId()
в массиве из поля формы
<input type="text" name="remi[]" value= '<?php echo $last; ?>' />
lastInsertId()
работает, потому что рядом с формой я получаю правильный последний идентификатор:
// here $last variable is ok
<?php if(isset($last)){ echo $last; }; ?>
Но из формы:
remi: <input type="text" name="remi[]" value= '<?php echo $last; ?>' /><br />
Я получил:
DetalleRemisiones Object
(
[conn:DetalleRemisiones:private] => PDO Object
(
)
[table_name:DetalleRemisiones:private] => detalleremi
[id] =>
[remi] => Array
(
[0] =>
Notice: Undefined variable: last in C:\xampp\htdocs\noe\remisiones_create_mas_remision3.php on line 85
[1] =>
Notice: Undefined variable: last in C:\xampp\htdocs\noe\remisiones_create_mas_remision3.php on line 93
[2] =>
Notice: Undefined variable: last in C:\xampp\htdocs\noe\remisiones_create_mas_remision3.php on line 98
)
Итак, как я могу пройти $last
в форме ввода, чтобы получить последний идентификатор вставки?
вместо этого:
[remi] => Array
(
[0] => 256
[1] => 256
[2] => 256
)
Вот мой код:
include_once 'config/database.php';
$database = new Database();
$db = $database->getConnection();
include_once 'objects/remisiones.php';
$remision = new remisiones($db);
include_once 'objects/detalleremisiones.php';
$detalleremision = new detalleremisiones($db);if($_POST){
$remision->clienteId = $_POST['clienteId'];
$remision->fecha = $_POST['fecha'];
$remision->create();
$last = $db->lastInsertId();
$detalleremision->remi = $_POST['remi'];
$detalleremision->trat = $_POST['trat'];
$detalleremision->precio = $_POST['precio'];
$detalleremision->cantidad = $_POST['cantidad'];
$detalleremision->create2();
}
?>
<form action="remisiones_create_mas_remision3.php" method="post">
<tr>
<td>Fecha</td>
<td><input type='text' name='fecha' class='form-control' required></td>
</tr>
<tr>
<td>Cliente</td>
<td>
<?php
// read the clientes from the database
include_once 'objects/remisiones.php';
$remision = new Remisiones($db);
$stmt = $remision->readclientes();
echo "<select class='form-control' name='clienteId' required>";
echo "<option>Seleccione cliente...</option>";
while ($row_cliente = $stmt->fetch(PDO::FETCH_ASSOC)){
extract($row_cliente);
echo "<option value='{$id}'>{$clienteId} {$apellido} {$apellido2} {$nombre}</option>";
}
echo "</select>";
?>
</td>
</tr>
<br><br><br>
//
<?php // here $last variable is ok
if(isset($last)){ echo $last; }; ?>/remi: <input type="text" name="remi[]" value= '<?php echo $last; ?>' /><br />
trat: <input type="text" name="trat[]" /><br />
precio: <input type="text" name="precio[]" /><br />
cantidad: <input type="text" name="cantidad[]" /><br />
remi: <input type="text" name="remi[]" value= '<?php echo $last; ?>' /><br />
trat: <input type="text" name="trat[]" /><br />
precio: <input type="text" name="precio[]" /><br />
cantidad: <input type="text" name="cantidad[]" /><br />
remi: <input type="text" name="remi[]" value= '<?php echo $last; ?>' /><br />
trat: <input type="text" name="trat[]" /><br />
precio: <input type="text" name="precio[]" /><br />
cantidad: <input type="text" name="cantidad[]" /><br />
<input type="submit" value="Enviar">
</form>
Вы должны использовать isset также в HTML
remi: <input type="text" name="remi[]" value= '<?php if (isset($last)) echo $last; ?>'
Ваша переменная ‘Last’ не завершается или не выполняется, когда вы ее вызываете.
Несмотря на то, что вы можете проверить, установлена ли переменная при ее вызове, лучше всего назначать переменные в верхней части вашего скрипта с пустыми значениями. Это лучше, потому что вам не нужно проверять все переменные перед их вызовом:
Поместите вверху вашего файла:
$last = "";