Søg, sammenlig og opdater i et hug i Mysql

Tags:    mysql select update

Hej Udviklere

Da jeg er helt nybegynder i php/Mysql håber jeg på at kunne finde
lidt hjælp i dette forum - også gerne som betalt hjælp :)

Jeg har en webshop hvor jeg kunne tænke mig at priserne på produkterne
kunne opdateres fra en prisliste jeg indlæser i en tabel til formålet.

Der skulle så kaldes en PHP funktion, hvor der skulle foregå noget i retningen af - hvis posten "produktnummer" i tabellen "produkter" matcher posten "produktnummer" i tabellen "prisliste", så overskriv posten "pris" i tabellen "produkter" med indholdet af posten "pris" i tabellen "prisliste".

Således får jeg nemlig opdateret mine priser i webshoppen, blot ved at indlæse en ny prisliste i tabellen "prisliste" og kører et php kald der foretager ovenstående.

Kronen på værket ville så være at man fik en liste over hvilke produkter der er blevet opdateret på en liste/skærmdump :)

Der behøver ikke at være en funktion der tjekker om den nye pris er større/mindre end den gamle - prisen skal blot overskrives med prisen i prislisten - da det er den der gælder ..

Jeg tror godt at jeg, det er vel sådan man lære, selv kan finde ud af at få adgang til databasen og foretage forespørgslen,
det kniber blot lige med at gennemskue den der SELECT kommando, hvor der både tjekkes og opdateres i databasen ..

Jeg benytter mig af Zen-Cart systemet der er baseret op OsCommerce platformen.

Mange tak for eventuel hjælp ..

Hilsen

danfeld



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Du skal ikke bruge SELECT, men UPDATE. Ligesom i select, kan man også bruge joins i UPDATE.

Her er et forslag, i en rimelig læsevenlig forstand:
Fold kodeboks ind/udSQL kode 


Du kan tilføje et timestamp felt til din produkt tabel, herefter kan du nemt hive ud hvornår dine produkter er blevet opdateret.



Indlæg senest redigeret d. 28.04.2012 22:46 af Bruger #955
Uden at skulle kunne sige noget 100% sikkert, tror jeg ikke at du kan klare det i ét kald. Måden hvorpå jeg ville gøre det er, at indlæse et array med alle priserne og tilsvarende produktID fra prislisten. Jeg vil derefter lave et php-loop der kører igennem dette array med ID og priser og ved hjælp af dette slå ID'et op i produkt-tabellen for at overskrive prisen. Når du er færdig med at køre loop'et igennem, kan du bare truncate hele lortet (undskyld sproget) i prislisten for at gøre klar til en ny portion på et senere tidspunkt :-)

Så længe du sørger for at holde forbindelsen til databasen åben fra start til slut, mener jeg ikke at det skulle tage specielt hårdt på serveren at opdatere hver enkel pris i sådan et array :-)

Hvis jeg selv skulle lave et sådant system ville jeg måske nok vælge at have min prisliste i en kommasepararet fil som jeg kan uploade til serveren. Jeg vil så gennemgå alle elementer i den fil og opdatere mine priser ud fra det i stedet for at lægge det i en tabel i databasen først. Bare husk at slette filen fra serveren når du er færdig med at indlæse poster :-)

Med hensyn til at vise de ændrede produkter, er det jo blot at udskrive hele den nye prisliste :-)



Hej Stefan og Simon

Mange tak for jeres svar.

- til Simon.

Jaaa, efter nærmere overvejelser så slipper jeg nok ikke uden om at skulle klare det i mere end et hug :)
- mener du at jeg kan holde ID fra ca 3500 varer i et array? og priserne i et andet array? ...
- din anden løsning med at uploade en fil lyder til at være forholdsvis nem at gå til - filen skulle så blot indeholde "produkt ID " og "Produkt pris".
Skulle indholdet af filen så hældes i et array? - eller kan man i PHP plukke de enkelte værdier ud og sammenligne ?
Kunne du lave en demo der virker ? - mod betaling self .. :)


- Til Stefan
Det lyder super enkelt - hvis man har styr på Mysql og PHP -
Kunne du lave en demo der virker ? - også mod betaling...

--
Jeg har ikke oceaner af tid til at sætte mig ind i Mysql / PHP og vil derfor gerne betale mig fra dette problem :)

endnu en gang mange tak for jeres svar/hjælp

Med venlig hilsen

Dan Feld-Jakobsen



Hej Dan,

Jeg er lidt i tvivl om størrelse på array kontra hukommelsesforbrug, men ved brug af en CSV-fil kan man bare "plukke" værdierne ud, som du snakkede om.

Jeg kan sagtens lave en demo til dig - du kan kontakte mig på simon [at] designature.dk

(opdateret mail-adresse, da jeg blev overfaldet af spam-bots! -.-*)



Indlæg senest redigeret d. 03.05.2012 17:29 af Bruger #8773
t