Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Къде бъркам при запис на групи и под групи към базата данни

Featured Replies

Здравейте колеги,

Правя запис на групи и под групи в база данни като ги чета от масив, взет от екселски файл. Обаче нямам грешка в записа, но не се записват коректно данните в базата. т.е. ако имам една подгрупа на една група няма проблем, но ако са 2 или повече подгрупите на дадена група за първата под група няма проблем, но за втората под група взима ИД-то на предходната под група. Използвам ZF1 и ето какво правя.

$oneProcessAllGroups = Array (
    [10] => Array
        (
            [number] => 1
            [groupName] => grupa 1
        )

    [11] => Array
        (
            [number] => 
            [groupName] => pod grupa 1 na grupa 1
        )

    [12] => Array
        (
            [number] => 2
            [groupName] => grupa 2
        )

    [13] => Array
        (
            [number] => 
            [groupName] => pod grupa 1 na grupa 2
        )

    [14] => Array
        (
            [number] => 3
            [groupName] => grupa 3
        )

    [15] => Array
        (
            [number] => 
            [groupName] => pod grupa 1 na grupa 3
        )

    [16] => Array
        (
            [number] => 
            [groupName] => pod grupa 2 na grupa 3
        )

    [17] => Array
        (
            [number] => 4
            [groupName] => grupa 4
        )

    [18] => Array
        (
            [number] => 
            [groupName] => pod grupa 1 na grupa 4
        )

);

processID = 0;

if (is_array($oneProcessAllGroups)) {
                    echo "<pre>";
                    print_r($oneProcessAllGroups);
                    echo "</pre>";
                    
                    foreach ($oneProcessAllGroups as $oneGroup) {
                        echo "<pre>";
                        print_r($oneGroup);
                        echo "</pre>";
                        if ($oneGroup['number'] != '') {
                            $saveProcessArray = array();
                            $saveProcessArray['groupID'] = null;
                            $saveProcessArray['process'] = mb_strtoupper($oneGroup['groupName']);

                            $processID = $processMapper->save($saveProcessArray);
                            if ($processID) {
                                echo "this group " . mb_strtoupper($oneGroup['groupName']) . " was successful saved!<br />";
                            }
                        } else {
                            $saveProcessArray = array();
                            $saveProcessArray['groupID'] = $processID;
                            $saveProcessArray['process'] = mb_strtoupper($oneGroup['groupName']);

                            $processID = $processMapper->save($saveProcessArray);
                            if ($processID) {
                                echo "this second group " . mb_strtoupper($oneGroup['groupName']) . " was successful saved!<br />";
                            }
                        }

 

  • Автор
преди 5 минути, Ken написа:

За подгрупите използвай променлива, различна от $processID.

Защо?

Смисъл $processID-то ми е върнатото ИД от записа на групата в базата. т.е. функцията ми save връща ИД-то на записа. На мен идеята ми е да следната. Таблицата ми се състои от следноте полета "Id, groupID, process", ако е нова група "groupID" ще е null, ако е под група на група "groupID" ще е равно на ИД от на групата.

Мен, ако питаш в случая ти трябва някаква дървовидна структура. Да имаш root -> подгрупа -> подгрупа примерно:


 

[
  {"group_name": "root_group1", "id" : 1, "parent_id": null},
  {"group_name": "sub_grup_of_root1", "id" : 2, "parent_id": 1},
  {"group_name": "sub_grup_of_subgroup1", "id" : 3, "parent_id": 2},
  {"group_name": "root_group2", "id" : 4, "parent_id": null},
  {"group_name": "sub_grup_of_root2", "id" : 5, "parent_id": 4},
]

И после можеш рекурсивно да ги обходиш примерно.

п.с. За такива случаи може да ползваш и nested set, ако ще ги пишеш в база ...

преди 15 минути, spas666 написа:

Защо?

Смисъл $processID-то ми е върнатото ИД от записа на групата в базата. т.е. функцията ми save връща ИД-то на записа. На мен идеята ми е да следната. Таблицата ми се състои от следноте полета "Id, groupID, process", ако е нова група "groupID" ще е null, ако е под група на група "groupID" ще е равно на ИД от на групата.

Ако е наистина така, не трябва да има проблем.

Но както сам виждаш нещо не е наред.
 

  • Автор
преди 12 минути, borovaka написа:

Мен, ако питаш в случая ти трябва някаква дървовидна структура. Да имаш root -> подгрупа -> подгрупа примерно:


 


[
  {"group_name": "root_group1", "id" : 1, "parent_id": null},
  {"group_name": "sub_grup_of_root1", "id" : 2, "parent_id": 1},
  {"group_name": "sub_grup_of_subgroup1", "id" : 3, "parent_id": 2},
  {"group_name": "root_group2", "id" : 4, "parent_id": null},
  {"group_name": "sub_grup_of_root2", "id" : 5, "parent_id": 4},
]

И после можеш рекурсивно да ги обходиш примерно.

п.с. За такива случаи може да ползваш и nested set, ако ще ги пишеш в база ...

Така правя, но има някъде има проблем и не мога да го хвана къде е. Идеята ми за момента е да има групи и 1 ниво под групи т.е. root-groups->sub-groups. Но нещо не се получава. Като направя принт на масива на групите/подгрупите всичко е наред, но ми се омазва в записите към базата.
 

преди 55 минути, spas666 написа:

Здравейте колеги,

Правя запис на групи и под групи в база данни като ги чета от масив, взет от екселски файл. Обаче нямам грешка в записа, но не се записват коректно данните в базата. т.е. ако имам една подгрупа на една група няма проблем, но ако са 2 или повече подгрупите на дадена група за първата под група няма проблем, но за втората под група взима ИД-то на предходната под група. Използвам ZF1 и ето какво правя.

 

Не е ли по-елегантно да имате отделни таблици за група и подгрупа, свързани с ИД на група?

  • Автор

Намерих къде ми е грешката. $processID взима стойността на под групата ако са повече от 1 и затова добавих нова променлива за под-групите. т.е.

$oneProcessAllGroups = Array (
    [10] => Array
        (
            [number] => 1
            [groupName] => grupa 1
        )

    [11] => Array
        (
            [number] => 
            [groupName] => pod grupa 1 na grupa 1
        )

    [12] => Array
        (
            [number] => 2
            [groupName] => grupa 2
        )

    [13] => Array
        (
            [number] => 
            [groupName] => pod grupa 1 na grupa 2
        )

    [14] => Array
        (
            [number] => 3
            [groupName] => grupa 3
        )

    [15] => Array
        (
            [number] => 
            [groupName] => pod grupa 1 na grupa 3
        )

    [16] => Array
        (
            [number] => 
            [groupName] => pod grupa 2 na grupa 3
        )

    [17] => Array
        (
            [number] => 4
            [groupName] => grupa 4
        )

    [18] => Array
        (
            [number] => 
            [groupName] => pod grupa 1 na grupa 4
        )

);

$processID = 0;
$secondID = 0;

if (is_array($oneProcessAllGroups)) {
                    echo "<pre>";
                    print_r($oneProcessAllGroups);
                    echo "</pre>";
                    
                    foreach ($oneProcessAllGroups as $oneGroup) {
                        echo "<pre>";
                        print_r($oneGroup);
                        echo "</pre>";
                        if ($oneGroup['number'] != '') {
                            $saveProcessArray = array();
                            $saveProcessArray['groupID'] = null;
                            $saveProcessArray['process'] = mb_strtoupper($oneGroup['groupName']);

                            $processID = $processMapper->save($saveProcessArray);
                            if ($processID) {
                                echo "this group " . mb_strtoupper($oneGroup['groupName']) . " was successful saved!<br />";
                            }
                        } else {
                            $saveProcessArray = array();
                            $saveProcessArray['groupID'] = $processID;
                            $saveProcessArray['process'] = mb_strtoupper($oneGroup['groupName']);

                            $secondID = $processMapper->save($saveProcessArray);
                            if ($secondID) {
                                echo "this second group " . mb_strtoupper($oneGroup['groupName']) . " was successful saved!<br />";
                            }
                        }

 

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.