doucan8049 2018-11-20 21:23 采纳率: 100%
浏览 70

php和mysql从一个表单插入多个表

I am creating a simple site to keep records of users, customers, suppliers, etc.

I have created the forms to register clients and users using single forms capturing data through $ _POST form method

So far I have not had problems since the INSERTS are done on singles table wich PK is an AutoIncremented field

In the code shown below, my goal is to let users create a vendor (name, phone number, email, address) as well as asign 1 or many vendor-category. This information is contained in one form

vendors, vendors-categories, users etc are stored in a mysql database with the structure shown in attached file

structure

There is something wrong about my code after succesfully create vendor and i am not sure how to solve the part that manages insertions in the join table (tblprovxrubro)

Code

<?php

    session_start();
    //available for admin, power-users and role-4
    if ($_SESSION['rol'] ==2) {
      header("location: ./");
    }
    include "../conexion.php";


    if (!empty($_POST)) {
      $alert='';
      if (empty($_POST['razonSocial'])|| empty($_POST['email'])) {
        $alert='<p class="msg_error">Vendor name and email must not be blank.</p>';

      }else{


        $razonSocial  = $_POST['razonSocial'];
        $email        = $_POST['email'];
        $domicilio    = $_POST['domicilio'];
        $telefono     = $_POST['telefono'];
        $usuario_id   = $_SESSION['iduser'];

        $query = mysqli_query($conection,"SELECT * FROM tblprov WHERE razonSocial = '$razonSocial'");
        $result = mysqli_fetch_array($query);

        if ($result >0)
         {
          $alert='<p class="msg_error">vendor already exists.</p>';
         }else{
          $query_insert = mysqli_query($conection, "INSERT INTO tblprov(razonSocial, numero, domicilio, email, idUsuario)
                                                                  VALUES('$razonSocial','$telefono','$domicilio','$email', '$usuario_id')");

          if ($query_insert) 
          {
            $alert='<p class="msg_save">Vendor created succesfully.</p>';

            //Once vendor is created i need his ID in order to insert in table
            //tblprovxrubro as many records as vendor-types selected in form

            //Not sure about how to achieve this

            $queryBuscaprov = mysqli_query($conection, "SELECT id FROM tblprov WHERE razonSocial = '$razonSocial'");
            $result_prov = mysqli_fetch_array($queryBuscaProv);
            $idProv = $result_prov['id'];

            foreach ($_POST['idRubro'] as $opcionSeleccionada) 
            {
              //This INSERT should execute as many times as vendor-types selected in form
              $query2 = mysqli_query($conection, "INSERT INTO tblprovxrubro (idRubro, idProv) VALUES ('$opcionSeleccionada', '$idProv')");
            }
          }else{
            $alert='<p class="msg_error">Error creating vendor.</p>';
               }
             }
           }
           mysqli_close($conection);
         }
     ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <?php include "includes/scripts.php"; ?>
        <title>Registro de Proveedores</title>

    </head>
    <body>
    <?php include "includes/header.php"; ?>
        <section id="container">
        <div class="form_register" name="form_register">
          <h1><i class="fas fa-building"></i> Vendor List</h1>
          <hr>

        <form action="" method="post" class="form_register">

            <div class="alert"><?php echo isset($alert) ? $alert : ''; ?></div>
            <label for="razonSocial">Razón Social</label>
            <input type="text" name="razonSocial" id="razonSocial" placeholder="Razón Social">
            <label for="telefono">Número Telefónico</label>
            <input type="text" name="telefono" id="telefono" placeholder="Número Telefónico">
            <label for="domicilio">Domicilio</label>
            <input type="text" name="domicilio" id="domicilio" placeholder="Domicilio">
            <label for="email">Email</label>
            <input type="text" name="email" id="email" placeholder="Email">

            <?php
              $query_rubro = mysqli_query($conection,"SELECT * FROM tblrubros");
              mysqli_close($conection);
              $result_rubro = mysqli_num_rows($query_rubro);
             ?>
             <select name="rubro[]" id="rubro" multiple size="12">

          <?php
            if($result_rubro > 0)
            {
              while ($rubro = mysqli_fetch_array($query_rubro)) 
              {
                ?>
              <option value="<?php echo $rubro["idRubro"]; ?>"><?php echo $rubro["rubroDescripcion"] ?></option>
                <?php
              }
            }
           ?>
        </select>
        <p>press Ctrl in order to select multiple options.</p>
        <button name="submit" type="submit" class="btn_save"><i class="fas fa-save"></i> Crear Proveedor</button>
      </form>
    </div>
    </section>

    <?php include "includes/footer.php"; ?>
</body>
</html>

conection.php

<?php

    $host = 'localhost';
    $user = 'root';
    $password = 'mypass';
    $db = 'compras';

    $conection = @mysqli_connect($host,$user,$password,$db);
    mysqli_set_charset($conection,"utf8");

    if(!$conection){
        echo "connection error";
    }

?>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮
    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥20 java项目连接sqlserver时报ssl相关错误
    • ¥15 一道python难题3
    • ¥15 牛顿斯科特系数表表示
    • ¥15 arduino 步进电机
    • ¥20 程序进入HardFault_Handler