Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт в ЭКСЕЛ при нажатии на кнопку 
:(
    Опции темы
Гульмира
  Дата 11.11.2010, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Здравствуйте. 
В данном примере экспорт в ЭКСЕЛ идет при открытии страницы.
Код

$result = mssql_execute($storeProc1); 
while ($row = mssql_fetch_assoc($result))  
{  
.......
здесь данные из БД
............
}
......
header("Content-type: application/vnd.ms-excel");
header('Content-disposition: attachment; filename="report_' . date("Y-m-d") . '.xls"');
exit;    

Вопрос следующий:
я вывожу все данные из БД и добавляю кнопку "Экспорт". Нужно чтобы при нажатии на кнопку все данные переместились в ЭКСЕЛ? Ниже я неправильно составила код, он не работает?  smile 
Код

.....
<input type="button" onclick="exp()" value="Экспорт" />
......
<script language="JavaScript">
function exp() 
{    
<?    
header("Content-type: application/vnd.ms-excel");
header('Content-disposition: attachment; filename="report_' . date("Y-m-d") . '.xls"');
return;    
?>
}
</script>

Заранее благодарна!
PM MAIL   Вверх
patap
Дата 11.11.2010, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



нет, это работать не будет
тебе нужно твои заголовки отсылать в браузер после нажатия на кнопку, после заголовков отдавать в браузер ексель файл

index.html
Код

<input type="button" value="xls" onclick="window.location='generate_xls.php'" />



generate_xls.php
Код

$result = mssql_execute($storeProc1); 
while ($row = mssql_fetch_assoc($result))  
{  
.......
здесь данные из БД
............
}
......
header("Content-type: application/vnd.ms-excel");
header('Content-disposition: attachment; filename="report_' . date("Y-m-d") . '.xls"');

// далее нужно отдать клиенту файл







--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Гульмира
Дата 11.11.2010, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Ваш пример понятен. Дело в том, нужно чтобы кнопка
Код

<input type="button" value="xls" onclick="window.location='generate_xls.php'" />

была на той странице где уже выбраны данные (типа что видно в браузере то и экспортируем),  а именно в generate_xls.php.

header подходит тем , что экспортирует всё со страницы.
Может есть еще другие методы реализации?
PM MAIL   Вверх
patap
Дата 11.11.2010, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



т.е. нужно содержимое страницы получить в виде эксель файла?


Код

<?php
  if (isset($_GET['export'])) {
    header("Content-type: application/vnd.ms-excel");
    header('Content-disposition: attachment; filename="report_' . date("Y-m-d") . '.xls"');
  }
  $result = mssql_execute($storeProc1); 
  while ($row = mssql_fetch_assoc($result))  
  {  
  .......
  здесь данные из БД
  ............
  }
?>
<html>
<body>
<input type="button" value="xls" onclick="window.location='generate_xls.php?export=1'" />
</body>
</html>



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Гульмира
Дата 11.11.2010, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Цитата(patap @ 11.11.2010,  11:24)
т.е. нужно содержимое страницы получить в виде эксель файла?


Код

<?php
  if (isset($_GET['export'])) {
    header("Content-type: application/vnd.ms-excel");
    header('Content-disposition: attachment; filename="report_' . date("Y-m-d") . '.xls"');
  }
  $result = mssql_execute($storeProc1); 
  while ($row = mssql_fetch_assoc($result))  
  {  
  .......
  здесь данные из БД
  ............
  }
?>
<html>
<body>
<input type="button" value="xls" onclick="window.location='generate_xls.php?export=1'" />
</body>
</html>

да, открывается ЭКСЕЛ, но он пустой. видимо из-за того что в адресной строке generate_xls.php?(мои переменные из другой страницы) путаются с export=1.


PM MAIL   Вверх
Гульмира
Дата 11.11.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Спасибо, patap  smile 
PM MAIL   Вверх
patap
Дата 11.11.2010, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



покажи свой код без всяких урезаний


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Гульмира
Дата 11.11.2010, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 18.10.2010

Репутация: нет
Всего: нет



Файл index.php
Код

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<?
$hostname = "localhost";
$port= "1433" ;
$username = "admin"; 
$password = "123"; 
$dbName = "Test"; 
@$aa=mssql_connect ($hostname, $username, $password ) ; 
if (!$aa)
{
echo ("<b><font size=2 color=red>Подключение к серверу отсутствует</font>");
}
@mssql_select_db($dbName);
?>
</head>
<table border=1>
<?
//первая дата
$dat=str_replace("-","",$dat1);        
//вторая дата
$dr=str_replace("-","",$dat2);
$going=0;
$i=1;
while ($dat <= $dr)
{  
$storeProc1 = mssql_init('sp_Stat;1'); 
mssql_bind($storeProc1,'@DATE',$dat, SQLVARCHAR); 
mssql_bind($storeProc1,"@item",$item, SQLINT4, false); 
mssql_bind($storeProc1,"@item2",$item2, SQLINT4, false); 
mssql_bind($storeProc1,"@going",$going, SQLVARCHAR, false); 
$result = mssql_execute($storeProc1); 
while ($row = mssql_fetch_assoc($result))  
{  
//отформатированный вывод даты     
 if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $row["DATA"], $reg))
 {    
   echo ("<tr><td>&nbsp;$reg[3]$reg[2]</td>"); 
 } 
 if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $row["TIM_1"], $reg))
 {    
 if     ("$reg[4]"!='00' or "$reg[5]"!='00')    
 {
   echo ("<td>&nbsp;$reg[4]:$reg[5]</td>"); 
 } 
 else
 {
  echo ("<td>&nbsp;</td>"); 
 } 
 }    
 if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $row["TIM_2"], $reg))
 {    
 if     ("$reg[4]"!='00' or "$reg[5]"!='00')        
 {
   echo ("<td>$reg[4]:$reg[5]</td>"); 
 } 
 else
 {
  echo ("<td>&nbsp;</td>"); 
 }
 } 
echo ("<td>" .$row["STS"]. "</td>"); 
echo ("<td>" .$row["REM"]. "</td></tr>"); 

$i=$i+1;    
}
     
$dat=date("Ymd", strtotime("+1 days ".$dat));    
}     

//echo $dat=date("$dat",time()+60*60*24);     
 
//конец
?>                
</table>

<?if (isset($_GET['export'])) {
    header("Content-type: application/vnd.ms-excel");
    header('Content-disposition: attachment; filename="report_' . date("Y-m-d") . '.xls"');
  }
  ?>
<body>     

<input type="button" value="xls" onclick="window.location='index.php?export=1'" />
</body>
</html>


Переменные из stat.php передаются в index.php
Файл stat.php
Код

<script src="calendar_ru.js"></script>
<?    
$tip_p = array
        ("Все","Основные","Дополнительные"); 
$tip_s = array
        ("Все","Выполненые","Удаленные"); 
?> 
<table width="80%"  border="1" align="center">
<form action="index.php" name=calform enctype="multipart/form-data" method="post">
<input type="hidden" name="action" maxlength="200" size="10" value="post">    
<? 
echo ("<p class='err'>Выберите период: ")
?>
<input type="text" name="dat1" value="<?php echo date('Y-m-d') ?>" onmouseover="event.cancelBubble=true;this.select();lcs(this)">
<input type="text" name="dat2" value="<?php echo date('Y-m-d') ?>" onmouseover="event.cancelBubble=true;this.select();lcs(this)">
<tr>
        <td align="right" width="45%">&nbsp;Тип плана:&nbsp;</td>
        <td bgcolor="<? echo $color_tr; ?>">
<select name="item">
        <?
        for ($i=0; $i < count($tip_p); $i++)
        {
        ?>
        <option value="<? echo ($i); ?>">
    <?
        echo ($tip_p[$i]);    
        
        ?>
        </option> <?}?>
</select> 
</td>
    </tr>

<!--  -->
<tr>
        <td align="right" width="45%">&nbsp;Состояние:&nbsp;</td>
        <td bgcolor="<? echo $color_tr; ?>">
<select name="item2">
        <?
        for ($i=0; $i < count($tip_s); $i++)
        {
        ?>
        <option value="<? echo ($i); ?>">
    <?
        echo ($tip_s[$i]);    
        
        ?>
        </option> <?}?>
</select> 
</td>
    </tr>
        <tr>
        <td align=center colspan="2">    
<input type="submit" value="OK" name="subm4">&nbsp;
<input type="reset" value="Очистить">
                                                
</td>
        </tr>

</form>     
</table>



Это сообщение отредактировал(а) Гульмира - 11.11.2010, 14:18
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.