![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
Bardzo prosiłabym o pomoc w poniższej sprawie.
Postanowiłam zautomatyzować tworzenie formularzy, żeby nie wpisywać kilka razy input, type, text i innych powtarzających się słów. Użyłam programu EXCEL i plików CSV. Po prostu podzieliłam całe pole input na kolumny, podobnie label. I zamiast wpisywać ileś razy to samo po prostu zaznaczam komórkę i przeciągam w dół. Oczywiście zdefiniowałam input id jako zawartość komórki label for. Po tym wczytuję plik i wyświetlam. I to działa, nie ma błędów z identyfikatorami i jestem bardzo zadowolona z efektu. Ale gorzej jeśli chce mieć w formularzu pole textarea albo opcje: chceckbox i radio. Wtedy wpisywanie do EXCEL trochę się rozjeżdża i nie jest już dla mnie takie wygodne. Chciałam WAS zapytać czy lepiej robić to dalej przy pomocy EXCEL czy zrezygnować z niego i przejść zupełnie do PHP? Trochę obawiam się, że w PHP będzie jeszcze więcej pisania, bo będę musiała sprawdzać czy teraz wyświetlany element formularza to input, czy textarea, czy coś innego. W ogóle bardzo zależałoby mi na tym abym po wypełnieniu formularza miała tabelę z wartościami (to jest w $_POST) i nazwami tych pól formularza. Bo chciałabym aby po niepełnym jego wypełnieniu pokazywał się formularz, a przy niewypełnionych polach informacje, że trzeba je wypełnić. Czyli muszę mieć to połączenie nazwy i wartości. Ale nie mogę wykorzystać indeksów tekstowych z $_POST bo tam nie mogłam używać polskich znaków, a dziwnie tak bez nich wyświetlać napisy. A dwa może w przyszłości chciałabym mieć w tej tablicy poza nazwą i wartością również nazwę odmienioną przez rodzaje/przypadki. Abym mogła wyświetlać tego typu napisy: Nie podałaś Miejscowości z której pochodzisz. Proszę o radę i pomoc jak mogłabym uzyskać taki efekt najsprawniej i najmniejszym nakładem pracy, tak aby jego modyfikacja nie była czasochłonna i trudna - jednym słowem jak mogłabym to dobrze zautomatyzować? Jola Mikołowska |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Przeczytałem ten teks 2 razy i chyba nie do końca rozumiem niektórych rzeczy
![]() Ogólnie tworzenie dużej ilości pól formularza będzie prostsze w php bo załatwi to 1 pętla, lub ewentualnie jedna do danego typu pola. I co rozumiesz przez: Ale nie mogę wykorzystać indeksów tekstowych z $_POST bo tam nie mogłam używać polskich znaków Wartością dla $_POST może być dowolny ciąg znaków, z polskimi znakami równierz. Chyba, że chodzi Ci o nazwę zmiennej $_POST['ąęźżćś'] wywali oczywiście błąd, ale $_POST['nazwa']='ąćśćźżó' nie sprawi żadnego problemu.Tworzenie dużej ilości input'ów można zrobić np. prostą pętlą for: I gotowe. Dla $j podajesz ile pól ma się stworzyć. Jeśli chcesz aby nazwy inputów były nie tylko samą cyfrą to musi to wygłądać tak: Wtedy nazwa input będzie wyglądać tak: jakas_Twoja_nazwa_pola_1, jakas_Twoja_nazwa_pola_2 itd. Ten post edytował sadistic_son 12.07.2009, 21:19:10 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
Idea jest prosta. W formularzu jest ileś pól input/text. Przykładowo: imię, nazwisko, adres e-mail, ulubiony kolor. I wpisywanie tych wszystkich powtarzających sie ciągów znaków w kodzie html/php uznałam za mało fajne. Chciałam sobie ułatwić życie na przyszłość.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
Napisz sobie prosty importer z plików csv + prosta walidacja. nie ma sensu przeklepywać wszystkiego z excella.
-------------------- The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1 MySQL Client API version : 5.0.27 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
I co rozumiesz przez:Wartością dla $_POST może być dowolny ciąg znaków, z polskimi znakami równierz. Chyba, że chodzi Ci o nazwę zmiennej $_POST['ąęźżćś'] wywali oczywiście błąd, ale $_POST['nazwa']='ąćśćźżó' nie sprawi żadnego problemu. Skoro mówiła o indexach to nie o wartościach... Idea jest prosta. W formularzu jest ileś pól input/text. Przykładowo: imię, nazwisko, adres e-mail, ulubiony kolor. I wpisywanie tych wszystkich powtarzających sie ciągów znaków w kodzie html/php uznałam za mało fajne. Chciałam sobie ułatwić życie na przyszłość. Napisz sobie klasę do generowania formularzy. ![]() Skoro wiesz, że masz np. 3 inputy typu text i znasz ich id/name to robisz w php taki trick:
(nie wiem czy działa, pisane podczas posta ;d ) -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
Darti Mógłbyś mi napisać co dokładnie masz na myśli? Co trzymać w pliku CSV a co nie? I jak to efektywnie potem przerabiać miałabym na formularz. Bo przecież są różne pola: textarea, input/radio, input/text. Bardzo Cię proszę napisz mi dokładniej jak to powinno według Ciebie funkcjonować?
Ten post edytował jolam 13.07.2009, 10:53:29 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
Darti Mógłbyś mi napisać co dokładnie masz na myśli? Co trzymać w pliku CSV a co nie? I jak to efektywnie potem przerabiać miałabym na formularz. Bo przecież są różne pola: textarea, input/radio, input/text. Bardzo Cię proszę napisz mi dokładniej jak to powinno według Ciebie funkcjonować? Zakładam że masz wszystko w excellu i masz możliwość eksportu z niego do csv. Jeśli tak, to nie ma sensu przeklepywać tego do formularzy w przeglądarce - w końcu nie od tego są komputery. najprościej coś takiego:
Ten post edytował Darti 13.07.2009, 11:32:42 -------------------- The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1 MySQL Client API version : 5.0.27 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
fifi209 Twoja odpowiedź najbardziej mi pomogła, o czymś takim myślałam. Z pliku CSV odczytuję nazwy pól i potem je umieszczam w tablicy. Mam jeszcze jedną trudność, Co zrobić aby przy takim definiowaniu tabeli odwołać się do któregoś jej elementu
$inputy = array( array('type' => 'text', 'name' => 'imie', 'id' => funkcja($inputy[]['name']), );. Powyższy fragment oczywiści nie działa. Czy da się coś takiego zrobić? Aby odwołać się do elementu przed chwilą zdefiniowanego? Bardzo by mi to pomogło. Darti coś podobnego napisałam ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
fifi209 Twoja odpowiedź najbardziej mi pomogła, o czymś takim myślałam. Z pliku CSV odczytuję nazwy pól i potem je umieszczam w tablicy. Mam jeszcze jedną trudność, Co zrobić aby przy takim definiowaniu tabeli odwołać się do któregoś jej elementu $inputy = array( array('type' => 'text', 'name' => 'imie', 'id' => funkcja($inputy[]['name']), );. Powyższy fragment oczywiści nie działa. Czy da się coś takiego zrobić? Aby odwołać się do elementu przed chwilą zdefiniowanego? Bardzo by mi to pomogło. Darti coś podobnego napisałam ![]() Bo w [] musisz podać index czyli hmm, zamknąć to jakoś w klasie? ![]() Powiedz mi dokładniej co chcesz zrobić to postaram się pomóc / coś napisać / podpowiedzieć. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
fifi209 mam:
$inputy = array( array('type' => 'text', 'name' => 'Imię', 'id' => funkcja($inputy[]['name']), );. napisałam funkcję wycinającą polskie litery i chciałabym jej użyć na 'name' aby otrzymać 'id'. I nie wiem jak to zrobić ![]() Jeśli będziesz tak miły, to powiedz mi również jak dokładnie działają referencje. Jeśli miałabym: foreach( $tab as &$item) { $item=$item+2; } to będzie działać, ale jeśli miałabym: $zm=4; foreach( $tab as &$item) { $zm=$item+2; // to bez sensu, ale chodziło mi o przykład } to $zm nadal będzie równe 4. Jak mogłabym to zmienić? Mam jeszcze taką sprawę. Dwie tablice $tab1 i $tab2 i chciałabym móc operować na wszystkich parach elementów (jeden z $tab1 i jeden z $tab2). Coś w rodzaju foreach( $tab1 as $t) { $t=$t+$t2 // chodziło mi o element z drugiej tablicy } Jak to zrobić? Bardzo Cie proszę pomóż mi. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
fifi209 mam: $inputy = array( array('type' => 'text', 'name' => 'Imię', 'id' => funkcja($inputy[]['name']), );. napisałam funkcję wycinającą polskie litery i chciałabym jej użyć na 'name' aby otrzymać 'id'. I nie wiem jak to zrobić ![]() Raczej się tak nie da... ;p Ew. W klasie zapisać po kolei każdą zmienną, i na końcu tworzyć array ale to troszkę bez sensu lepsze będzie ctrl + c, ctrl + v ;p Jeśli będziesz tak miły, to powiedz mi również jak dokładnie działają referencje. Jeśli miałabym: foreach( $tab as &$item) { $item=$item+2; } to będzie działać, ale jeśli miałabym: $zm=4; foreach( $tab as &$item) { $zm=$item+2; // to bez sensu, ale chodziło mi o przykład } to $zm nadal będzie równe 4. Jak mogłabym to zmienić? np.
Mam jeszcze taką sprawę. Dwie tablice $tab1 i $tab2 i chciałabym móc operować na wszystkich parach elementów (jeden z $tab1 i jeden z $tab2). Coś w rodzaju foreach( $tab1 as $t) { $t=$t+$t2 // chodziło mi o element z drugiej tablicy } Jak to zrobić? Bardzo Cie proszę pomóż mi.
Sprawdź co ten kod wyrzuci. (powinno działać, pod warunkiem że tablice mają te same długości i takie same klucze) Ten post edytował fifi209 13.07.2009, 22:00:10 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
Raczej się tak nie da... ;p Ew. W klasie zapisać po kolei każdą zmienną, i na końcu tworzyć array ale to troszkę bez sensu lepsze będzie ctrl + c, ctrl + v ;p
Rozumiem. A jak mając tablice przykładową: $t1 = array( array( 'a' => 'A'), array( 'b' => 'B')) mogłabym stworzyć nową tablicę: $t2 = array( array( 'a2' => funkcja($t1['a']), array( 'b2' => funkcja($t1['b'])); czyli, żeby nowa tablica zawierała tablice, której elementy postały w skutek użycia funkcji na elementach podtablic starej tablicy. I jak później mogłabym połączyć te tablice aby otrzymać: $t3= array( array( 'a' => 'A', 'a2' => 'A2'), array( 'b' => 'B', 'b2' => 'B2')); gdzie te a2, b2 to indeksy z tablicy $t2 a A2, B2 to wartości. Wtedy rozwiązałabym swój problem, gdybym potrafiła to zrobić. Wiem, że mogę używać global, ale czy da się inaczej, jakoś przez ta referencję? Chciałabym, żeby wartość zmiennej zmienionej w foreach lub funkcji nie była kasowana po jej opuszczeniu. Ale obawiam sie pomyłek zmiennych w czasie użycia global. |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Naturalnie, można łączyć tablice więcej w manualu: http://pl.php.net/manual/pl/book.array.php ew. "ręcznie" (samemu coś napisać)
Ten post edytował fifi209 14.07.2009, 08:53:46 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) ![]() ![]() |
Nie potrafię tego zrobić:( Jest array merge, ale nie potrafię tego zrobić tak jak napisałam w poscie wyżej. Prosze pomóż mi, napisz po kolei jakich funkcji i jak mam użyć.Pozdrawiam
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 14:59 |