Мне не понятно что храниться в переменной $delete
$delete = !empty($_POST['delete']) ? $_POST['delete'] : array();
Если пусто, то я так понимаю пустой массив будет в $delete, если не пусто, то что тогда?
if(count($delete) > 0) // если $delete больше 0
{
$posts = unserialize(file_get_contents('data/'. $page));
// вытягиваем в пост содержимое из $page
// Ниже идет цикл
for($i = 0; $i < count($delete); ++$i)
{
// Когда номер поста совпадет со значением отмеченного чекбокса,
// заменяем его внутренности
Здесь тоже не совсем понятно :(
$posts[$delete[$i]]['name'] = '';
$posts[$delete[$i]]['mess'] = '';
}
Спустя 18 минут, 14 секунд (22.08.2012 - 16:04) Hello написал(а):
Тоже самое что
http://php.net/manual/ru/language.operators.comparison.php, раздел Тернарный оператор
if ( !empty($_POST['delete']) ) {
$delete = $_POST['delete'];
} else {
$delete = array();
}
http://php.net/manual/ru/language.operators.comparison.php, раздел Тернарный оператор
Спустя 9 минут, 38 секунд (22.08.2012 - 16:13) dron4ik написал(а):
Цитата (Гость_Дмитрий @ 22.08.2012 - 13:45) |
Ребят объясните пожалуйста как работает эта часть кода Мне не понятно что храниться в переменной $delete $delete = !empty($_POST['delete']) ? $_POST['delete'] : array(); Если пусто, то я так понимаю пустой массив будет в $delete, если не пусто, то что тогда? |
содержимое $_POST['delete']
Спустя 1 минута, 35 секунд (22.08.2012 - 16:15) Guest написал(а):
Цитата (Hello @ 22.08.2012 - 17:04) |
Тоже самое чтоif ( !empty($_POST['delete']) ) { http://php.net/manual/ru/language.operators.comparison.php, раздел Тернарный оператор |
Я понял как работает тернарный оператор, мне не понятно что будет в $delete если там не пусто)
Спустя 12 минут, 16 секунд (22.08.2012 - 16:27) oleg_n написал(а):
Цитата (Guest @ 22.08.2012 - 17:15) |
Я понял как работает тернарный оператор, мне не понятно что будет в $delete если там не пусто) |
Если в $_POST['delete'] не пусто, значения передаются в $delete , а если пусто, то объявляется пустой массив.
$_POST['delete'] содержит те данные, которые были переданы из формы ( по идее подтверждение об удалении)
Проверка на пустоту идет для $_POST['delete'], а не для $delete
![wink.gif](http://phpforum.su/html/emoticons/wink.gif)
Спустя 2 минуты, 35 секунд (22.08.2012 - 16:30) Guest написал(а):
Цитата (oleg_n @ 22.08.2012 - 17:27) | ||
Если в $_POST['delete'] не пусто, значения передаются в $delete , а если пусто, то объявляется пустой массив. $_POST['delete'] содержит те данные, которые были переданы из формы ( по идее подтверждение об удалении) Проверка на пустоту идет для $_POST['delete'], а не для $delete ![]() |
спасибо, теперь понятно(
Спустя 5 часов, 9 минут, 24 секунды (22.08.2012 - 21:39) Guest написал(а):
Смотрите как я понял этот код, если чет не так поправьте :)
if(count($delete) > 0) // если у нас есть 1-й комментарий то в $delete будет значение 1 , то есть 1 больше 0
{
$posts = unserialize(file_get_contents('data/'. $page));
// вытягиваем в пост содержимое из $page
// Ниже идет цикл
for($i = 0; $i < count($delete); ++$i)
// $i меньше $delete (то есть меньше 1, в $i попадает единица
{
// Когда номер поста совпадет со значением отмеченного чекбокса,
Совпадает в смысле $delete равен 1 и $i равен 1 то мы заменяем содержимое?
$posts[$delete[$i]]['name'] = '';
$posts[$delete[$i]]['mess'] = '';
}
Спустя 2 часа, 5 минут, 33 секунды (22.08.2012 - 23:45) Guest написал(а):
блин внизу вывожу через
пишет 0
Здесь 0 меньше 0 ? (
что-то часть кода понимаю, часть нет, зациклился на этом моменте(
echo count($delete);
пишет 0
for($i = 0; $i < count($delete); ++$i)
Здесь 0 меньше 0 ? (
что-то часть кода понимаю, часть нет, зациклился на этом моменте(
Спустя 5 часов, 45 минут, 10 секунд (23.08.2012 - 05:30) Tadochi написал(а):
echo var_dump($delete);
Спустя 1 час, 51 минута, 30 секунд (23.08.2012 - 07:21) Игорь_Vasinsky написал(а):
Цитата |
Здесь 0 меньше 0 ? ( |
Цитата |
for($i = 0; $i < count($delete); ++$i) |
здесь смысл не в этом)
задается стартовое значение $i=0
пока $i будет меньше count($delete) - $i будет увеличиваться с каждым шагом на 1 (++$i;)
соответственно - от этого и название такое - цикл, т.к. далее идущий код в {} - будет повторяться цикл за циклом - пока будет увеличиваться $i
Спустя 42 минуты, 52 секунды (23.08.2012 - 08:04) Guest написал(а):
а в $delete получается значение будет равно количеству элементов в массиве $_POST ?)
При выводе вар дампом у меня $delete 0 показывает)
При выводе вар дампом у меня $delete 0 показывает)
Спустя 43 минуты, 10 секунд (23.08.2012 - 08:47) Игорь_Vasinsky написал(а):
Цитата |
count($delete); |
$delete - массив
Цитата |
$delete = !empty($_POST['delete']) ? $_POST['delete'] : array(); |
Спустя 52 минуты, 45 секунд (23.08.2012 - 09:40) Guest написал(а):
Блин чет я вообще запутался, что будет находиться в массиве $delete если не пусто?
то есть 2 массива вложенных, $_POST (в котором данные из формы(количество элементов)) и $delete ?
Как будет выглядить массив $delete Внутри ?
Я что не вывожу вар дампом у меня там 0(
то есть 2 массива вложенных, $_POST (в котором данные из формы(количество элементов)) и $delete ?
Как будет выглядить массив $delete Внутри ?
Я что не вывожу вар дампом у меня там 0(
Спустя 22 минуты, 59 секунд (23.08.2012 - 10:03) m4a1fox написал(а):
Guest
Если не пусто, то $delete = array(), иначе $delete = $_POST['delete']
Если не пусто, то $delete = array(), иначе $delete = $_POST['delete']
Спустя 7 минут, 14 секунд (23.08.2012 - 10:10) Guest написал(а):
а в $_POST['delete'] находятся данные из формы?
Спустя 1 минута, 7 секунд (23.08.2012 - 10:11) m4a1fox написал(а):
Guest
Откуда мне знать. Простите, кофе с утра не выпил, мои экстрасенсорные данные для прочтения информации с вашего монитора сейчас отключены.
Откуда мне знать. Простите, кофе с утра не выпил, мои экстрасенсорные данные для прочтения информации с вашего монитора сейчас отключены.
Спустя 27 минут, 24 секунды (23.08.2012 - 10:39) Guest написал(а):
$page = !empty($_GET['page']) ? $_GET['page'] : 1;
$delete = !empty($_POST['delete']) ? $_POST['delete'] : array();
$posts = array();
$file = dirScan('data');
/////////////////////////////////////////////////////////////////
// SCRIPT
// СКРИПТ
/////////////////////////////////////////////////////////////////
if(!empty($_POST['ok']))
{
if(count($delete) > 0)
{
$posts = unserialize(file_get_contents('data/'. $page));
// Проходим циклом по массиву постов
for($i = 0; $i < count($delete); ++$i)
{
// Когда номер поста совпадет со значением отмеченного чекбокса,
// заменяем его внутренности
$posts[$delete[$i]]['name'] = '';
$posts[$delete[$i]]['mess'] = 'Удалено модератором';
}
file_put_contents('data/'. $page, serialize($posts));
// Перенаправляем браузер на текущую страницу
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] .'?page='. $page);
exit();
}
}
/////////////////////////////////////////////////////////////////
// VIEW
// ОТОБРАЖЕНИЕ
/////////////////////////////////////////////////////////////////
?>
<form action="" method="post">
<div style="padding-left:50px">
<?php echo pageMenu($page, $file); ?>
</div>
<?php
if(file_exists('data/'. $page))
{
$posts = unserialize(file_get_contents('data/'. $page));
foreach($posts as $id => $post)
{
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(bbTags(htmlspecialchars($post['mess'])));
?>
<div style="border:1px solid; width:70%; background-color:#66FFFF; min-height:100px; margin:5px; padding:5px">
<!-- Присвоим уникальные значения чекбоксам -->
<input type="checkbox" name="delete[]" value="<?php echo $id; ?>" />
<?php echo $date; ?> / <strong><?php echo $name; ?></strong>
<hr width="30%" align="left" />
<?php echo $mess; ?>
</div>
<?php
}
}
?>
<div style="padding-left:50px">
<?php echo pageMenu($page, $file); ?>
</div>
<input name="ok" type="submit" value="Удалить" onclick="return confirm('Подумай!')"/>
</form>
<?php
Вот часть кода, по учебнику с этого сайта)
Спустя 13 минут, 59 секунд (23.08.2012 - 10:53) Hello написал(а):
<!-- Присвоим уникальные значения чекбоксам -->
<input type="checkbox" name="delete[]" value="<?php echo $id; ?>" />
В $_POST['delete'] будет массив с отмеченными чекбоксами
Спустя 3 минуты, 51 секунда (23.08.2012 - 10:57) oleg_n написал(а):
В дополнение ответа Hello
С помощью foreach($posts as $id => $post), создается список с чекбоксами, значения которых потом попадают в $_POST['delete'] в виде массива, после нажатия кнопки "Удалить"
С помощью foreach($posts as $id => $post), создается список с чекбоксами, значения которых потом попадают в $_POST['delete'] в виде массива, после нажатия кнопки "Удалить"
Спустя 1 час, 19 минут, 24 секунды (23.08.2012 - 12:16) Guest написал(а):
то есть когда отмечаю допустим 3 чекбокса и жму кнопку удалить то значения уходят в $_POST['delete']
и когда идет цикл
for($i = 0; $i < count($delete); ++$i)
{
// Когда номер поста совпадет со значением отмеченного чекбокса,
// заменяем его внутренности
$posts[$delete[$i]]['name'] = '';
$posts[$delete[$i]]['mess'] = 'Удалено модератором';
}
$i < 3 будет увеличиваться $i пока не будет равна 3-м
Я так понял?
и когда идет цикл
for($i = 0; $i < count($delete); ++$i)
{
// Когда номер поста совпадет со значением отмеченного чекбокса,
// заменяем его внутренности
$posts[$delete[$i]]['name'] = '';
$posts[$delete[$i]]['mess'] = 'Удалено модератором';
}
$i < 3 будет увеличиваться $i пока не будет равна 3-м
Я так понял?
![wink.gif](http://phpforum.su/html/emoticons/wink.gif)
Спустя 8 минут, 45 секунд (23.08.2012 - 12:25) Guest написал(а):
то есть пока нету отмеченных чек боксов и не нажато удалить, то $delete будет равно пустому массиву, если мы отмечаем пару чек боксов и жмем удалить то уже будет не пустой массив он будет равен количеству чек боксов, и мы в цикле это количество прогоняем пока $i не будет равна количеству отмеченных чек боксов
какой ужс(
какой ужс(
Спустя 1 час, 35 минут, 12 секунд (23.08.2012 - 14:00) oleg_n написал(а):
Guest
Все верно
Почему же ужас? Таковы уж принципы программирования
Все верно
![cool.gif](http://phpforum.su/html/emoticons/cool.gif)
Почему же ужас? Таковы уж принципы программирования
![rolleyes.gif](http://phpforum.su/html/emoticons/rolleyes.gif)
Спустя 10 минут, 45 секунд (23.08.2012 - 14:11) Игорь_Vasinsky написал(а):
Цитата |
Почему же ужас? Таковы уж принципы программирования |
да ну))
а так?
Цитата |
$delete = !empty($_POST['delete']) ? $_POST['delete'] : null; |
Спустя 11 минут, 41 секунда (23.08.2012 - 14:23) Guest написал(а):
спасибо всем за помощь, вроде бы как разобрался.