Эта тема на forum.dklab.ru


Markus: Вывод элементов в несколько колонок.
Искал через поиск, но что то ничего не нашел.
Мне нужно вывести в несколько колонок картинки взяв из базы названия файлов. С этим проблем нет все выводится.
Но мне еще нужно чтобы под картинками в отдельной ячейке таблицы была радио кнопка с valua равным названию файла под которой находится кнопка. Это вообще возможно.
Массив с именами картинок создается из прочтения содержимого дирректории.
Надеюсь что объяснил понятно.
Заранее спасибо за любую помощь.
Ant:
Это вообще возможно.
Возможно.

Массив с именами картинок создается из прочтения содержимого дирректории.
Высчитываем, сколько ячеек в таблице (то есть, сколько столбцов). Сначала прогоняем вывод картинок (только один ряд), а затем следующий ряд радио-кнопок, но номер элемента массива берём как «текущий—номер-n» (где «n» — количество столбцов). Затем цикл повторяется.

Надеюсь, что так же неплохо объяснил.
Anonymous:
Ant:
Спасибо за то что откликнулись!
Я вообще ламер в пхп, только начинаю.
Не могли бы вы на примере каком нибудь объяснить?
А то то что Вы написали для меня пока темный лес!
Заранее признателен за помощь и разъяснение.
Markus:
Сорри верхний пост мой. Авторизоваться забыл.
Ant:
Я вообще ламер в пхп, только начинаю.
Ну, я PHP знаю не больше Вашего. Вот, набросал тут кое-что. Это мой первый, написанный с нуля скрипт на PHP (не судите меня строго (-: ):

<?php
// Сам массив.
$mas=array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15");

// Число столбцов.
$n1=3;

// Число строк.
$n2=count($mas)/$n1;

// Общий счётчик.
$n=0;

echo "<form><table cellpadding='10' border='1'>";

for ($i=0; $i<$n2;) {
echo "<tr>";
for ($k=0; $k<$n1;) {
// Прорисовываем ряд картинок (на самом деле, пока только их названия из массива).
echo "<td>".$mas[$n]."</td>";
$k++;
$n++;
}
echo "</tr><tr>";
for ($k=0; $k<$n1;) {
// Прорисовываем ряд радио-кнопок.
echo "<td><input name='form' type='radio' value='".$mas[$n-$n1+$k]."' onclick=\"alert('".$mas[$n-$n1+$k]."');\"></td>";
$k++;
}
echo "</tr>";
$i++;
}

echo "</table></form>";
?>

Markus:
Ant:
Ну, я PHP знаю не больше Вашего. Вот, набросал тут кое-что. Это мой первый, написанный с нуля скрипт на PHP (не судите меня строго (-: ):
Ну Вы явно скромничаете! Если Вы о себе так, то что же мне говорить о себе?
А вообще приятно общаться с человеком который не задается!
Сорри за офтоп.
Теперь по делу.
Я использовал foreach чтобы достать из массива. Видать не верно что так делал.
И потом это немножечко не то. Во первых неизвестно сколько в масиве будет элементов.
То есть если в массиве элементов меньше чем ячеек таблицы.
Например в Вашем примере 15 элементов, убираешь один и сразу возникает ошибка.
Ну насчет этого я сам подумаю. И потом. как бы это правильно сказать, я использую внешие файлы шаблонов.
А здесь получается весь код в файле скрипта. Может не так объяснил?
Ant:
Ну Вы явно скромничаете! Если Вы о себе так, то что же мне говорить о себе?
А вообще приятно общаться с человеком который не задается!
Да я серьёзно говорю — я PHP не знаю. Вот Perl — пожалуйста. (-:

Например в Вашем примере 15 элементов, убираешь один и сразу возникает ошибка.
Замените «$n2=count($mas)/$n1;» на «$n2=ceil(count($mas)/$n1);» (с округлением в большую сторону), а перед выводом элементов, проверяйте их существование.

На счёт всего остального — либо сами додумывайте, либо ждите, когда придут знающие люди — я Вам больше мало чем смогу помочь.
Anonymous:
И на этом спасибо!
Я думаю справлюсь.
Пошел делать!
html:

Да я серьёзно говорю — я PHP не знаю. Вот Perl — пожалуйста. (-:
Да между прочим все равно не плохо написал!!!
html:
Markus
Опять авторизоваться забыли, повнимательнее надо быть, а то драгоценный каунтер не икрементируется.
Ant:
Да между прочим все равно не плохо написал!!!
Спасибо. (-: Думаю, что начну изучение PHP, как только выйдет новая книга ДК. Многопрофильность в наше тяжёлое время — хороший плюс.
Markus:
html:
Опять авторизоваться забыли, повнимательнее надо быть,
Со мной такое вообще редко бывает. Буду стараться.
Ant:
Спасибо огромное! Это очень поучительный пример, во всяком случае так было со мной.
И очень помогло вот это "$mas[$n-$n1+$k]" .
Был я на форуме phpclub.ru, что они там какие то агрессивные!
Но правда и от туда кое что узнал.
Еще раз огромное спасибо!
Ant:
Markus:
Не за что.
Юрий Насретдинов:
Был я на форуме phpclub.ru, что они там какие то агрессивные!
Зато все там профи сидят, которые Вам и не снились :)
Евгений Галашин:

yUAC:
Сидят и бесятся... (-;

Markus:
У меня еще один вопрос возник. Можно я его здесь задам?
Есть у меня на странице несколько чекбосов с одинаковым именем.
Как передать скрипту значения тех чекбоксов которые отмечены и сделать так чтобы скрипту они пришли массивом?
Дмитрий Котеров:
<input type=checkbox name=check value=1>
<input type=checkbox name=check value=1>
<input type=checkbox name=check value=1>

Придет массив с ключами a, b, d. Можете использовать array_keys() для получения списка ключей.
Можно еще так сделать:

<input type=checkbox name=check[] value=a>
<input type=checkbox name=check[] value=b>
<input type=checkbox name=check[] value=d>

Тогда, наоборот, придет список тех чекбоксов, которые взведены. Но первый способ лучше, ибо концептуальнее, да и проверять, взведен ли чекбокс, легче:

if (@$_REQUEST['check']['a']) echo "взведен".
Markus:
Дмитрий Котеров:
Большое спасибо!
Без Вас бы ничего не вышло.
Единственное хочу сказать что и в том и вдругом варианте скрипту передается список только тех чекбоксов, которые взведены.
Хотя как я понял в первом варианте должен прийти весь список чекбоксов, а во втором только которые взведены.
Еще раз Большое спасибо!
Я еще Вам надоем! :)
Дмитрий Котеров:
В обоих случаях придут только взведенные. Но в первом можно схитрить:

<input type=hidden name=check value=0><input type=checkbox name=check value=1>
<input type=hidden name=check value=0><input type=checkbox name=check value=1>
<input type=hidden name=check value=0><input type=checkbox name=check value=1>

Тогда придет 0, если не взведен, и 1, если взведен (вернее, во втором случае придет и 0, и 1, но 1 позже затрет 0).

В варианте с check[] так не получится — ибо затирать нечего. Я потому и сказал, что первый способ концептуальнее.
Markus:
Дмитрий Котеров:
Ну меня больше устраивает второй вариант так как в value записывается свое знаечение.
Дмитрий Котеров:
А Вы его не в value записывайте, а в ключи check — внутрь квадратных скобок.
Markus:
Дмитрий Котеров:
Пока не совсем понял.
Но попробую. Лучший опыт, ИМХО, ошибиться, найти свою ошибку и понять почему эта ошибка приключилась.

Эта тема на forum.dklab.ru