Два разных цикла объединенные в один

552
07 февраля 2017, 22:53

Здравствуйте. Нужно разделить два цикла (чтобы они выполнялись независимо друг от друга) и далее вставить их в INSERT запрос sql. Ломаю голову, не знаю как сделать.

Полностью код вот тут: http://pastebin.com/qY5hDpxZ и ниже в спойлере

<form action="" method="post">  
<table>
<tr>
<td>Параметр 1</td>
<td>Тег 1</td>
<td>Параметр 2</td>
<td>Тег 2</td>
<td>Параметр 3</td>
<td>Тег 3</td>
<td>Параметр 4</td>
<td>Тег 4</td>
<td>Параметр 5</td>
</tr>
    <tr>
        <td><input type="text" name="mass[]" /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" value=' '/></td>
    </tr>
    <tr>
        <td><input type="text" name="mass[]" /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" /></td>
    </tr>
    <tr>
        <td><input type="text" name="mass[]" /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" /></td>
    </tr>
    <tr>
        <td><input type="text" name="mass[]"  /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" /></td>
    </tr>
        <tr>
        <td><input type="text" name="mass[]"  /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" /></td>
    </tr>
        <tr>
        <td><input type="text" name="mass[]"  /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" /></td>
    </tr>
        <tr>
        <td><input type="text" name="mass[]"  /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" /></td>
    </tr>
        <tr>
        <td><input type="text" name="mass[]"  /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" /></td>
    </tr>
        <tr>
        <td><input type="text" name="mass[]"  /></td>
        <td><input type="text" name="tag[]" /></td>
        <td><input type="text" name="masss[]" /></td>
        <td><input type="text" name="tagg[]" /></td>
        <td><input type="text" name="massss[]" /></td>
        <td><input type="text" name="taggg[]" /></td>
        <td><input type="text" name="masssss[]" /></td>
        <td><input type="text" name="tagggg[]" /></td>
        <td><input type="text" name="massssss[]" /></td>
    </tr>
</table>

<input type="submit" name="submit" value="Поехали!"><br>  
</form>  
<?php  
$arr1 = array_diff($_POST['mass'], array(''));
$arr2 = array_diff($_POST['masss'], array(''));
$arr3 = array_diff($_POST['massss'], array(''));
$arr4 = array_diff($_POST['masssss'], array(''));
$arr5 = array_diff($_POST['massssss'], array(''));
$tag1 = array_diff($_POST['tag'], array(''));
$tag2 = array_diff($_POST['tagg'], array(''));
$tag3 = array_diff($_POST['taggg'], array(''));
$tag4 = array_diff($_POST['tagggg'], array(''));

$proverkakategoriy=mysql_query('SELECT virtuemart_category_id, category_name  FROM  ak89e_virtuemart_categories_ru_ru WHERE  INSTR(CONCAT(category_name), "'.$arr1[0].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr1[1].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr1[2].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr1[3].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr1[4].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr2[0].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr2[1].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr2[2].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr2[3].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr2[4].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr3[0].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr3[1].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr3[2].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr3[3].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr3[4].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr4[0].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr4[1].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr4[2].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr4[3].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr4[4].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr5[0].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr5[1].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr5[2].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr5[3].'" )
    AND  INSTR(CONCAT(category_name), "'.$arr5[4].'" )
    ');       
while($row=mysql_fetch_array($proverkakategoriy))
{
    echo '<p style="color:blue;">Совпадения: '.$row['virtuemart_category_id'].' '.$row['category_name'].'</p>';
    echo '<p style="color:red;">Есть совпадения, скрипт не сработает</p>';
}

if (mysql_num_rows($proverkakategoriy)==0){
    foreach($arr1 as $word1) {
        foreach($arr2 as $word2) {
            foreach($arr3 as $word3) {
                foreach($arr4 as $word4) {
                    foreach($arr5 as $word5) {
                        foreach($tag1 as $teg1) {
                            foreach($tag2 as $teg2) {
                                foreach($tag3 as $teg3) {
                                    foreach($tag4 as $teg4) {
                                        echo 'INSERT INTO ak89e_virtuemart_product_categories (category_name,<br>
                                        tag1, tag2, tag3, tag4,<br>
                                        customtitle,<br>
                                        metadesc,<br>
                                        metakey,<br>
                                        category_description ) VALUES ('.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.',<br>
                                        '.$teg1.','.$teg2.','.$teg3.','.$teg4.',<br>
                                        "Купить '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' в интернет-магазине  - цена, описание, фотографии, характеристики",<br>
                                        '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' купить в интернет магазине с доставкой, гарантией. Смотрите на сайте фотографии, описание, полные характеристики, отзывы. ,<br>
                                        '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.',<br>
                                        "В разделе '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' нашего интернет-магазина вы найдете подробное описание, отзывы, цены. Для удобства мы предоставили полные характеристики, фотографии, похожие и сопутствующие товары. Будем благодарны, если вы оставите свой отзыв о товарах. Купить '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' вы сможете по привлекательным ценам на нашем сайте."
                                        )<br><br><br>';
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
?>
Answer 1

Я бы на вашем месте переписал код, я к сожаления (скорее к счастью) не понял что он делает:

  • не понял зачем тут столько переменных от arr[1,5] и tag[1,5]
  • Странный запрос к базе ak89e_virtuemart_categories_ru_ruи зачем такое условие? И хочу заметить что переменный не экранированы и есть место sql injection, и посоветовал бы переписать хотя-бы с использованием mysqli и сборкой запросов, можно почитать здесь.
  • Ну и зачем столько циклов?

Ну и как я понял из скриншота что это штука работает как-то так: вбиваем 3 столбца со словами и записываем в базу только уникальные слова для каждого столбца

В данном примере также можно использовать sql injection

Мне кажется что-то подобное решение должно помочь (НО Я СОВЕТУЮ ПЕРЕПИСАТЬ КОД):

if (mysql_num_rows($proverkakategoriy)==0){
    foreach($arr1 as $word1) {
        foreach($arr2 as $word2) {
            foreach($arr3 as $word3) {
                foreach($arr4 as $word4) {
                    foreach($arr5 as $word5) {
                        echo 'INSERT INTO ak89e_virtuemart_product_categories (category_name,<br>
                        tag1, tag2, tag3, tag4,<br>
                        customtitle,<br>
                        metadesc,<br>
                        metakey,<br>
                        category_description ) VALUES ('.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.',<br>';
                        foreach($tag1 as $teg1) {
                            foreach($tag2 as $teg2) {
                                foreach($tag3 as $teg3) {
                                    foreach($tag4 as $teg4) {
                                        echo $teg1.','.$teg2.','.$teg3.','.$teg4.',<br>';
                                    }
                                }
                            }
                        }
                        echo '"Купить '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' в интернет-магазине  - цена, описание, фотографии, характеристики",<br>
                        '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' купить в интернет магазине с доставкой, гарантией. Смотрите на сайте фотографии, описание, полные характеристики, отзывы. ,<br>
                        '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.',<br>
                        "В разделе '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' нашего интернет-магазина вы найдете подробное описание, отзывы, цены. Для удобства мы предоставили полные характеристики, фотографии, похожие и сопутствующие товары. Будем благодарны, если вы оставите свой отзыв о товарах. Купить '.$word1.' '.$word2.' '.$word3.' '.$word4.' '.$word5.' вы сможете по привлекательным ценам на нашем сайте."
                        )<br><br><br>';
                    }
                }
            }
        }
    }
}
READ ALSO
Кеширование картинок Nginx &amp; Laravel

Кеширование картинок Nginx & Laravel

Для кеширования картинок (nginx) у меня на сейте прописано правило:

498
Laravel Eloquent, Древовидные категории

Laravel Eloquent, Древовидные категории

Всем привет, хотел бы обратиться за помощью чтобы зарефакторить отношнения в моделях в LaravelЕсть у меня таблица вида:

767
Выборка из нескольких таблиц

Выборка из нескольких таблиц

Доброго времени сутокПомогите решить задачу с MySQL (знаком довольно плохо):

469
Вывод контента в зависимости от страны

Вывод контента в зависимости от страны

Здравствуйте, стоит такая задачав контактах для посетителей страны России показывать один блок контактов, для посетителей с Украины другой,...

591