javascript — проверить форму перед отправкой или сохранить, если она была заполнена в случае неудачи

Мне нужна помощь с проверкой формы с помощью PHP. Я хотел бы проверить, существуют ли поля «mails» и «d_place» в БД перед отправкой формы. В случае, если какой-либо из них уже существует, вы должны снова заполнить всю форму. Таким образом, чтобы сделать его более удобным для пользователя, было бы здорово проверить это условие перед отправкой формы или, по крайней мере, иметь возможность сохранить введенные значения, чтобы пользователь изменил только поле, которое вызывает ошибку.

Здесь моя форма:

<form method="post" action="save_place.php">
<section id="costado2">

<div id="direx">
<label for="search_new_places">Direccion del Local</label>
<input type="text" name="d_place" placeholder="Direccion de Local.."  id="search_new_places" class='form-control' required>
</div>

<input type="hidden" name="place_id" id="place_id"/>

<div id="nombre_loc">
<label for="place">Nombre del Local</label>
<input type="text" placeholder="Nombre de Local.." name="n_place" id="n_place" class='form-control' required>
</div><?php//Get all country data
$query = $db->query("SELECT * FROM provincias ORDER BY provincia ASC");

//Count total number of rows
$rowCount = $query->num_rows;

$queryr = $db->query("SELECT * FROM rubros ORDER BY NOMBRE ASC");
$rowCountr = $queryr->num_rows;

?>

<div id="descrip">
<select name="rubro" id="n_description" name="n_description" class='form-control' required>
<option value="">Selecciona Rubro</option>
<?php
if($rowCount > 0){
while($row = $queryr->fetch_assoc()){
echo '<option value="'.$row['ID'].'">'.$row['NOMBRE'].'</option>';
}
}else{
echo '<option value="">Rubro No Disponible</option>';
}?>
</select>
</div>

<div id="pro">
<select name="country" id="country" class='form-control' required>
<option value="">Selecciona Provincia</option>
<?php
if($rowCount > 0){
while($row = $query->fetch_assoc()){
echo '<option value="'.$row['id'].'">'.utf8_encode($row['provincia']).'</option>';
}
}else{
echo '<option value="">Provincia no Disponible</option>';
}

?>
</select>
</div>

<div id="loc">
<select name="state" id="state" class='form-control' required>
<option value="">Selecciona Localidad</option>
</select>
</div>

<div id="tel">
<label>Telefono</label>
<input type="number" min="0" name="d_tel" placeholder="Telefono.." class='form-control'>
</div>

<div id="mail">
<label>Mail</label>
<br>
<input name="mails" id="mails" type="email" placeholder="Mail.." class='form-control' pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}" required>
</div>

<div id="pass">
<label><span>Password</span></label> <input pattern=".{5,10}" name="passw" id="passw" type="password" maxlength="10" placeholder="Password.." class='form-control' required>
</div>

<div id="repass">
<label><span>Repetir Password</span></label> <input pattern=".{5,10}" name="reps" id="reps" type="password" maxlength="10" placeholder="Repetir Password.." class='form-control' required>
</div>

<div id="bot3">
<input type="submit" id="btn_save" name="btn_save" class="btn btn-primary btn-sm" value="GUARDAR"/>
<input id="lat" name="lat" value="" type="hidden" >
<input id="lng" name="lng" value="" type="hidden" >
</div>

<div id="bot4">
<a href="index.php" class="btn btn-success btn-sm"><i class="glyphicon glyphicon-backward"></i> &nbsp; VOLVER</a>
</div>

</section>
</form>

И вот, страница, где я делаю проверку:

<?php
require_once('DB.php');

$place = $_POST['n_place'];
$description = $_POST['rubro'];
$latitude = $_POST['lat'];
$longitude = $_POST['lng'];
$direccion = $_POST['d_place'];
$provincia = $_POST['country'];
$localidad = $_POST['state'];
$telefono = $_POST['d_tel'];
$mail = $_POST['mails'];
$pass = $_POST['passw'];
$repass = $_POST['reps'];
$fecha = date("Y/m/d");

$di = ("SELECT * FROM locales WHERE DIRECCION = '$direccion'");
$querydi = $dbh->prepare($di);
$querydi->execute(array($direccion));

$q = ("SELECT * FROM usuarios WHERE MAIL = '$mail'");
$ql = ("SELECT * FROM locales WHERE MAIL = '$mail'");
$query = $dbh->prepare($q);
$queryl = $dbh->prepare($ql);
$query->execute(array($mail));
$queryl->execute(array($mail));

session_start();
if (($query->rowCount() == 0) && ($queryl->rowCount() == 0) && ($querydi->rowCount() == 0) && ($pass == $repass)) {

$dbp->query("INSERT INTO locales (NOMBRE, SUCURSAL, ESTADO, ID_LOCALIDAD, LAT, LNG, ID_RUBRO, ID_ROL, DIRECCION, TELEFONO, MAIL, PASSWORD, FECHA_ALTA) VALUES ('$place', 1,1,'$localidad', '$latitude', '$longitude', '$description', 3, '$direccion', '$telefono', '$mail', '$pass', '$fecha')");

$place_id = $dbp->insert_id;

$_SESSION['msg_box'] = array("Local ingresado exitosamente", "success");
echo header("location:login.php");
}else{
$_SESSION['msg_box'] = array("Hubo un error al insertar el local", "warning");
if ($querydi->rowCount() > 0) {
$_SESSION['msg_box'][0] .= "<br>La dirección ya se encuentra registrada.";
}
if ($query->rowCount() > 0 || $queryl->rowCount() > 0) {
$_SESSION['msg_box'][0] .= "<br>El mail ingresado ya se encuentra registrado.";
}
echo header("location:registrar_local.php");
}?>

Заранее большое спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]