Avatar billede samanie Juniormester
28. november 2019 - 16:08 Der er 4 kommentarer og
1 løsning

Importer prisliste automatisk evt croniob

Hej eksperter,

Kan i hjælpe da firmaet ikke vil? Har lavet en wp hjemmeside hvor woocommerce kører på, skal lave en webshop, med produkter fra er firma der hedder dcs som har over 350000 produkter.

Det jeg ønsker jeres hjælp til er så hvordan jeg udvælger de produkter jeg gerne vil føre, laver dem i woocommerce som så automatisk bagefter bliver rettet til i pris og lagerstatus hver time. Dcs har en csv fil, som bliver opdateret hver time som man kan hente fra et link, og hvor alle produkternes pris lagerstatus osv ligger på. Men hvordan får woocommerce til at kunne hente den fil hver time, og ændre de produkter jeg har automatisk?

Håber i kan hjælpe eller pege mig i en retning :-)

Mvh Lucas Hunt
Avatar billede acore Ekspert
28. november 2019 - 16:52 #1
Uden at være ekspert i woocommerce, så må du kunne lave et scrpt (der startes via cronjob hver time), og som (forudsætter PHP og mySQL):

1. Henter csv filen (hvordan filen skal gemmes må afhænge lidt af størrelsen, men det lyder som om der er en overvejelse der, hvis den er på 350.000 linier, idet der skal søges i den for hver af dine produkter)
2. Looper gennem alle dine produkter i din woocommerce database tabel (tabelstrukturen kan du se med phpmyadmin)
3. For hvert produkt finder de opdaterede data i den hentede csv fil
4. Hvis der er rettelser opdaterer din(e) tabel(ler) med mysql UPDATE
Avatar billede samanie Juniormester
28. november 2019 - 20:17 #2
Hej tror jeg har fundet mappen med varerne: $sql = "SELECT * FROM `clk_e048b20763_wp_wc_product_meta_lookup`";

Den store fil ligger som sagt på et link som en csv fil, men hvad skal jeg så skrive i det scrpt så den kigger i den store fil, efter de varer numre som ligger i den lille fil, og kopiere ændringerne over, og gemmer den lille csv fil?
Avatar billede acore Ekspert
28. november 2019 - 21:04 #3
Hvor stor er CSC filen? Linier og samlet størrelse cirka
Hvordan er de enkelte linier struktureret?
Hvordan er den sorteret?

Svarene giver en vinkel på hvordan opgaven bedst løses
Avatar billede acore Ekspert
29. november 2019 - 13:04 #4
Har fået filen fra samanie: Den fylder 12 Mb og er på godt 100.000 linier. Den er ikke sorteret. Den har en headerlinie med feltnavne.

Med den størrelse er det muligt, at indlæse hele filen, og have den i memory mens databasen opdateres. Muligvis skal hph memory lige øges lidt først.

Den her kode, vil læse filen direkte fra internettet.

$csvfile = "http://www.xxx.dk/mypricelist";
$csvdel = ";";

$csv = array();
if (($fp = fopen($csvfile, "r")) && ($csvline = fgets($fp)) != FALSE)
{
  $csvfieldnames = explode($csvdel, $csvline);  // Take the first line and use as field names

  while (($csvline = fgets($fp)) != FALSE)
  {
    $csvarray = explode($csvdel, $csvline);

    $csvfield = array();
    for ($i = 1; $i < count($csvarray); $i++)
    {
      $csvfield[$csvfieldnames[$i]] = $csvarray[$i];
    }
    $csv[$csvarray[0]] = $csvfield;
  }

  fclose($fp);
}

Den kode læser filen på godt 1 sekund hos mig + den tid det tager at hente den fra serveren. Det er vist ok.

Nu skal alle linier i din egen varetabel så checkes/opdateres.

I den proces, så har du de nye data for varenummer xxx fra

$csv['xxx']

Det bliver en simpel while løkke, tror jeg, men uden at kende flere detaljer, kan jeg ikke lige skrive koden.
Avatar billede samanie Juniormester
29. november 2019 - 13:56 #5
Tusind tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester