Ввод переменного количества данных в базу данных с наилучшей возможной нормализацией - PullRequest
0 голосов
/ 09 сентября 2010

хорошо, поэтому у меня есть база данных, состоящая из двух таблиц, продуктов и поставщиков.

Все поставщики заполняют форму, и их данные затем сохраняются в таблице поставщиков, а таблица продуктов содержит списоквсе продукты, поэтому, когда поставщик заполняет форму, он может выбрать столько продуктов, сколько он пожелает, так как я использую jQuery JSON и AJAX, чтобы получить список всех продуктов, а затем заполнить раскрывающийся список всеми ними.в нем, который затем можно клонировать столько раз, сколько необходимо.

Проблема, с которой я сейчас сижу, состоит в том, как вставить все различные продукты, которые поставщик выбирает, в таблицу поставщиков илискорее просто свяжите все продукты, которые он выберет, с одним поставщиком для лучшей нормализации, поскольку все продукты уже есть?

Я буду использовать jQuery $ .ajax, чтобы POST-данные формы в формате JSON ожидающему PHPфайл, который затем проанализирует его и вставит данные в базу данных.

Так что в принципе мне нужно фигУзнайте, как соотнести данные в базе данных для достижения наилучшей возможной нормализации, и мне нужно найти способ вставить переменное количество продуктов в таблицу поставщиков или найти способ связать множество продуктов, которые он выбирает, с одним.поставщик.

Я очень новичок в реляционных базах данных, поэтому любые советы о том, как действовать, будут очень полезны, так же как и любые другие советы, которые вы, ребята, могли бы получить!для заполнения клона и POST продуктов, выбранных поставщиком:

$(document).ready(function() {

        var count = 0;      

        //when clicked it will remove the closest div with a class of 'container'
        $("span.remove").live('click', function(){
            $(this).closest("div.container").fadeOut(400, function(){
                $(this).remove();
                $('#button').attr('disabled','');
            });
        });

        //initialize the button
        $('#button').attr('disabled','');
        $('#button').click(function(){

            var count = $("#systems_wrapper > .container").size();
            var lastID = $("#systems_wrapper > .container:last").attr('id');
            var exploded = lastID.split("_");
            var increment = Number(exploded[1])+1;

            //if the user has selected 5 products, disable the 'add' button
            if(count >= 5){
                $('#button').attr('disabled','disabled');
            }else {
                $('#button').attr('disabled','');
            }

            //clone the first drop down and give it a different ID, as well as it's child elements
            var test = $('#systems_0.container').clone().attr('id', 'system_' + increment).appendTo('#systems_wrapper');
            test.children(':nth-child(2)').append('<span class="remove"></span>');
            test.children(':nth-child(2)').children(':first').attr('id', 'mail_' + increment).attr('class','dropDowns').attr('onchange','test();');


            });


    //get the products JSON object returned from test_post.php and run the necessary functions on the returned data
    $.getJSON("test_post.php", function(data){

    //clean out the select list
    $('#box').html('');

        //run the loop to populate the drop down list
        $.each(data, function(i, products) {
            $('#box').append(
                $('<option></option>').html(products.products)
            );
        });
    });
});


//this gets all of the products chosen and then gets each ones value and ID, and then posts it to the qwer.php file

function test(){
    var sections = $('#systems_wrapper').find('.dropDowns');
    var newArray = new Array();

    sections.each(function(){
        var id = $(this).attr('id');
        var val = $(this).val();
        var o = { 'id': id, 'value': val };

        newArray.push(o);
    });

    alert(newArray);

    $.ajax({
            type: "POST",
            url: "qwer.php",
            dataType: 'json',
            data: { json: JSON.stringify(newArray) }
        });

}

Заранее спасибо!

1 Ответ

2 голосов
/ 09 сентября 2010

Если я правильно понимаю проблему на уровне базы данных, следует ли использовать промежуточную таблицу, называемую что-то вроде ProductSupplier, содержащую столбцы Product_ID и Supplier_ID.

Затем, когда поставщик выбирает продукт, добавьте оба поставщикаи идентификатор продукта для нового столбца в этой таблице.

Это позволит нескольким поставщикам выбирать один и тот же продукт, а несколько продуктов - одному поставщику.

РЕДАКТИРОВАТЬ: я хотел сказать«добавьте и поставщика, и идентификатор продукта в новую строку в этой таблице»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...