Autor | Zpráva | ||
---|---|---|---|
RobertH Profil |
#1 · Zasláno: 15. 4. 2009, 20:59:43
Zdravim,
potreboval bych mit tabulku kterou bych si mohl akutalizovat pouze prepsanim EXCELovskyho dokumentu na serveru. Je neco takovyho mozny pomoci PHP? A kdyztak jak? V PHP jsem zatim udelal akorat formular na odesilani emailu a vic zkusenosti s tim nemam, tak jestli mi to muzete vysvetlit nak polopate ci nazornym prikladem :-) Predem dekuji. |
||
Snake.AAS Profil * |
#2 · Zasláno: 16. 4. 2009, 09:12:51
mohl by jste si vytvořit skript, který po spuštění vezme onen zmiňovaný excelovský dokument a pomocí něj zaktualizuje databázi...
první problém na který nejspíš narazíte je, že Excel je uzavřený formát... pokud nemáte s programováním moc zkušeností, tak bych vám to asi nedoporučil tohle vymýšlet sám... podívejte se například na www.phpclasses.org, kde je spousta skriptů a pokud dáte vyhledat excel tak to bude ok... |
||
imploder Profil |
#3 · Zasláno: 16. 4. 2009, 10:32:22
RobertH
Pokud nenajdete nic vhodného jednoduchého na XLS soubory, tak se (u jednodušších tabulek) dá udělat v Excelu export do CSV (jednoduchý textový formát na tabulky) a to už není problém číst. Pokud je tabulka složitější (jsou v ní různě spojované buňky atd.) stejně se bude muset převést do podoby uložitelné do databáze - a databázová tabulka se dá vyjádřit v CSV. |
||
RobertH Profil |
#4 · Zasláno: 16. 4. 2009, 10:35:13
S tim exportem do CSV jsem pocital, to uz mi nekdo radil, ale vubec netusim jak na ten PHP script, nemuzete mi nekdo poslat mensi ukazku jak na nej?
|
||
imploder Profil |
#5 · Zasláno: 16. 4. 2009, 11:27:10
RobertH
<?php $f = fopen("tab.csv", "r"); while($radek = fgetcsv($f, 32768)) { $sql = "insert into `tab` values("; for($i=0; isset($radek[$i]); $i++) { $sql .= "'".$radek[$i]."'"; if(isset($radek[$i+1])) $sql .= ", "; } $sql .= ")"; //echo $sql."<br>"; mysql_query($sql); } fclose($f); ?> |
||
RobertH Profil |
#6 · Zasláno: 16. 4. 2009, 11:56:12
Tak sem z toho nakej jelen :-) Muzu poprosit jeste o zapis v html? Moc nevim jak to rozchodit.
|
||
imploder Profil |
#7 · Zasláno: 16. 4. 2009, 15:35:17 · Upravil/a: imploder
Ten kód načte tabulku tab.csv ve formátu CSV a pak postupuje po jednotlivých řádcích. Funkce fgetcsv() vždycky rozdělí řádek CSV souboru na jednotlivé části (buňky tabulky). Z těch se vytvoří SQL příkaz na vložení řádku do tabulky tab v databázi (předpokládá se, že už je navázáno spojení s databází a v ní je tabulka tab, která se má naplnit). Pokud odkomentujete ten zakomentovaný řádek, vzniklé příkazy se vypisují, jinak se nevypisuje nic.
Je nutné mít fungující spojení s databází a v něm příslušnou tabulku, kde počet sloupců a hodnoty, kterých můžou nabývat, odpovídá tomu, co je v CSV souboru. Zkoušel jsem to jenom na takovém jednoduchém, možná to bude potřeba pro formát generovaný excelem upravit (viz další parametry funkce fgetcsv). Nevím, jak bych to měl zapsat v HTML. Ten kód až na ten zakomentovaný výpis (kde je všehovšudy z HTML zalomení řádku <br>) nic v HTML nedělá a ani se nemusí nikam do HTML dávat. |
||
quaplo Profil * |
#8 · Zasláno: 16. 4. 2009, 16:01:04
|
||
RobertH Profil |
#9 · Zasláno: 17. 4. 2009, 10:40:48
imploder
diky za pokus o pomoc, ale jelikoz v PHP a databazich sem uplnej lajk, tak mi to moc nepomohlo, ale preste diky quaplo super diky moc, presne neco takovyhleho sem potreboval Jeste jednou diky vsem |
||
RobertH Profil |
#10 · Zasláno: 17. 4. 2009, 15:50:30
tak jeste mala vec s kterou si nevim rady, pouzil jsem PHP kod od quapla, ale nemuzu tam dostat cestinu.
Zde je odkaz na testovaci stranku http://www.rhdesign.cz/test/example.php Zkousel sem ruzny nastaveni kodovani, ale stale tam cestina neni. |
||
Časová prodleva: 2 měsíce
|
|||
crewer Profil * |
já to vyřešil takto:
<?php echo "<table>"; $f = fopen("ce.csv", "r"); echo "<tr>"; while(!feof($f)) { $radek = fgets($f,1024); $obsah = explode(';', $radek); for($i=0; $i<2; $i++) { echo "<td>"; $obsah_utf8 = iconv('windows-1250','utf-8',$obsah[$i]); echo $obsah_utf8."</td>"; } echo "</tr>"; } fclose($f); echo "</table>"; ?> načtu soubor csv jako text, pak ho rozdělim do pole přes středníky a to pole pak vypisuju do tabulky. výsledkem je tabulka o dvou sloupcích. samozřejmě by se dalo jednoduše zjistit, kolik má sloupců a pak to tam napsat, ale tohle je pro mě jednodušší Moderátor nightfish: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
RobertH Profil |
#12 · Zasláno: 16. 6. 2009, 10:49:45
Tak tenhle skript mi funguje, ale zatim bez cestiny, jak mam u toho nastavit spravny kodovani?
A jeste sem se chtel zeptat jak to ostylovat? V php moc nedelam, ale bohuzel ho ted zrovna potrebuju, tak nevim jak to udelat tam? Diky |
||
Časová prodleva: 9 měsíců
|
|||
RobertH Profil |
#13 · Zasláno: 26. 2. 2010, 13:16:01
crewer:
dá se u tohoto kódu udělat aby první řádek byl jako legenda tabulky a naopak poslední jako patička tý tabulky? |
||
Časová prodleva: 14 let
|
0