Как вставить данные в базу данных ORACLE в порядке возрастания, используя PHP для цикла? - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть эти HTML-формы, JQuery и PHP-код. До сих пор мне удавалось добавлять динамические поля в формы с помощью jQuery и добавлять данные в базу данных Oracle.

code.html

<div id="dynamicForm">
    <button id="" class="add" name="1"> + ADD ITEM</button>
        <table id="">
            <thead>
                <tr>
                    <th>TEXT 1</th>
                    <th>TEXT 2</th>
                    <th>TEXT 3</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td><input type="text" class="" name="name1[]" value="" placeholder=""></td>
                    <td><input type="text" class="" name="name1[]" value="" placeholder=""></td>
                    <td><input type="text" class="" name="name1[]" value="" placeholder=""></td>
                </tr>
            </tbody>
        </table>
    </div>
</div>

Code.js

<script type="text/javascript">
  function formFunc(id, name)
  {
    switch(name)
    {
      case "1":
        return '<div id="dynamicFormA"><button id="" class="add" name="1">+ ADD ITEM</button><table id=""><thead><tr><th>TEXT 1</th><th>TEXT 2</th><th>TEXT 3</th></tr></thead><tbody><tr><td><input type="text" class="" name="name1[]" value="" placeholder=""></td><td><input type="text" class="" name="name1[]" value="" placeholder=""></td><td><input type="text" class="" name="name1[]" value="" placeholder=""></td></tr></tbody></table></div></div>';
        break;
    }
  }
  $(document).ready(function(e){
      $(".add").click(function(e){  
        e.preventDefault();
        var id   = $(this).attr('id');
        var name = $(this).attr('name'); 
        $("#dynamicForm"+id).append(formFunc(id, name));
        return false;
      });
  });
</script>

Мне удается добавить данные, используя цикл for, как показано ниже. У меня нет проблем с добавлением данных.

Code.php

<?php

    // Running no
        $sqlNextSeq         = "SELECT SEQ_TABLE.nextval AS RUNNO FROM DUAL";
        $stid2              = oci_parse($ociconn,$sqlNextSeq);
        oci_execute($stid2);
        $row                = oci_fetch_array($stid2, OCI_RETURN_NULLS); 
        $application_no     = $row["RUNNO"];
    // Running no

    // Data added
        for ( $i=0; $i<count($_POST["name1"]); $i++ ) 
        {
            if($_POST['name1'][$i] != '' || $_POST['name2'][$i] != '' || $_POST['name3'][$i] != '' )
            {
                $sql  = "INSERT INTO TABLE (
                                              ID,
                                              TEXT1,
                                              TEXT2,
                                              TEXT3
                                            )
                                      VALUES(
                                              '".$application_no."',
                                              '".$_POST["name1"][$i]."',
                                              '".$_POST["name2"][$i]."',
                                              '".$_POST["name3"][$i]."'
                                            )
                        ";
                $stid = oci_parse($ociconn,$sq);
                oci_bind_by_name($stid);
                $res  = oci_execute($stid);
                if($res){ echo "Added<br/>";} else { echo "Not added<br/>";}
            }
        }
    // Data added
?>

Но почему-то последовательность не в порядке, когда данные добавляются в базу данных.

Ожидается, что последовательность будет такой

ID              TEXT1           TEXT2           TEXT3
1               NAME1           ADDRESS1        CONTACT1
2               NAME2           ADDRESS2        CONTACT2
3               NAME3           ADDRESS3        CONTACT3

Но данные добавляются в Oracle следующим образом.

ID              TEXT1           TEXT2           TEXT3
3               NAME3           ADDRESS3        CONTACT3
1               NAME1           ADDRESS1        CONTACT1
2               NAME2           ADDRESS2        CONTACT2

Кстати, вот моя таблица, последовательность и триггер

последовательность

CREATE SEQUENCE  "DEV"."SEQ_TABLE"  MINVALUE 0 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE  NOORDER  NOCYCLE;

триггер

create or replace TRIGGER DEV.TRG_TABLE
 BEFORE INSERT ON DEV.TABLE FOR EACH ROW
BEGIN
 SELECT SEQ_TABLE.NEXTVAL INTO :NEW.ID FROM DUAL;
END;

Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.

1 Ответ

0 голосов
/ 07 сентября 2018

ваша проблема, когда вы выбираете данные, выберите их с заказом по id

select * from table order by ID asc
...