|
|
|
| из базы данных приходит строка такого вида
$text="
1|город спит пахнут улицы летним дождем|0|44|32|- 2|Озаренный светом звезды по имени солнце|0|44|32|- 3|ровно 42 минуты под землей туда-сюда|0|н|32|-";
//задача получить таблицу.
//Делаю вот что:
print ("<table border='1' width='240'>
<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr><tr>");
$cart=str_replace("|","</td><td>", $text);
$sp_scars=array ( "\t", "\n", "\r","\0", "\x0B");
$dest=str_replace($sp_scars,"</td></tr><tr><td>",$cart);
print $dest;
print ("</tr></table>");
|
Проблема не получается конец строки и начало т.е не хватает <td> в начале каждой строки и </td></tr> в конце строк | |
|
|
|
|
|
|
|
для: Nextia
(22.03.2011 в 07:07)
| | А чем строки разделены в $text? Табуляцией или двумя пробелами? | |
|
|
|
|
|
|
|
для: cheops
(22.03.2011 в 10:08)
| | там \n и пробел за ним потом начало следующей строки
попробовала изменить так
print ("<table border='1' width='240'>
<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr><tr><td>");
$cart=str_replace('|','</td><td>', $text);
$sp_scars=array ( "\t", "\n", "\r","\0", "\x0B");
$dest=str_replace($sp_scars,'</tr><tr><td>',$cart);
print $dest;
print ("</td></tr></table>");
|
строки встали на места, но появилась лишняя пустая строка в конце таблицы | |
|
|
|
|
|
|
|
для: Nextia
(23.03.2011 в 01:49)
| | >строки встали на места, но появилась лишняя пустая строка в конце таблицы
Попробуйте убрать признаки конеца строки "\0" "\x0B" | |
|
|
|
|
|
|
|
для: cheops
(23.03.2011 в 12:48)
| | в общем решение получилось вот такое:
$sp_scars=array ("\t", "\n", "\r","\0", "\x0B");
$text2=str_replace($sp_scars,"|",$text1);
$text=explode ("|",$text2,30);
$karta=array_chunk($text, 6);
print("<table border='1' cellspacing='1' celpadding='1' width='240' align='center'>\n");
foreach($karta as $stroka){
print ("<tr>\n");
foreach ($stroka as $item) {
print "<td>".$item. "</td>\n"; }
print "</tr>\n"; }
print "</table>\n";
|
выяснилось, что массив всегда из 30 элементов (об этом сказали в самый последний момент), поэтому задача упростилась :-)
А теперь возник вопрос как на каждый шестой элемент массива перед печатью таблицы "навесить" <select>? Где значение элемента будет выбранной опцией(selected) значения этих элементов всегда одинаковые 0 или 1 | |
|
|
|
|
|
|
|
для: Nextia
(24.03.2011 в 03:33)
| | Хм... может просто в цикле прогнать массив, запомнив индекс каждого шестого элемента, а в сам элемент вставить якорь (если, конечно, select создается для якорения)? | |
|
|
|
|
|
|
|
для: cheops
(24.03.2011 в 07:43)
| | Возможно, не всё досконально объяснила :-)
$text двумерный массив.
вот для этих элементов
$text[1][5]
$text[1][11]
$text[1][17]
$text[1][23]
$text[1][29]
надо навесить select . проверить их значение (т.е 0 или 1).
т.е если равно 0 то апримерно так:
<select name="$text[1]" size="1">
<option value=".$text[1][5]." "selected="selected"">$text[1][5]</option>
<option value="1">1</option>
</select>
Надеюсь понятно объяснила :-) | |
|
|
|
|
|
|
|
для: Nextia
(24.03.2011 в 09:10)
| | Правильно ли я понимаю, что значения следующих элементов либо 0, либо 1?
$text[1][5]
$text[1][11]
$text[1][17]
$text[1][23]
$text[1][29]
| И в конечном итоге у нас должно получиться 5 выпадающих списка? | |
|
|
|
|
|
|
|
для: cheops
(24.03.2011 в 10:13)
| | >Правильно ли я понимаю, что значения следующих элементов либо 0, либо 1?
Моё решение на данный момент очень "грязное":
// продолжаюся мучения двумерного массива
$text=explode ("|",$text2,30);
$karta=array_chunk($text, 6);
if (($karta[1][5])==0)
{$new_value1="<select name='".($karta[1])."' size='1'><option value='".($karta[1][5])."' selected='selected'>Не включено</option><option value='1'>Включено</option></select>";
$karta[1][5]=$new_value1; }
else
// print("{$karta[1][5] }");
{$new_value1="<select name='".($karta[1])."' size='1'><option value='".($karta[1][5])."' selected='selected'>Включено</option><option value='0'>Не включено</option></select>";
$karta[1][5]=$new_value1;}
//для второй строки
if (($karta[2][5])==0)
{$new_value2="<select name='".($karta[2])."' size='1'><option value='".($karta[2][5])."' selected='selected'>Не включено</option><option value='1'>Включено</option></select>";
$karta[2][5]=$new_value2; }
else
// print("{$karta[2][5] }");
{$new_value2="<select name='".($karta[2])."' size='1'><option value='".($karta[2][5])."' selected='selected'>Включено</option><option value='0'>Не включено</option></select>";
$karta[2][5]=$new_value2;}
//для третьей строки
if (($karta[3][5])==0)
{$new_value="<select name='".($karta[3])."' size='1'><option value='".($karta[3][5])."' selected='selected'>Не включено</option><option value='1'>Включено</option></select>";
$karta[3][5]=$new_value; }
else
// print("{$karta[3][5] }");
{$new_value="<select name='".($karta[3])."' size='1'><option value='".($karta[3][5])."' selected='selected'>Включено</option><option value='0'>Не включено</option></select>";
$karta[3][5]=$new_value;}
//4 строка
if (($karta[4][5])==0)
{$new_value4="<select name='".($karta[4])."' size='1'><option value='".($karta[4][5])."' selected='selected'>Не включено</option><option value='1'>Включено</option></select>";
$karta[4][5]=$new_value4; }
else
// print("{$karta[4][5] }");
{$new_value4="<select name='".($karta[4])."' size='1'><option value='".($karta[4][5])."' selected='selected'>Включено</option><option value='0'>Не включено</option></select>";
$karta[4][5]=$new_value4;}
//5 строка
if (($karta[0][5])==0)
{$new_value5="<select name='".($karta[0])."' size='1'><option value='".($karta[0][5])."' selected='selected'>Не включено</option><option value='1'>Включено</option></select>";
$karta[0][5]=$new_value5; }
else
// print("{$karta[4][5] }");
{$new_value5="<select name='".($karta[0])."' size='1'><option value='".($karta[0][5])."' selected='selected'>Включено</option><option value='0'>Не включено</option></select>";
$karta[0][5]=$new_value5;}
print("<table border='0' cellspacing='1' celpadding='1' width='240' align='center'>\n");
foreach($karta as $stroka){
print ("<tr>\n");
foreach ($stroka as $item) {
print "<td class='su'>".$item. "</td>\n"; }
print "</tr>\n"; }
print "</table>\n";
|
| |
|
|
|
|
|
|
|
для: Nextia
(25.03.2011 в 01:46)
| | Давайте следующий участок
<?php
...
if (($karta[1][5])==0)
...
$karta[0][5]=$new_value5;}
...
?>
|
Переработаем с участием цикла и функции
<?php
for($i = 0; $i < 6; $i++)
{
$new_value[$i] = "<select name='".($karta[$i])."' size='1'>";
$new_value[$i] .= "<option value='0' ".selected($karta[$i][5]==0).">Не включено</option>";
$new_value[$i] .= "<option value='1' ".selected($karta[$i][5]==1).">Включено</option>";
$new_value[$i] .= "</select>";
$karta[$i][5]=$new_value1;
}
function selected($flag)
{
if($flag) return "selected='selected'";
else return "";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(25.03.2011 в 08:52)
| | Спасибо огромное.
Сформировалось всё как желалось
[поправлено модератором: новая ветка обсуждения выделена в тему Свернуть код для работы с массивом в цикл] | |
|
|
|