Autor Zpráva
RobertH
Profil
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 *
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
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
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
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
Tak sem z toho nakej jelen :-) Muzu poprosit jeste o zapis v html? Moc nevim jak to rozchodit.
imploder
Profil
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 *
http://code.google.com/p/php-excel-reader/
RobertH
Profil
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
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.
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
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
RobertH
Profil
crewer:
dá se u tohoto kódu udělat aby první řádek byl jako legenda tabulky a naopak poslední jako patička tý tabulky?

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: