Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Aplikacja dzialajaca na zasadzie 'upload csv > run mysql > download csv'
Forum PHP.pl > Forum > PHP
alekto
Czesc,

Dopiero zaczynam z PHP. Chcę napisać prostą aplikację i chyba 'utknąłem'.

Co chcę mieć:
1. użytkownik ładuje przez formularz plik csv (załóżmy, że plik ma zawsze jedną kolumnę)
2. każda komórka z pliku csv ma posluzyc jako parametr do zapytania mysql
3. wynik zapytania ma zostać zwrócony jako plik csv; do ściągniecia przez użytkownika. (nie mam możliwości użycia 'SELECT INTO OUTFILE' - brak uprawnien)

Co mam:
1. Zaladowany plik zostanie zapisany jako tablica:
  1. $tablica = file($sciezka, FILE_IGNORE_NEW_LINES);


Czyli np.
Array
(
[0] => rower
[1] => rolki
[2] => balon
)

2. Połączenie z bazą i zapytanie:
  1. $conn = new mysqli(/*polaczenie*/);
  2. /*tutaj spradzam polaczenie*/
  3. $sql_test = 'select nazwa, cena from tabela where nazwa in ( ? )';
  4. $stmt = $conn->prepare($sql_test);

Pytanie: Czy możliwe jest użycie bind_param() z wartościami z $tablicy, jeśli nie wiem, ile elementów za każdym razem będzie mieć tablica?

3. Zapisanie wyniku jako csv: wynik chcę najpierw zapisać jako kolejną tablicę i przetworzyć ją na plik CSV przy użyciu fputcsv().
Pytanie: Czy to dobra droga?

Absolutnie nie oczekuję gotowych rozwiązań wink.gif Ale będę wdzięczny za wszystkie wskazówki.
Damonsson
2. lecisz sobie foreach po tablicy i generujesz na tej podstawie zapytanie do bazy, przykładowo
  1. $sql_test = 'select nazwa, cena from tabela where nazwa in ('
  2. foreach($twojaTablica){
  3. $sql_test .= '?,';
  4. }
  5. $sql_test .= ')';


i dla bindowania analogicznie. To totalny pseudokod oczywiście, tylko żebyś wiedział jak do tego podejść.

3. Dokładnie, chyba najpowszechniejsze rozwiązanie i nie widzę jakichś minusów.
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.