Hledáme investora pro realizaci velkoobchodní zakázky. Výnos od 20% za půl roku do 500% ročně.
24.09.2021 15:51
1
Zdravím,
potřeboval bych poradit s následujícím kodem, který mám:
PHP kód:
  if(
  ($soubor fopen("csv/csvfile/kategorie1.csv""r"
 
  ) !== FALSE){
něco...

Jak mám napsat, aby $soubor četlo z více odkazů?

například aby to četlo ze souboru:
kategorie1.csv 
a zároveň i
kategorie2.csv
do jednoho $soubor ? Jde to provést pomocí Array funkcí?
díky za rady
24.09.2021 16:54
2
Původně odeslal Sashaa
Zdravím,
potřeboval bych poradit s následujícím kodem, který mám:
PHP kód:
  if(
  ($soubor fopen("csv/csvfile/kategorie1.csv""r"
 
  ) !== FALSE){
něco...

Jak mám napsat, aby $soubor četlo z více odkazů?

například aby to četlo ze souboru:
kategorie1.csv 
a zároveň i
kategorie2.csv
do jednoho $soubor ? Jde to provést pomocí Array funkcí?
díky za rady
Těžko. První zpracuj první soubor, potom druhý soubor atd. Popřípadě zpracuj všechny soubory po jednom a spoj je dohromady, tak jak potřebuješ. Další varianta zpracovat opět po jednom a uložit do databáze.

Jde otevřít i více souborů najednou
Kód:
$soubor = fopen("csv/csvfile/kategorie1.csv", "r");
$soubor2 = fopen("csv/csvfile/kategorie2.csv", "r");
....
Nevím ale k čemu by to bylo. CSV se čte řádek po řádku a je jedno jestli zpracuješ jeden soubor a poté další soubor a nebo dva soubory najednou po řádku. Výsledek bude vždy stejný.

Jinak jak zpracovat všechny soubory po jednom za sebou. Stačí je mít uložené v jedné složce. Složku prolistovat funkcí scandir(); Tím se získají názvy soboru a poté vše zpracovat po jednom např. cyklem foreach...
24.09.2021 17:32
3
Spouter: jde o to, že přes tyto csv soubory chci importovat do databaze tisíce produktů pro eshop. Chci to rozdělit právě do jednotlivých CSV souborů dle kategorie, kde jeden CSV soubor bude mít třeba 5000 řádků s informacemi a druhý třeba 2000 řádků. Kdybych to všechno dal do jednoho CSV souborů, tak aby při "INSERT" do databaze nebo "UPDATE" prohlížeč a server zvládl načíst bez toho, aniž by to spadlo, nebo hodilo nějakou chybu...
Proto mi to přišlo víc logicky to tam vložit (INSERT a UPDATE) postupně, aby k výpadku nedošlo při importu tolika dat...
Co bys k tomu poradil?
24.09.2021 22:37
4
Používat mysqli_free_result(), přerušit skript pokud by se blížil max_execution_time, escapovat všechny speciální znaky zejména (',",%,\). Pokud je potřeba výpis, tak jej ukládat do souboru a né výpis do prohlížeče. Do prohlížeče vypisovat jen chyby. Všechny chyby/exceptions by ale měly být ošetřeny např. klasickou metodou try/catch.
25.09.2021 01:22
5
Spouter: Zkusím možná tu metodu  mysqli_free_result() jak píšeš, tu neznám. Co se týče výpisu, proto jej ukládám do csv file, aby se to nahrálo automaticky z csv to databáze. 
Čtení z databáze do PHP už je v pohodě, jde jen o to, aby se ty data zapisovali do databaze plynule. 

Ale díky za rady :)
25.09.2021 09:13
6
Klidne to dej do jednoho CSV, jednoduchy import by mohl vypadat nejak takhle

PHP kód:
ini_set('max_execution_time'0); //nebudue to padat na timeout kdyz to pojede dlouho

$souborfopen("csv/csvfile/produkty.csv""r");

while ((
$radekfgetcsv($soubor0",")) !== FALSE) {
   
//vzdy se operuje jen s jednim radkem, nenacita se cele csv do pole, takze to usetri pamet
   //aby se to do DB neposilaly zaznamy po jednom radku, muzes si zde pripravit pole pro INSERT a
   //ukladat to treba po stovkach
}

//zde ulozit, co zbyde u konce souboru a nevyjde do te stovky