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


Автор: kamat0z 22.11.2006, 14:03
У меня проблема. Написал скрипт, который позволяет создавать таблицу и записывать ее в файл, но почему-то он записывает только тэги, без введенной информации. Помогите разобраться

Код

<?php
print"
<table>
<form name=vvod>
<tr>
<td>Кол-во столбцов: </td>
<td><input name='td' type='text'></td></tr>
<tr>
<td>Кол-во строк: </td>
<td><input name='tr' type='text'></td></tr>
<tr>
<td colspan='2'>
<input type='submit' value='Создать'></td></tr></table><br><br><br>";


echo '<table border=1><form name=table>';
for($i=0;$i<$tr;$i++){
echo '<tr>';
for($j=0;$j<$td;$j++)
{
echo '<td><input type="text" name="tdname_'.$i.'_'.$j.'" /></td>';
}
echo '</tr>';
}
echo '</table>';
echo '<input type="submit" value="Сохранить"></form>';

for($i=0;$i<$tr;$i++){
$str='<tr>';
for($j=0;$j<$td;$j++)
{
$str='<td>'.$_REQUEST['tdname_'.$i.'_'.$j].'</td>';
}
$str='</tr>';
}

$fo = @fopen("some.dat","a");
$string = "<table>$str</table>";
fputs($fo,$string);
fclose($fo);
die("Таблица создана!");

?>


Автор: szz 22.11.2006, 14:06
Покажи в теге code=php, а то неинтересно смотреть.

Автор: kamat0z 22.11.2006, 21:03
Ну, а что дальше?
Мне вопрос помочь решить нужно, а не выделением по цвету кода заниматься

Автор: Andres2703 22.11.2006, 21:31
а где у тебя инфа то вписывается?

Автор: kamat0z 22.11.2006, 22:27
Все , всем спасибо, разобрался сам smile

Автор: szz 22.11.2006, 22:35
Попробуй так. Я не протестировал, но должно работать. В комментах указал твои огрехи.
  Итабы внутри if и for, а то иначе нечитабельно.
Код

<?
// ставлю экшн для уверенности, и метод пост!
print "
<table>
<form name=vvod action='".basename(__FILE__)."' method=post>
<tr>
<td>Кол-во столбцов: </td>
<td><input name='td' type='text'></td></tr>
<tr>
<td>Кол-во строк: </td>
<td><input name='tr' type='text'></td></tr>
<tr>
<td colspan='2'>
<input type='submit' value='Создать'></td></tr></table>
<br><br><br>";

// не выполняем, если не установлена переменная td
if(isset($_REQUEST['td'])){
    // отправляю переменную saveit чтоб мы знали что следующим шагом сохранять надо!
    // да и td и tr - а то как мы в сделующем шаге будем знать их?
    echo '<table border=1><form name=table 
            action="'.basename(__FILE__).'?saveit=yes&tr='.$_REQUEST['tr'].'&td='.$_REQUEST['td'].'"
            method=post>';
    // не открытые переменные, а request массив! А то не везде работать будет.
    for($i=0;$i<$_REQUEST['tr'];$i++){
        echo '<tr>';
            for($j=0;$j<$_REQUEST['td'];$j++)
            {
                echo '<td><input type="text" name="tdname_'.$i.'_'.$j.'" /></td>';
            }
        echo '</tr>';
    }
    echo '</table>';
    echo '<input type="submit" value="Сохранить"></form>';
}    
// не выполняем, если не установлена переменная saveit
if(isset($_REQUEST['saveit'])){
    for($i=0;$i<$_REQUEST['tr'];$i++){
        $str='<tr>';
            for($j=0;$j<$_REQUEST['td'];$j++)
            {
                $str='<td>'.$_REQUEST['tdname_'.$i.'_'.$j].'</td>';
            }
        $str='</tr>';
    }
    $fo = @fopen("some.dat","a");
    $string = "<table>$str</table>";
    fputs($fo,$string);
    fclose($fo);
    // die импользуем только для умирания от ошибки! А тут надо echo!
    echo "Таблица создана!";
}
?>



Добавлено @ 22:36 
Да, и в чем была проблема?

Автор: kamat0z 23.11.2006, 11:13
szz, проблема была в том, что скрипт не передавал значение полей tr и td во второй цикл и соответственно цикл нарушался и не записывал в файл нужную информацию.

Твой вариант, почему-то не хочет в файл писать в файл smile

Я решил этот вопрос записыванием значений tr и td во временный файл. Потом данные из него считываются и все работает smile
Но конечно было бы лучше, если бы это нормально передавалось внутри файла smile
Буду разбираться в вашем способе, потому что вроде все грамотно написано, но надпись таблица создана не выводится и в файл запись не производится

Автор: szz 23.11.2006, 11:53
Цитата

Я решил этот вопрос записыванием значений tr и td во временный файл. 

  Очень плохо! Передавай их во второй фотме! Как я это сделал:
Код

    echo '<table border=1><form name=table 
            action="'.basename(__FILE__).'?saveit=yes&tr='.$_REQUEST['tr'].'&td='.$_REQUEST['td'].'"
            method=post>';


Добавлено @ 11:59 
А не сохранется, потому что кто-то забыл первую форму закрыть!


Цитата

<input type='submit' value='Создать'></td></tr></table><br><br><br>";

  Почему после "... value='Создать'>" нету </form>?

Автор: kamat0z 23.11.2006, 12:53
Цитата

  Почему после "... value='Создать'>" нету </form>? 

ой, ошибочка вышла smile


szz, огромное спасибо !!! добавил бы тебе плюс, да немогу smile

А чем хуже эти переменные в файл записывать?

Автор: szz 23.11.2006, 12:57
А тем, что если несколько человек одновременно обращаются к скрипту, один выбрал одно, другой - другое - то у них глючить будет.
  Представь, сидит чел, выбрал таблицу 2х2. Потом сидит, тупит, заполняет ее.
  А в это время другой шустро выбрал 5х5. Так у первого вдруг непонятно отчего таблица станет 5х5, потому что временные переменные торого считались! Удивится первый и подумает что у тебя скрипт глюкавый (и будет, собстна, прав!).

Автор: kamat0z 23.11.2006, 13:13
Ну вообще этот скрипт для админ панели smile
Так что только один чел будет его использовать smile

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