Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obsługa katalogu produktów
Forum PHP.pl > Forum > PHP
__ice
witam,
mam do napisania system obsługi katalogu produktów. po kolei:

Opis pliku xls:
1) katalog produktów (ok 700) w excelu
2) w katalogu są produkty różnych kategorii (np. długopisy, kubki, serwetki)
3) pierwsze kilka wierszy w tym pliku to różne uwagi, tekst raczej nie ważny
4) plus minus 10 wiersz to nazwy kolumn (nr artykułu, cena, nazwa, dodatkowo kilka kolumn nie potrzebnych mi do życia)

No i mam do zrobienia katalog produktów na stronie.

Przedstawię teraz moją wizję, bardzo proszę o uwagi/komentarze ;-)

1) arkusz excela jest ręcznie eksportowany do pliku csv
2) * tu mam problem jak to zrealizować * oddzielenie 3 najważniejszych pól od reszty (cena, nr artykułu, nazwa)
3) pokaz kategorii, produktów na stronie: produkty będę przyporządkowywał do odpowiednich kategorii zapytaniem
  1. "SELECT * FROM nazwa_tabeli WHERE nazwa LIKE '%kategoria%'"


najważniejsze założenie aplikacji jest takie, aby osoba która będzie aktualizować katalogi musiała JEDYNIE przez formularz na stronie wrzucić na serwer plik csv.

baaardzo prosze o komentarze i sugestie ;-)

pozdrawiam
ice
domis86
co to znaczy?:
"oddzielenie 3 najważniejszych pól od reszty"
__ice
Cytat(domis86 @ 5.05.2007, 18:21:00 ) *
co to znaczy?:
"oddzielenie 3 najważniejszych pól od reszty"


są np następujące pola: nr artykułu, cena, nazwa, bonus, kolor, waga

chodzi o wrzucenie do bazy TYLKO pól : nr artykułu, cena, nazwa
domis86
no to nie rozumiem w czym problem - robisz po prostu zwykly INSERT ktorym wrzucasz te trzy kolumny.
Chyba ze masz problem jak je w ogole z pliku csv wyciagnac? smile.gif
__ice
Cytat(domis86 @ 5.05.2007, 20:20:54 ) *
no to nie rozumiem w czym problem - robisz po prostu zwykly INSERT ktorym wrzucasz te trzy kolumny.
Chyba ze masz problem jak je w ogole z pliku csv wyciagnac? smile.gif



wyciąg to w ten sposób (zakładam że te pola są na samym początku, a tak w sumie nie powinno być):

  1. <?php
  2. while (($data = fgetcsv($uchwyt, 1000, ",")) !== FALSE){
  3. $db->do_query("INSERT INTO $tmp (id,nr_produktu,nazwa,cena,kolor,material) VALUES ('', '$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]');");
  4. }
  5. ?>



ale generalnie chodzi o to, że w arkuszu w excelu cena może być na samym końcu, a nazwa na początku. rozumiesz teraz o co mi chodzi ?
domis86
no to po prostu zmieniasz kolejnosc tego, i usuwasz niektore :

INSERT INTO $tmp (id,nr_produktu,nazwa,cena,kolor,material) VALUES ('', '$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]');


na np:


INSERT INTO $tmp (nr_produktu,cena,nazwa) VALUES ('$data[2]', '$data[0]', '$data[1]');
__ice
nie no to wszystko wiem ... ale

weźmy hipotetyczną sytuację
babka ma 3 katalogi
1) pierwszy katalog ma pola (w kolejności) nazwa, cena, nr
2) drugi katalog ma pola cena, ilość, nazwa, nr
3) trzeci katalog ma 5 zbędnych pól na początku, potem nazwa, ilość, nr

nie mam możliwości modyfikowania kodu za każdym razem i dostosowywania go, bo wtedy równie dobrze mógłbym sam wrzucać produkty do bazy
Kicok
  1. INSERT INTO $tmp (nr_produktu,cena,nazwa) VALUES ('$data[2]', '$data[0]', '$data[1]');

Testowałeś w ogóle to zapytanie? Nie wstawia ono danych do trzech pierwszych kolumn, tylko do kolumn podanych w nawiasie (pierwszym). Kolumny te mogą się znajdować po lewej, po prawej, a nawet w środku i nie muszą występować w takiej kolejności, w jakiej zapisane są w tym zapytaniu.


[EDIT]
No chyba że chodzi ci o odczytanie tych kilku najważniejszych kolumn z pliku CVS. Jeśli tak to w pierwszej linijce powinieneś mieć nazwy kolumn. Sprawdzasz w których kolumnach są cena, nr, nazwa itp. a później z kolejnych linii pobierasz tylko interesujące sie kolumny i wstawiasz do jakiejś tymczasowej tablicy. Potem na podstawie tej tablicy układasz zapytania SQL.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.