Autor | Zpráva | ||
---|---|---|---|
mirecekp Profil |
#1 · Zasláno: 16. 2. 2011, 01:21:36
Několik hodin už se peru s tímto kouskem kodu, který by měl vypsat html tabulku do xls souboru.
Teoreticky to funguje pokud do proměné napíšu jen čistý html kod tabulky, pokud ji chci generovat pak z databáze už nastává problém, v samotným generování chyba není to jde. Ovšem takto dohromady... Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /administrator-xls.php on line 21 <?php session_start(); require_once 'database.php'; $temp = "?> <table border=1> <tr> <td><strong>Název společnosti</strong></td> <td><strong>IČO</strong></td> <td><strong>Adresa</strong></td> <td><strong>Obchodní zástupce</strong></td> <td></td> <td></td> </tr> <?php $vypis = mysql_query('SELECT firmy.id_firma, firmy.id_user, firmy.ico, firmy.nazev, firmy.adresa, user.id, user.jmeno, user.prijmeni, user.username FROM firmy INNER JOIN user ON firmy.id_user=user.id ORDER BY firmy.nazev'); while ($data = @mysql_fetch_array($vypis) ) { $id_firma = $data['id_firma']; $ico = $data['ico']; $nazev = $data['nazev']; $adresa = $data['adresa']; $jmeno = $data['jmeno']; $prijmeni = $data['prijmeni']; $username = $data['username']; echo '<tr> <td>$nazev</td> <td>$ico</td> <td>$adresa</td> <td>$jmeno $prijmeni $username</td> <td><form name=\"smaz\" action=\"smazat-firmu.php?id_firma=$id_firma&nazev=$nazev\" method=\"POST\"><input type=\"submit\" value=\"Smazat\"></form></td> <td><form name=\"smaz\" action=\"uprav-firmu.php?id_firma=$id_firma&ico=$ico&dic=$dic&nazev=$nazev&adresa=$adresa&telefon=$telefon&email=$email\" method=\"POST\"><input type=\"submit\" value=\"Upravit\"></form></td> </tr>'; } ?> </table> <?php "; header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=\"zaloha.xls\""); echo $temp; ?> |
||
mirecekp Profil |
#2 · Zasláno: 16. 2. 2011, 01:23:51
Prázdná místa jsem dle parseru překontroloval ale mohu se mýlit... Viděl bych to spíše na problémy s uvozovkama/apostrofama
|
||
xmark Profil |
#3 · Zasláno: 16. 2. 2011, 02:00:07 · Upravil/a: xmark
Kde uzavíráš uvozovky, začínající na řádku 5?
Proč na ř. 15 začínáš php, když už jsi začal na ř. 1? Proč posíláš header úplně na konci, po odeslání výstupu do prohlížeče? // pardon, přehlídl jsem . /// vlastně nepřehlídl, ale to je už jedno |
||
Petr__ Profil * |
#4 · Zasláno: 16. 2. 2011, 02:09:53
mirecekp:
Předpokládám, že jste chtěl celý ten blok kódu mezi 5. a 42. řádkem dát do proměnné a pak vypsat na 46. řádku, ale to nejde. Když jednou použijete echo, tak to natvrdo vyleze do výstupu v daném místě. Pokud jsem dobře pochopil o co vám jde, tak tohle by mělo fungovat: <?php session_start(); require_once 'database.php'; $temp = " <table border=1> <tr> <td><strong>Název společnosti</strong></td> <td><strong>IČO</strong></td> <td><strong>Adresa</strong></td> <td><strong>Obchodní zástupce</strong></td> <td></td> <td></td> </tr> "; $vypis = mysql_query('SELECT firmy.id_firma, firmy.id_user, firmy.ico, firmy.nazev, firmy.adresa, user.id, user.jmeno, user.prijmeni, user.username FROM firmy INNER JOIN user ON firmy.id_user=user.id ORDER BY firmy.nazev'); while ($data = @mysql_fetch_array($vypis) ) { $id_firma = $data['id_firma']; $ico = $data['ico']; $nazev = $data['nazev']; $adresa = $data['adresa']; $jmeno = $data['jmeno']; $prijmeni = $data['prijmeni']; $username = $data['username']; $temp .= "<tr> <td>$nazev</td> <td>$ico</td> <td>$adresa</td> <td>$jmeno $prijmeni $username</td> <td><form name=\"smaz\" action=\"smazat-firmu.php?id_firma=$id_firma&nazev=$nazev\" method=\"POST\"><input type=\"submit\" value=\"Smazat\"></form></td> <td><form name=\"smaz\" action=\"uprav-firmu.php?id_firma=$id_firma&ico=$ico&dic=$dic&nazev=$nazev&adresa=$adresa&telefon=$telefon&email=$email\" method=\"POST\"><input type=\"submit\" value=\"Upravit\"></form></td> </tr>"; } $temp .= "</table>"; header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=\"zaloha.xls\""); echo $temp; ?> Ale nezkoušel jsem to. Dávat do action formuláře v URL hodnoty IČO, název, atd. není moc vhodné, mělo by vám stačit jen to id firmy a zbytek si načíst až na dotyčné stránce z databáze. Pak moc nechápu, o co se snažíte na konci s těma hlavičkama. |
||
mirecekp Profil |
#5 · Zasláno: 16. 2. 2011, 02:12:21
xmark:
Kde uzavíráš uvozovky, začínající na řádku 5? - na řádku 42 Proč na ř. 15 začínáš php, když už jsi začal na ř. 1? - protože mezi tím je ukončena syntaxe php na řádku 5 Proč posíláš header úplně na konci, po odeslání výstupu do prohlížeče? - do prohlížeče nic posláno není, nejprve se právě snažím naplnit proměnou $temp která začíná na ř.5 a končí na ř.42 a tento temp následně chci vyvolat jako soubor ke stažení. proto je header až na konci tohoto php souboru, jinak bych proměnou nenaplnil |
||
Petr__ Profil * |
#6 · Zasláno: 16. 2. 2011, 02:20:17
Aha, už chápu. Snažíte se o jakési pseudovytvoření Excelovského souboru, tím, že na výstup dáte html tabulku. Pak ale musíte prohlížeči vnutit excelovskou hlavičku:
header('Content-type: application/ms-excel'); |
||
mirecekp Profil |
#7 · Zasláno: 16. 2. 2011, 02:33:14
Petr_:
Děkuji!! To jsem potřeboval. Ty hlavičky vynutí stažení souboru. převzato viz - http://www.linuxsoft.cz/article.php?id_article=310 děkuji za pomoc! |
||
Časová prodleva: 13 let
|
0