Привет всем! При реализации одной системы столкнулся с проблемой, описываю суть. Есть таблица table_data и в неё есть поля : Код (Text): id date content 1 2013-02-09 Контент 2 2013-02-08 Контент 3 2013-02-07 Контент 4 2013-02-06 Контент 5 2013-02-05 Контент 6 2013-02-04 Контент Есть html таблица : Код (Text): <table> <tr> <td> Дата </td> <td> Контент </td> </tr> <tr> <td> 2013-02-09 </td> <td> </td> </tr> <tr> <td> 2013-02-08 </td> <td> </td> </tr> и т.д </table> Суть реализации такова, надо взять массив из базы, и пройтись по таблице сравнивая даты, если есть совпадение то вставлять туда определённый контент этой даты, а если нет совпадений то ставиться input. Таблица также генерируется автоматически, она получается что-то типа календаря. У меня получается так : Код (Text): $array_content = берём все записи из таблицы foreach($array_content as $content) { if($content['date'] == дата в ячейке таблицы) { echo 'Контент'; } else { echo '<input value="">'; } } Так как он пробегается по всему массиу само собой у меня в ячейке наберается куча инпутов, а мне нужно чтобы выводился только один input.
Этот вывод ты сделал в одной ячейке? Надо в foreach строить твою таблицу Код (Text): foreach($array_content as $content) { if($content['date'] == дата в ячейке таблицы) { echo '<td>Контент</td>'; } else { echo '<td><input value=""></td>'; } }
Ну так он также настрогает ещё <td><input ></td>. К сожалению это не вариант. Добавлено спустя 6 минут 59 секунд: Он прогоняет ведь по всему полученому массиву, например если записей всего 6, то он выдаст в else 6 <input> в каждой ячейке td.
тут наверное нужен полный код, а то как-то непонятно. вот это echo 'Контент'; куда выводится? в ячейку? если да, то как определяется ячейка?
Получается есть два массива Первый массив это с датами календаря Код (Text): Первый ключ - Номер недели Ключ - День недели Значение - Сама дата $arrayDate = ( 1 = array( 1=>'2013-02-04', 2=>'2013-02-05', 3=>'2013-02-06', 4=>'2013-02-07', 5=>'2013-02-08', 6=>'2013-02-09', 7=>'2013-02-10',) ) и т.д Второй массив это выборка из баз данных я уже её показывал Код (Text): id date content 1 2013-02-09 Контент 2 2013-02-08 Контент 3 2013-02-07 Контент 4 2013-02-06 Контент 5 2013-02-05 Контент 6 2013-02-04 Контент Формируется таблица Код (Text): <table> <? foreach ($arrayDate as $numWeek): ?> <tr> <? foreach($numWeek as $number_day=>$date_day): ?> <td> <? if(!empty($date_day)): ?> Так вот здесь и должна проходить проверка на соответсвие дат с базой данных и если его нет то вставка одного импута, если есть то контент который соответсвует этой дате. Контент выводиться без проблем, а вот инпут прогоняет столько раз сколько находит не соотвествий это и логичко при конструкции if else. Может как-то по другому надо сделать. <? endif ?> </td> <? endforeach ?> </tr> </table> Добавлено спустя 29 секунд: Уже день на этот вопрос убил. Может у кого есть мысли.
Тебе какие мысли нужны, как отобразить календарь или как обойтись одним инпутом для ввода 30 значений? Задай вопрос кратко и по существу.
За тебя всегда кто-то решает? Календарь это непрерывный набор дат в заданном диапазоне. Напрашивается цикл for. События месяца это считанный с базы набор пар дата => описание. Отлично подошел бы ассоциативный массив. Крутишь цикл дат, выводишь ячейки календаря, делая по дороге if (isset($event[$data])) ... Проще некуда.
если ещё не решил, то проблема как раз в том, что в самом внутри идёт ещё один цикл по данным из базы. можно вынести его до всех циклов и сделать массив вот такой и потом через isset проверять, если ли такая дата. если даты нет, то ставить требуемый инпут. Проверка будет всего одна (не через цикл) и итпут в ячейке будет всего один.