Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запись в Excel

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Valimar
Отправлено: 17 Марта, 2009 - 16:19:50
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




Скажите, как мне организовать запись в excel-файл, если я заранее не знаю, какого размера будет таблица с данными?
Вот простейший пример:
PHP:
скопировать код в буфер обмена
  1.  
  2. <FORM ACTION="excel_test.php" METHOD="POST">
  3. <table>
  4.   <tr>
  5.      <th>Значение 1</th><th>Значение 2</th>
  6. <?PHP
  7. $j = 10; // может быть любым
  8. $num = 0;
  9.  
  10. for($i=0; $i<$j; $i++)
  11. {
  12.      $num++;
  13.      echo "<td>$num<input type=hidden name='a' size=3 value='$num' /></td>";
  14.      echo "<td>$i*2<input type=hidden name='b' size=3 value='$i*2' /></td>";
  15. }
  16. ?>
  17.    </tr>
  18.   <tr><td><input type="submit" value="Записать" /></td></tr>
  19. </table>
  20. </FORM>
  21.  

и сам скрипт записи:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include("excelwriter.inc.php");
  4.     $excel=new ExcelWriter("test.xls");
  5.     if($excel==false)
  6.     echo $excel->error;
  7.     for ($i=0; $i<10; $i++) // выставил временно 10, т.к. сейчас это не суть
  8.     {
  9.         $myArr=array($_POST['a'],$_POST['b']);
  10.         $excel->writeLine($myArr);
  11.     }
  12.     $excel->close();
  13.     echo "Файл успешно записан.";
  14. ?>
  15.  

записывает последний результат в таблице 10 раз подряд :о)
вот как бы мне передать все значения?

(Отредактировано автором: 17 Марта, 2009 - 16:30:04)

 
 Top
Onuchin Artem
Отправлено: 17 Марта, 2009 - 16:39:59
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2009  
Откуда: Протвино


Помог: 0 раз(а)




Немного непонимаю вопроса.
что такое
CODE (text):
скопировать код в буфер обмена
  1.      echo "<td>$num<input type=hidden name='a' size=3 value='$num' /></td>";
  2.      echo "<td>$i*2<input type=hidden name='b' size=3 value='$i*2' /></td>";
 
 Top
Valimar
Отправлено: 17 Марта, 2009 - 17:35:33
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




Onuchin Artem пишет:
что такое

так я хочу передать значения через форму
 
 Top
Onuchin Artem
Отправлено: 18 Марта, 2009 - 06:52:48
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2009  
Откуда: Протвино


Помог: 0 раз(а)




Значения чего? Уточни что ты собираешься хранить в таблице
 
 Top
Stierus Супермодератор
Отправлено: 18 Марта, 2009 - 08:59:49
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Если обязательно Xls - только готовыми классами, если можно и csv - то просто посмотри формат и все сам поймёшь Улыбка
 
My status
 Top
Вездеход
Отправлено: 18 Марта, 2009 - 09:07:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




Valimar пишет:
echo "<td>$num<input type=hidden name='a' size=3 value='$num' /></td>";
echo "<td>$i*2<input type=hidden name='b' size=3 value='$i*2' /></td>";


так в форме у вас получится несколько раз инпут с именем a или b
а так как вы хотите передать несколько значений - используйте массив

т.е. так

PHP:
скопировать код в буфер обмена
  1. <?
  2. echo "<td>$num<input type=hidden name='a[]' size=3 value='$num' /></td>";
  3. echo "<td>$i*2<input type=hidden name='b[]' size=3 value='$i*2' /></td>";


Valimar пишет:
for ($i=0; $i<10; $i++)

и тогда тут - в обработке - вместо 10 можно использовать количество переданных в массиве элементов.

обратиться к тем данным которые пришлет форма можно так -
$_POST['a'][]
$_POST['b'][]


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Valimar
Отправлено: 18 Марта, 2009 - 10:25:14
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




Да, всё здорово получилось. Спасибо всем! =)
 
 Top
Гость
Отправлено: 18 Марта, 2009 - 20:44:02
Post Id


УДАЛЁН










Цитата:
$_POST['a'][]
$_POST['b'][]
Ну не быквально ведь такая конструкция только доабвит новый элемент в массив

Цитата:
Если обязательно Xls - только готовыми классами, если можно и csv - то просто посмотри формат и все сам поймёшь
Так может под винду там как правило CSV не стоит Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB