красиво как раз на шаблонах... =) исче на классах с __autoload(), паттернах, ЧПУ, nginx кешированием, мемкешем, пивом, травой, ой, ой, ой!
[vs] Ну вообще да ) Я это, имел ввиду то как я организовал работу с POST GET запросами для подтверждения удаления, чота мне не сильно нравится
сборщику страниц глубоко наплевать на полезность содержимого. его дело все это собрать и показать, а думать ему не положено.
с __autoload() - не знаю паттернах - не знаю ЧПУ - чота слышал nginx кешированием - не знаю мемкешем - не знаю пивом - знаю травой - скажу: чота слышал ))) так что ой-ой-ой учить, учить и еще раз учить
[vs], что бы знать, нужен мозг, а не наебуренные IDE. Вот поэтому то вы все и знаете ровно столько кода, сколько знают ваши среды разработки.
Чтобы знать нужно в большинстве случаев как минимум откуда-то это узнать Основная часть вопроса была - "что это такое".
Вот такие фрагменты у меня получились: PHP: <? // Берем переданный массив номеров страниц для удаления $pages = $_POST['pages']; // Проходим по массиву for ($i = 0; $i < count($pages); $i++) { // Вместо чисел формируем элементы ID=число, заодно для безопасности приводим к целому $pages[$i] = 'ID='.(int)$pages[$i]; }; // Создаем строку для sql-запроса $pages_for_query = implode(' OR ', $pages); // ID=число OR ID=число OR ID=число и т.д. InitDB(); $query = 'DELETE FROM pages WHERE ('.$pages_for_query.')'; ?> PHP: <? $pages = $_POST['pages']; $pages_for_form = ''; for ($i = 0; $i < count($pages); $i++) { $pages[$i] = (int)$pages[$i]; $pages_for_form .= '<input type="hidden" name="pages[]" value="'.$pages[$i].'" />'; }; $pages_str = implode(', ', $pages); // Выводим форму $body = '<p>Уверенны что хотите удалить страницы с номерами: '.$pages_str.'?</p>'; ?>
Вот так изменил удаление нескольких страниц: PHP: <? } elseif (isset($_POST['pages'])) { $pages = $_POST['pages']; for ($i = 0; $i < count($pages); $i++) { $pages[$i] = (int)$pages[$i]; }; $pages_str = implode(', ', $pages); // Выводим форму // Тут можна вставить проверку - есть ли страницы с таким ID $body = '<p>Уверенны что хотите удалить страницы с номерами: '.$pages_str.'?</p>'; $body .= '<form action="page-delete.php" method="post">'; $body .= '<input type="hidden" name="confirm" value="yes" />'; $body .= '<input type="hidden" name="deletepages" value="'.$pages_str.'" />'; $body .= '<input type="submit" value="Удалить" style="width:150px;" />'; $body .= ' '; $body .= '<input type="button" value="Отмена" style="width:150px;" onClick="self.location.href=\'index.php\';"/>'; $body .= '</form>'; $body .= '</body>'; $body .= '</html>'; MessagePage('Удалить страницы', $body); // Иначе, если это POST и передали deletepages, значит подтвердили удаление несколько страниц } elseif (isset($_POST['deletepages'])) { $pages = explode(', ', $_POST['deletepages']); // Насколько безопасна explode??? for ($i = 0; $i < count($pages); $i++) { $pages[$i] = (int)$pages[$i]; // Для безопасности приводим к целому }; InitDB(); $query = 'DELETE FROM pages WHERE ID IN ('.implode(',', $pages).')'; if (mysql_query($query)) { OperationOKPage(''); } else { DBErrorPage('Ошибка при удалении страниц.'); }; } ?>
Даже так: PHP: <? function ArrayToInt($array_of_int) { unset($result); for ($i = 0; $i < count($array_of_int); $i++) { $result[$i] = (int)$array_of_int[$i]; }; return $result; } // ... } elseif (isset($_POST['pages'])) { $pages_str = implode(', ', ArrayToInt($_POST['pages'])); $body = '<p>Уверенны что хотите удалить страницы с номерами: '.$pages_str.'?</p>'; // ... $body .= '<input type="hidden" name="deletepages" value="'.$pages_str.'" />'; // ... MessagePage('Удалить страницы', $body); // Иначе, если это POST и передали deletepages, значит подтвердили удаление несколько страниц } elseif (isset($_POST['deletepages'])) { InitDB(); $query = 'DELETE FROM pages WHERE ID IN ('.implode(',', ArrayToInt(explode(', ', $_POST['deletepages']))).')'; if (mysql_query($query)) { OperationOKPage(''); } else { DBErrorPage('Ошибка при удалении страниц.'); }; ?>
PHP: <? function ArrayToInt($array) { foreach ($array as $key => $value) $result[$key] = (int)$value; return $result; } 1. unset не нужен, так как внутри функции своя область видимости переменных, и ее подменить невозможно. 2.1 Твоя функция не работает с ассоциативными массивами 2.2 Твоя функция не работает с разрывами в последовательности ключей
точно также можно сказать, что "отступы не нужны, ибо прорамма всё-равно отработает правильно" однако, нет ничего зазорного в том, чтобы явно указать, что данная переменная более не представлет интереса.
Где? В первой строке фунции? Незачем освобождать то, чего нет и не может быть ни при каких условиях. Советую сначала ознакомится с темой вопроса, а потом говорить по существу.
очищать переменную перед использованием - хорошая привычка. не надо за неё бить по рукам. нет никакой гарантии, что эта функция не разрастётся и перед этим кодом не появятся ещё инструкции, которые "по счастливой случайности" будут использовать ту же переменную.
если через жопу все делать, то конечно... предлагаю вообще $_GLOBALS очищать. для безопасности... гыгыгы
Ruzzz PHP: <?php function ArrayToInt($array_of_int) { unset($result); for ($i = 0; $i < count($array_of_int); $i++) { $result[$i] = (int)$array_of_int[$i]; }; return $result; } PHP: <?php $array=array_map("intval",$array);