|
|
|
| Здравствуйте.
Столкнулся с вот такой проблемой:
допустим есть код
<?php
$cb1 =true;
$cb2 =true;
$cb3 =true;
echo "
<table border=1>
<tr>
<td> 1</td><td> ".$cb1."</td>
</tr>
<tr>
<td> 2</td><td> ".$cb2."</td>
</tr>
<tr>
<td> 3</td><td> ".$cb3."</td>
</tr>
</table>";
?>
|
есть необходимость при $cb1 =false; сместить данные из $cb2 и $cb3 на одну строку выше.
Рисовать в цикле <tr><td> </td><td> ".$cb."</td></tr> тоже не выход потому что работаю с word, а там сам черт ногу сломит(.
очень надеюсь на вашу помощь. | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 05:30)
| |
<?php
$cb1 =true;
$cb2 =true;
$cb3 =true;
?>
<table border=1>
<?php
if($cb1) {
?>
<tr>
<td> 1</td><td><?php echo $cb1; ?></td>
</tr>
<?php
}
?>
<tr>
<td> 2</td><td><?php echo $cb2; ?></td>
</tr>
<tr>
<td> 3</td><td><?php echo $cb3; ?></td>
</tr>
</table>"
|
| |
|
|
|
|
|
|
|
для: sim5
(17.08.2009 в 09:31)
| | Спасибо!
Но это немного не то. Саму таблицу нужно оставить так как есть, смещать нужно только данные из переменных.
Я думаю мне нужно что-то вроде вот такова
<?php
$cb1 =true;
$cb2 =true;
$cb3 =true;
//здесь нужно занести все переменные равные true в массив. а затем выводить их как-нибудь $cb[$key]
echo "
<table border=1>
<tr>
<td> 1</td><td> ".$cb[$key]."</td>
</tr>
<tr>
<td> 2</td><td> ".$cb[$key]."</td>
</tr>
<tr>
<td> 3</td><td> ".$cb[$key]."</td>
</tr>
</table>";
?>
|
но вот только как такое реализовать ума не приложу.. 4й дня с этим бьюсь | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 14:04)
| | Тогда объясните, что значит "сместить"? Если первая переменная не равна истине, то не выводится первая переменная, ее занимает вторая, вторую третья.... Что должно занимать третью строку в этом случае, если в таблице должно оставаться три строки? | |
|
|
|
|
|
|
|
для: sim5
(17.08.2009 в 14:10)
| | в таком случае третья строка должна остатся пустой | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 14:18)
| | А что вам даст пустая строка таблицы? | |
|
|
|
|
|
|
|
для: Рома
(17.08.2009 в 14:22)
| | что даст ?.. ничего не даст
просто есть утвержденная форма.. которую я к своему большому сожалению не могу изменять по своему усмотрению... | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 14:26)
| | сорри. не досмотрел | |
|
|
|
|
|
|
|
для: Рома
(17.08.2009 в 14:27)
| | Да в примере действительно не форма. Это условный пример, просто мне хотелось именно разобраться, возможно ли такое и если да то как.
реальный код я не хотел здесь выкладывать потому как писал выше что работаю с word (точнее с экспортом неких данных в него) а там как вы знаете очень много мусора и код почти не читаемый.
Простите если ввел кого-то в заблуждение. | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 14:33)
| | Форма ни как не должна быть, так как в случае перемещения переменных, нужно перемещать и элементы формы, иначе вы можете получать от одного и того же элемента формы разные данные. Но коли вам нужно оставить третью строку пустой, то:
<?
$cb1 = 0;
$cb2 = 12;
$cb3 = 24;
$td1 = $cb1 ? $cb1 : $cb2;
$td2 = $cb1 ? $cb2 : $cb3;
$td3 = $cb1 ? $cb3 : " ";
echo "
<table border=1>
<tr>
<td>1</td><td>".$td1."</td>
</tr>
<tr>
<td>2</td><td>".$td2."</td>
</tr>
<tr>
<td>3</td><td>".$td3."</td>
</tr>
</table>";
|
| |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 14:04)
| |
<?php
if ($cb1 == true) $cb[] = $cb1;
if ($cb2 == true) $cb[] = $cb2;
if ($cb3 == true) $cb[] = $cb3;
?>
<table border=1>
<tr>
<td> 1</td><td> <?=$cb[0]?></td>
</tr>
<tr>
<td> 2</td><td><? if isset($cb[1]) echo $cb[1]; ?></td>
</tr>
<tr>
<td> 3</td><td><? if isset($cb[2]) echo $cb[2]; ?></td>
</tr>
</table>
|
| |
|
|
|
|
|
|
|
для: neadekvat
(17.08.2009 в 14:18)
| | или я не правильно понял сути вопроса или же:
ну так а почему рисовать в цикле черт ногу сломит?
в данном случает ведь проще получится с массивом:
1. собирате массив $cb
2. $n - это макс значение ваших 1,2,3
3.
<table>
<?php
$i=1;
foreach($cb){
echo'<tr><td>'.$i.'</td><td>'.$val.'</td></tr>';
$i++;
}
for($j=$i;$j<=$n;$j++) echo '<tr><td>'.$j.'</td><td> </td></tr>'
?>
</table>
|
| |
|
|
|
|
|
|
|
для: ride
(17.08.2009 в 16:12)
| | Давайте я попробую еще раз все объяснить ) с самого начало и расстановкой .
В общем на сайте есть страничка "генерация счета"
она содержит 16 полей и 5 "чекбоксов" (на данном этапе (в дальнейшем их чекбоксов может быть больше или же меньше))
каждый из этих чекбоксов соответствует некому платежу .... т.е. человек может отметить либо 1 из них любо 2 либо все 5 любо еще как угодно (за исключением не отметить ничего)
дальше я генерирую word - овский файл вот таким образом
<?
$fp = fopen("nu_$filename.doc", 'w+');
$str->_codepage = 0x04E3;
$str = "<html xmlns:v=urn:schemas-microsoft-com:vml
xmlns:o=urn:schemas-microsoft-com:office:office
xmlns:w=urn:schemas-microsoft-com:office:word
// дальше начинается таблица ПРИМЕРНО вот такова вида
<table>
<tr>
<td>Наменование платежа</td><td>сумма </td>
</tr>
<tr>
<td> Вступительный членский взнос</td><td> $_POST[chb1]</td>
</tr>
<tr>
<td>Ежегодный членский взнос</td><td> $_POST[chb2]</td>
</tr>
<tr>
<td> Свидетельство о повышении квалификации</td><td> $_POST[chb3]</td>
</tr>
<tr>
<td> Членский билет</td><td> $_POST[chb4]</td>
</tr>
<tr>
<td>Взнос для юридического лиц</td><td> $_POST[chb5]</td>
</tr>
</table>
";
fwrite($fp, $str);
fclose($fp);
?>
|
в данном примере отмечены ВСЕ 5 чекбокса и таблица выглядит правильно
------------------------------------------------------------------------------------
|наименование платежа | сумма |
------------------------------------------------------------------------------------
| Вступительный членский взнос | 123 |
------------------------------------------------------------------------------------
| Ежегодный членский взнос | 333 |
------------------------------------------------------------------------------------
| Свидетельство о повышении квалификации | 423 |
------------------------------------------------------------------------------------
| Членский билет | 345 |
------------------------------------------------------------------------------------
| Взнос для юридического лиц | 600 |
------------------------------------------------------------------------------------
А теперь человек НЕ отметил чекбокс 1 и 3 и таблица будет выглядеть вот так
------------------------------------------------------------------------------------
|наименование платежа | сумма |
------------------------------------------------------------------------------------
| | |
------------------------------------------------------------------------------------
| Ежегодный членский взнос | 333 |
------------------------------------------------------------------------------------
| | |
------------------------------------------------------------------------------------
| Членский билет | 345 |
------------------------------------------------------------------------------------
| Взнос для юридического лиц | 600 |
------------------------------------------------------------------------------------
А надо чтобы она выглядела вот так
------------------------------------------------------------------------------------
|наименование платежа | сумма |
------------------------------------------------------------------------------------
| Ежегодный членский взнос | 333 |
------------------------------------------------------------------------------------
| Членский билет | 345 |
------------------------------------------------------------------------------------
| Взнос для юридического лиц | 600 |
------------------------------------------------------------------------------------
| | |
------------------------------------------------------------------------------------
| | |
------------------------------------------------------------------------------------ | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 18:17)
| | ну вот смотрите
вот ваши чекбоксы
<input type='checkbox' value='Вступительный членский взнос' name='chb[]'>
<input type='checkbox' value='Ежегодный членский взнос' name='chb[]'>
<input type='checkbox' value='Свидетельство о повышении квалификации' name='chb[]'>
<input type='checkbox' value='Членский билет' name='chb[]'>
<input type='checkbox' value='Взнос для юридического лиц' name='chb[]'>
<?php
$str='<html xmlns:v=urn:schemas-microsoft-com:vml
xmlns:o=urn:schemas-microsoft-com:office:office
xmlns:w=urn:schemas-microsoft-com:office:word
<table>';
$n=5;
$i=1;
$cb=$_POST['chb'];
foreach($cb){
$str.='<tr><td>'.$i.'</td><td>'.$val.'</td></tr>';
$i++;
}
for($j=$i;$j<=$n;$j++) $str.= '<tr><td>'.$j.'</td><td> </td></tr>'
$str.='</table>';
?>
|
Разве рез-т не такой как надо?
upd
упс, рез-т немного не такой как нужен, но, впринципе, близок
покажите свою форму. | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 18:17)
| | Вам не смещать поля надо, а выводить только те, которые отметил пользователь, вот и вся арифметика. | |
|
|
|
|
|
|
|
для: sim5
(18.08.2009 в 04:25)
| | да ! я с вами согласен так было бы проще и удобнее, но заказщик простит сделать так как я описал выше.
если ничего не получится придется так и сделать ( | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 18:17)
| | >дальше я генерирую word - овский файл вот таким образом
Где код, который выполняет эту генерацию? | |
|
|
|
|
 127.2 Кб |
|
|
для: Trianon
(18.08.2009 в 10:12)
| | вот он, в приложении
$_POST[chb1] это и есть мои чекбоксы | |
|
|
|
|
|
|
|
для: predator
(19.08.2009 в 08:27)
| | Ок.
Где код, которые генерировал тело строки $str в приложенном скрипте?
Собственно, где - не так уж интересно.
Но изменения нужно вносить именно в него. | |
|
|
|
|
 4.2 Кб |
|
|
для: Trianon
(19.08.2009 в 08:54)
| | наверное вот так... | |
|
|
|
|
|
|
|
для: predator
(19.08.2009 в 09:33)
| |
<tr>
<td width=25%><b><NOBR>Ежегодный членский взнос (5 МРП)</b></td>
<td>  <INPUT TYPE=checkbox NAME=chb2 VALUE=".$cb2." ".$CHECKEDchb2."> ".$cb2." тенге<br></td>
</tr>
|
Очевидно, каждую из этих групп нужно ставить под условие существования переменной $CHECKEDchb | |
|
|
|
|
|
|
|
для: Trianon
(19.08.2009 в 09:41)
| | Гениально ! ))
Сейчас попробую!
похоже опять я все усложнил | |
|
|
|
|
|
|
|
для: predator
(19.08.2009 в 09:57)
| | Да все отлично работает ! )))
огромное спасибо всем кто уделил свое драгоценное время
а вот код который получился в итоге
<?php
$CHECKEDchb1 = "CHECKED";
// $CHECKEDchb2 = "CHECKED";
$CHECKEDchb3 = "CHECKED";
$CHECKEDchb4 = "CHECKED";
$CHECKEDchb5 = "CHECKED";
if ($CHECKEDchb1)
{
$echo_nam_plat[] = "Вступительный членский взноc"; $echo_sum[] = "$cb1";
}
if ($CHECKEDchb2)
{
$echo_nam_plat[] = "Ежегодный членский взнос"; $echo_sum[] = "$cb2";
}
if ($CHECKEDchb3)
{
$echo_nam_plat[] = "Свидетельство о повышении квалификации"; $echo_sum[] = "$cb3";
}
if ($CHECKEDchb4)
{
$echo_nam_plat[] = "Членский билет"; $echo_sum[] = "$cb4";
}
if ($CHECKEDchb5)
{
$echo_nam_plat[] = "Взнос для юридического лица"; $echo_sum[] = "$cb5";
}
echo "
<table border=1>
<tr>
<td> 1</td><td> ".$echo_nam_plat[0] ."</td> <td> ".$echo_sum[0] ."</td>
</tr>
<tr>
<td> 2</td><td> ".$echo_nam_plat[1]."</td> <td> ".$echo_sum[1] ."</td>
</tr>
<tr>
<td> 3</td><td> ".$echo_nam_plat[2]."</td> <td> ".$echo_sum[2] ."</td>
</tr>
<tr>
<td> 4</td><td> ".$echo_nam_plat[3]."</td> <td> ".$echo_sum[3] ."</td>
</tr>
<tr>
<td> 5</td><td> ".$echo_nam_plat[4]."</td> <td> ".$echo_sum[4] ."</td>
</tr>
</table>";
?>
|
может кому-нибудь пригодится. | |
|
|
|
|
|
|
|
для: predator
(19.08.2009 в 16:36)
| | Навряд ли пригодится, много лишнего. Кстати, что значит "CHECKED"? Кто и исходя из каких условий это устанавливает? | |
|
|
|
|
|
|
|
для: sim5
(19.08.2009 в 16:49)
| | CHECKED нужен для того чтобы в случае возникновения ошибок (когда пользователя возвращает снова на форму) отмеченные ранее чекбоксы оставались отмеченными
<INPUT TYPE=checkbox NAME=chb3 CHECKED> | |
|
|
|
|
|
|
|
для: predator
(19.08.2009 в 16:58)
| | И где же проверка того, что пользователь отметил чекбоксы? Ваш код годится, если полей 3-4, на более он слишком громоздок. | |
|
|
|
|
|
|
|
для: sim5
(19.08.2009 в 17:01)
| | на счет того что громоздок я согласен, но к сожалению по другому пока не умею.
А проверка есть, просто здесь я ее не показал.
if (!empty($_POST[chb1]))
{
$CHECKEDchb1 = "CHECKED";
}
|
и еще на счет громоздкости. Как сделать менее громоздко ? К примеру вот тот код который я выложил и наивно полагал что он кому-нибудь может пригодится. | |
|
|
|
|
|
|
|
для: predator
(19.08.2009 в 17:09)
| | if ($_POST[chb1]) $CHECKEDchb1 = "CHECKED";
Вот у вас громозкость и начинается уже с проверки, то есть, проверку выше (исправленное), можно не проводить отдельно, так как это "лишний посредник", а чтобы сократить и написать компактный код, вы должны знать, что элементы формы, это массив, и тогда...... | |
|
|
|
|
|
|
|
для: sim5
(19.08.2009 в 17:36)
| | Спасибо
все проверки я поправлю так как вы показали.
А на счет "элементы формы, это массив" подумаю и постараюсь понять что вы имели ввиду. | |
|
|
|
|
|
|
|
для: predator
(17.08.2009 в 14:04)
| | У вас не получится "сместить", хотя бы по той причине, что таблица не динамическая, а статическая. Sim5 предложил же вам хороший вариант. Другими словами, конечной переменной вывода, должна быть не просто переменная, а переменная заключенная в ряд таблицы. Сам ряд и есть переменная - если обозначена, значит выводить ряд, если пуста... | |
|
|
|