| 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: 16 let
|
|||
0
).