Подтвердить форму до отправки или сохранения, если она заполнена в случае сбоя

Мне нужна помощь с проверкой формы с помощью PHP. Я хотел бы проверить, существуют ли в базе данных поля «почта» и «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 direccion 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");
}


?>

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

javascript,php,jquery,jquery-form-validator,

1

Ответов: 0

Подтвердить форму до отправки или сохранения, если она заполнена в случае сбоя

Мне нужна помощь с проверкой формы с помощью PHP. Я хотел бы проверить, существуют ли в базе данных поля «почта» и «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 direccion 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");
}


?>

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

01JavaScript, PHP, JQuery, JQuery форм-валидатор,
Похожие вопросы