Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ problem przy kreowaniu xls - php/jquery

Napisany przez: johny97 11.07.2018, 07:50:15

Witam

Za pomocą poniższego kodu chciałem zapisać do pliku xls wybrane pozycje z wyniku zapytania do bazy (poprzez checkboxy), niestety po zainicjowaniu akcji nie kreuje się xls ...
widzę tylko w 'developer tools' chrome ze dane przez 'post' są przekazywane do porządanej podstrony (export.php) ale nic pozatym się nie dzieje.
Prosze o jakieś wskazówki gdzie może być błąd.

ponizej kod:

baza.php:

  1. <!DOCTYPE html>
  2. <http://december.com/html/4/element/html.html lang="pl">
  3. <http://december.com/html/4/element/head.html>
  4. ...
  5.  
  6.  
  7.  
  8. <http://december.com/html/4/element/script.html type="text/javascript">
  9.  
  10.  
  11.  
  12. $(function(){
  13. $("#myTable").tablesorter();
  14. });
  15.  
  16.  
  17. </http://december.com/html/4/element/script.html>
  18. <http://december.com/html/4/element/script.html type="text/javascript">
  19. $(function(){
  20. $("#myTable").tablesorter({ sortList: [[0,0], [1,0]] });
  21. });
  22.  
  23.  
  24.  
  25. </http://december.com/html/4/element/script.html>
  26.  
  27. </http://december.com/html/4/element/head.html>
  28.  
  29.  
  30. <http://december.com/html/4/element/body.html style="margin: 0; padding: 0">
  31. <http://december.com/html/4/element/div.html class="wrapper">
  32. <http://december.com/html/4/element/div.html class="baza">
  33.  
  34. <http://december.com/html/4/element/div.html id="myDiv"><http://december.com/html/4/element/h2.html><http://december.com/html/4/element/a.html href="baza_site.php" style="text-decoration: none;"># Baza Site</http://december.com/html/4/element/a.html></http://december.com/html/4/element/h2.html></http://december.com/html/4/element/div.html>
  35. <http://december.com/html/4/element/button.html class="btn btn-danger" id="export">export xls</http://december.com/html/4/element/button.html>
  36. <http://december.com/html/4/element/h6.html><http://december.com/html/4/element/i.html>ostatnia aktualizacja bazy - 19.06.2018</http://december.com/html/4/element/i.html></http://december.com/html/4/element/h6.html>
  37.  
  38.  
  39. </http://december.com/html/4/element/div.html>
  40.  
  41. <http://december.com/html/4/element/div.html class="search">
  42. <http://december.com/html/4/element/form.html action="baza_site.php" method="POST">
  43. <http://december.com/html/4/element/div.html class="input-group">
  44. <http://december.com/html/4/element/input.html type="text" class="form-control" placeholder="Search" name="search">
  45. <http://december.com/html/4/element/div.html class="input-group-btn">
  46. <http://december.com/html/4/element/button.html class="btn btn-default" type="submit" name="submit" >
  47. <http://december.com/html/4/element/i.html class="glyphicon glyphicon-search"></http://december.com/html/4/element/i.html>
  48. </http://december.com/html/4/element/button.html>
  49. </http://december.com/html/4/element/div.html>
  50. </http://december.com/html/4/element/div.html>
  51. </http://december.com/html/4/element/form.html>
  52. </http://december.com/html/4/element/div.html>
  53.  
  54. <http://december.com/html/4/element/div.html class="tabela">
  55.  
  56.  
  57.  
  58. // Include config file
  59. require_once 'config.php';
  60.  
  61. if (isset($_POST["submit"])) {
  62. $search = mysqli_real_escape_string($mysqli, trim($_POST['search']));
  63. mysqli_set_charset( $mysqli, 'utf8');
  64.  
  65. $sql = "SELECT * FROM baza_site WHERE site LIKE '%$search%' OR city LIKE '%$search%' OR address LIKE '%$search%' OR accessDetails LIKE '%$search%' OR ServiceArea LIKE '%$search%' OR locationType LIKE '%$search%'";
  66. if($result = $mysqli->query($sql)){
  67. if($result->num_rows > 0){
  68. $ilosc = mysqli_num_rows($result);
  69. echo "<http://december.com/html/4/element/b.html>ilość rekordów : " .$ilosc."</http://december.com/html/4/element/b.html>";
  70. echo "<http://december.com/html/4/element/table.html id='myTable' class='tablesorter-blackice'>";
  71. echo "<http://december.com/html/4/element/thead.html>";
  72. echo "<http://december.com/html/4/element/tr.html>";
  73. echo "<http://december.com/html/4/element/th.html style='text-align:center;' class='filter-false'><http://december.com/html/4/element/input.html type='checkbox' id='checkall'/></http://december.com/html/4/element/th.html>";
  74. echo "<http://december.com/html/4/element/th.html>site</http://december.com/html/4/element/th.html>";
  75. echo "<http://december.com/html/4/element/th.html>location type</http://december.com/html/4/element/th.html>";
  76. echo "<http://december.com/html/4/element/th.html>city</http://december.com/html/4/element/th.html>";
  77. echo "<http://december.com/html/4/element/th.html>address</http://december.com/html/4/element/th.html>";
  78. echo "<http://december.com/html/4/element/th.html>access details</http://december.com/html/4/element/th.html>";
  79. echo "<http://december.com/html/4/element/th.html>service area</http://december.com/html/4/element/th.html>";
  80. echo "</http://december.com/html/4/element/tr.html>";
  81. echo "</http://december.com/html/4/element/thead.html>";
  82. echo "<http://december.com/html/4/element/tbody.html>";
  83. while($row = $result->fetch_array()){
  84. echo "<http://december.com/html/4/element/tr.html>";
  85. echo "<http://december.com/html/4/element/td.html class='text-center'>"."<http://december.com/html/4/element/input.html type='checkbox' name='checkboxlist' class='checkitem' value=". $row['id']."/> </http://december.com/html/4/element/td.html>";
  86. echo "<http://december.com/html/4/element/td.html>" . $row['site']. "</http://december.com/html/4/element/td.html>";
  87. echo "<http://december.com/html/4/element/td.html>" . $row['locationType']. "</http://december.com/html/4/element/td.html>";
  88. echo "<http://december.com/html/4/element/td.html>" . $row['city'] . "</http://december.com/html/4/element/td.html>";
  89. echo "<http://december.com/html/4/element/td.html>" . $row['address'] . "</http://december.com/html/4/element/td.html>";
  90. echo "<http://december.com/html/4/element/td.html>" . $row['accessDetails'] . "</http://december.com/html/4/element/td.html>";
  91. echo "<http://december.com/html/4/element/td.html>" . $row['ServiceArea'] . "</http://december.com/html/4/element/td.html>";
  92.  
  93.  
  94. echo "</http://december.com/html/4/element/tr.html>";
  95. }
  96. echo "</http://december.com/html/4/element/tbody.html>";
  97. echo "</http://december.com/html/4/element/table.html>";
  98. // Free result set
  99. $result->free();
  100. } else{
  101. echo "<http://december.com/html/4/element/p.html class='lead'><http://december.com/html/4/element/em.html>Brak informacji w bazie.</http://december.com/html/4/element/em.html></http://december.com/html/4/element/p.html>";
  102. }
  103. } else{
  104. echo "ERROR: Could not able to execute $sql. " . $mysqli->error;
  105. }
  106. }
  107. // Close connection
  108. $mysqli->close();
  109. ?>
  110.  
  111.  
  112.  
  113. </http://december.com/html/4/element/div.html>
  114. </http://december.com/html/4/element/div.html>
  115. <http://december.com/html/4/element/script.html type="text/javascript">
  116.  
  117. $("#myTable").tablesorter({
  118. headers: {
  119. 0: { sorter: false, parser: false }
  120. }
  121. });
  122.  
  123.  
  124.  
  125. <http://december.com/html/4/element/script.html type="text/javascript">
  126.  
  127. $('#checkall').change(function(){
  128. $('.checkitem').prop("checked", $(this).prop("checked"))
  129. })
  130.  
  131. $('#export').click(function(){
  132. var id = $('.checkitem:checked').map(function(){
  133. return $(this).val()
  134. }).get().join(' ')
  135. $.post('export.php?p=xls', {id : id})
  136.  
  137. });
  138.  
  139.  
  140. </http://december.com/html/4/element/script.html>
  141.  
  142. </http://december.com/html/4/element/body.html>
  143. </http://december.com/html/4/element/html.html>


export.php:

  1. <?php
  2.  
  3. require_once 'config.php';
  4. $id='';
  5. $output = '';
  6. $page = http://www.php.net/isset($_GET['p'])? $_GET['p'] : '';
  7. if($page == 'xls'){
  8. $myid = $_POST['id'];
  9. $id = http://www.php.net/str_replace('/', '', $myid);
  10.  
  11.  
  12. $sql = "SELECT * FROM baza_site WHERE id IN($id)";
  13. http://www.php.net/echo $sql;
  14. if($result = $mysqli->query($sql)){
  15. if($result->num_rows > 0)
  16. {
  17.  
  18. $output .= '
  19. <table border="1">
  20. <tr>
  21. <th>id</th>
  22. <th>site</th>
  23. <th>location type</th>
  24. <th>city</th>
  25. <th>address</th>
  26. <th>access details</th>
  27. <th>service area</th>
  28. </tr>
  29. ';
  30. while($row = mysqli_fetch_array($result))
  31. {
  32. $output .= '
  33. <tr>
  34. <td>'.$row["id"].'</td>
  35. <td>'.$row["site"].'</td>
  36. <td>'.$row["locationType"].'</td>
  37. <td>'.$row["city"].'</td>
  38. <td>'.$row["address"].'</td>
  39. <td>'.$row["accessDetails"].'</td>
  40. <td>'.$row["ServiceArea"].'</td>
  41.  
  42. </tr>
  43. ';
  44. }
  45. $output .= '</table>';
  46.  
  47.  
  48. http://www.php.net/header("Content-Type: application/vnd.ms-excel");
  49. http://www.php.net/header("Content-Disposition: attachment; filename=".'xxx'.http://www.php.net/date("Y-m-d_H_i_s").".xls");
  50. http://www.php.net/header("Pragma: no-cache");
  51. http://www.php.net/header("Expires: 0");
  52. http://www.php.net/echo $output;
  53. }
  54. }}
  55. $mysqli->close();
  56.  
  57.  
  58.  
  59.  
  60. ?>

Napisany przez: Pyton_000 11.07.2018, 08:25:07

Wszystko zapewne działa tak jak powinno. Ale Ajax nie słuzy do pobierania plików generalnie...

https://nehalist.io/downloading-files-from-post-requests/

Napisany przez: johny97 11.07.2018, 10:42:35

Zatem jak najprościej przekazać wartośc 'id'(z zaznaczonych checkboxow) do podstrony która wykona zapytanie do bazy i wykreuje mi xls'a ?

Napisany przez: nospor 11.07.2018, 11:33:45

Normalnie, wyslij formularz do tej podstrony

Napisany przez: Pyton_000 11.07.2018, 11:56:59

Widać że nie przeczytałeś tego co podesłałem bo tam masz gotowe rozwiązanie tak na prawdę.

Napisany przez: johny97 11.07.2018, 12:20:10

jak widać dużo jeszcze się muszę nauczyć
ale rozwiązania problemu tam nie widze ;/
dzięki za pomoc

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