За последние 24 часа нас посетили 34219 программистов и 1314 роботов. Сейчас ищут 983 программиста ...

Работа с массивом

Тема в разделе "PHP для новичков", создана пользователем Danil005, 11 сен 2017.

  1. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    У меня есть форма, где я ввожу:
    HTML:
    1. <form action="" method='post'>
    2. <input name='data[]' value='Test1'>
    3. <input name='data[]' value='Test2'>
    4. <button>Добавить</button>
    5. </form>
    Я получаю массив такого вида:
    Array( [0] => ''Test1", [1] => "Test2" )

    Теперь мне нужно записать этот массив в базу данных, причем в 2 таблицы. Первая которая получает тупо имена Point, а вторая которая делает объединение, т.е для примера БД:
    ID Point1 Point2
    1 Test1 Test2

    Я делаю таким образом:
    PHP:
    1. foreach ($array['data'] as $key=>$value) {
    2.   if( !empty($value) ) {
    3.       self::db()->query('INSERT INTO ?n(?n) VALUE(?s)', 'points', 'name', $value);
    4.  
    5.       foreach ($array['data'] as $key2=>$value2) {
    6.           if( !empty($value2)) {
    7.               self::db()->query('INSERT INTO ?n(?n,?n) VALUE(?s,?s)', 'pointsCouple', 'point1', 'point2', $value, $value2);
    8.           }
    9.       }
    10.   }
    Проблема в том, что при втором цикле он заносит данные таким образом:
    ID Point1 Point2
    0 Test1 Test1
    1 Test1 Test2
    2 Test2 Test1
    3 Test2 Test2

    Мне нужно, чтобы было только Test1 и Test2.
    --- Добавлено ---
    Для более наглядного примера картинками.
    Как видим здесь мы вносим точки:
    [​IMG]
    А здесь первая точка со всеми остальными, потом вторая, третья и т.д.
    [​IMG]
     
    #1 Danil005, 11 сен 2017
    Последнее редактирование: 11 сен 2017
  2. xaker01

    xaker01 Активный пользователь

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    Отредактируй html форму и нет проблем, а цикл в цикле делать не имеет смысла, так как эта задача даже не через циклы решается, у тебя всего 1 значение в переменной
     
  3. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Где скрины, это не форма HTML, это как должно быть )
     
  4. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Решил задачу таким образом:
    PHP:
    1. $i=1;
    2.                     foreach ($array['tm'] as $count) {
    3.                        if( !empty($count) ) {
    4.                            $countTM+=1;
    5.                        }
    6.                     }
    7.                     foreach ($array['tm'] as $value) {
    8.                         if (!empty($value)) {
    9.                             self::db()->query('INSERT INTO ?n(?n) VALUES(?s)', 'points', 'name', $value);
    10.                             if( $countTM==$i ) $i=$i-$countTM;
    11.                             self::db()->query('INSERT INTO ?n(?n,?n) VALUE(?s,?s)', 'pointsCouple', 'point1', 'point2', $value, $array['tm'][$i]);
    12.                             $i++;
    13.                         }
    14.                     }
    Теперь вносит, как надо мне.