Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Генерация таблиц


Автор: Хрипа 26.2.2007, 10:47
Помогите найти ОШИБКУ В КОДЕ!
Код

function gen_table($bind,$attributs,$names)
{
    print "<table $attributs><tr>";
    for($i=0;$i<sizeof($names);$i++)
    {
            $t .= "<td>$names[$i]</td>";
            $al .= "<td>|</td>";
    }
    print $t."</tr>";
    While($lfx_rows = mysql_fetch_row($bind))
    {
            print "<tr>";
            $ex = explode("|",$al);
            for($tbl=0;tbl<sizeof($lfx_rows);$tbl++)
            {
                    $print_text = ereg_replace("|",$lfx_rows[$tbl],$ex[$tbl]);
                    print $print_text;
            }
            print "</tr>";

    }
    print "</table>";
}

Автор: Triangle 26.2.2007, 10:51
пожалуйста опиши подробней :
какие данные функция принимает
и что должна выводить

Добавлено @ 10:58 
если этого не зать то нужет третий глаз 
user posted image

Автор: KirSSS 26.2.2007, 11:37
Очень плохо читается код..
Что принимает понятно, а где ошибка???
P.S. Вместо for используй foreach для листания массива

P.P.S
Ты делишь строку на массив. используя делиметр "|" здесь:
Код

$ex = explode("|",$al);

А потом пытаешься заменить этит знак ("|"). Но его уже нет..
Если я прав, то код должен быть таков:
Код

function gen_table($bind,$attributs,$names)
{
    print "<table $attributs><tr>";
    for($i=0;$i<sizeof($names);$i++)
    {
            $t .= "<td>$names[$i]</td>";
            $al[$i] = "<td>|</td>";
    }
    print $t."</tr>";
    While($lfx_rows = mysql_fetch_row($bind))
    {
            print "<tr>";
            for($tbl=0;tbl<sizeof($lfx_rows);$tbl++)
            {
                    $print_text = ereg_replace("|",$lfx_rows[$tbl],$al[$tbl]);
                    print $print_text;
            }
            print "</tr>";

    }
    print "</table>";
}

Если не так, извеняй - недостаточно информации

Автор: boombick 26.2.2007, 13:23
Немного не по теме:
Лучше использовать str_replace вместо регулярок для простых замен. Ибо экономичней в плане ресурсов получится

Автор: KirSSS 26.2.2007, 14:56
Код

function gen_table($bind,$attributs,$names)
{
    print "<table $attributs><tr>";
    $t = "";
    foreach($names as $val)
    {
            $t .= "<td>$val</td>";
    }
    print $t."</tr>";
    While($lfx_rows = mysql_fetch_array($bind))
    {
            print "<tr>";
            foreach($lfx_rows as $val)
            {
                    print "<td>$val</td>";
            }
            print "</tr>";

    }
    print "</table>";
}

А зачем вообще заполнять целый массив однородными элементами "<td>|</td>"?? Вроде так должно быть.. 

Автор: Хрипа 27.2.2007, 00:46
Не важно какие данные передоются
1. Передаётся верхняя часть таблици nemes
2. выборка с базы и подставления в таблицу значений под эти немес
Функция предназнчина что бы каждый раз не генерить таблицу ) 
Удобно при создании больших сайтов

Добавлено @ 00:53 
KirSSS
Спасибо дружище ))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)