Salut,
Am un script prin care fac update dupa cod la produsele din baza de date. Mai exact, updatez preturile si stocurile produselor, dupa un fisier XML pe care-l primesc zilnic de la furnizor. Problema este ca sunt anumite produse care se afla la mine in baza de date si nu se afla in fisierul XML (acestea evident raman cu stocurile si preturile neactualizate). Vreau sa fac ca scriptul sa-mi caute toate produsele dupa codul lor, care se afla in db dar nu si in XML si sa le stearga. Ceva de genul: DELETE FROM ... WHERE cod NOT EXIST...
Ma poate ajuta cineva cu vreo indicatie?
Delete produse care nu se afla in fisierul XML
Moderatori: coditza, Emil, Moderatori
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Re: Delete produse care nu se afla in fisierul XML
Aduna toate ID-urile din XML intr-un array de php.
Apoi
String-ul din NOT IN fa-l in php din acel array.
Intotdeauna fa un SELECT inainte sa faci DELETE sa vezi ce date urmeaza sa fie sterse; nu ma asculta pe mine.
Esti sigur ca trebuie sa le stergi? Zilnic?
Apoi
Cod: Selectaţi tot
DELETE FROM tabel_produse WHERE product_id NOT IN ('xml_product_id1', 'xml_product_id2' ...)
String-ul din NOT IN fa-l in php din acel array.
Intotdeauna fa un SELECT inainte sa faci DELETE sa vezi ce date urmeaza sa fie sterse; nu ma asculta pe mine.
Esti sigur ca trebuie sa le stergi? Zilnic?
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/
Re: Delete produse care nu se afla in fisierul XML
Salut,
Multumesc pentru raspuns.
Nu vreau neaparat sa le sterg (vroiam sa vad cam cum ar arata sintaxa), de fapt vreau sa updatez statusul produselor: am coloana 'status' unde daca valoarea e zero, statusul produsului se schimba in 'indisponibil'.
Conform indicatiilor trimise de tine, o sa incerc:
UPDATE tabel_produse SET status='0' WHERE product_id NOT IN ('$array_xml');
unde $array_xml este array-ul cu ID-urile produselor.
Multumesc pentru raspuns.
Nu vreau neaparat sa le sterg (vroiam sa vad cam cum ar arata sintaxa), de fapt vreau sa updatez statusul produselor: am coloana 'status' unde daca valoarea e zero, statusul produsului se schimba in 'indisponibil'.
Conform indicatiilor trimise de tine, o sa incerc:
UPDATE tabel_produse SET status='0' WHERE product_id NOT IN ('$array_xml');
unde $array_xml este array-ul cu ID-urile produselor.
-
- PHPRomania Supporter
- Mesaje: 24
- Membru din: Lun Aug 27, 2007 5:55 pm
- Localitate: Bucuresti
- Contact:
Re: Delete produse care nu se afla in fisierul XML
Salut,
Depinde cate produse ai, dar eu as face altfel. (Daca ai de pastrat pe site doar produsele care iti apar in XML)
1. Inainte de a rula procedura de update din XML pui toate produsele din baza de date pe indisponibil. (schimbi statusul pe indisponibil)
2. Faci update de stoc, pret si setezi statusul pe disponibil pentru produsele pe care le ai in XML.
Numai bine!
Depinde cate produse ai, dar eu as face altfel. (Daca ai de pastrat pe site doar produsele care iti apar in XML)
1. Inainte de a rula procedura de update din XML pui toate produsele din baza de date pe indisponibil. (schimbi statusul pe indisponibil)
2. Faci update de stoc, pret si setezi statusul pe disponibil pentru produsele pe care le ai in XML.
Numai bine!
Re: Delete produse care nu se afla in fisierul XML
Salut,
Merci johnel, pana la urma mi-ai dat o idee buna. Am setat cron-ul sa updateze statusul pe zero, dupa care il seteaza pe unu (disponibil) pentru fiecare produs din xml.
Totusi, ca fapt divers, nu se poate face si prin varianta cu UPDATE?
UPDATE tabel_produse SET status='0' WHERE product_id NOT IN ('$array_xml');
Din pacate nu am reusit sa implementez varianta propusa de nevvermind.
Merci johnel, pana la urma mi-ai dat o idee buna. Am setat cron-ul sa updateze statusul pe zero, dupa care il seteaza pe unu (disponibil) pentru fiecare produs din xml.
Totusi, ca fapt divers, nu se poate face si prin varianta cu UPDATE?
UPDATE tabel_produse SET status='0' WHERE product_id NOT IN ('$array_xml');
Din pacate nu am reusit sa implementez varianta propusa de nevvermind.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 8 vizitatori