![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 21.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mam ankiete i chciałbym zeby ankietowani wypełniali wszystkie konieczne pola ale w moejj ankiecie są dwa rodzaje pytań i odpowiedzi
- TAK/NIE (zaznaczyc mozna tylko jedna odpowiedz) - i kilka odpowiedzi do wyboru (mozna zaznaczyc wiecej niż jedna ale trzeba coś zaznaczyć) Jaki skrypt proponujecie ? Ponizej podaje plik ankieta.php i zliczanie.php [xml:1:b93c801e6e] 1</font><font size="3">. Czy Pan/i dokonuje zakupów w sklepach internetowych ?</font></strong><br> <input type=radio name=odp1 value=tak> Tak <br> <input type=radio name=odp1 value=nie> Nie <br> <strong><font size="3">2. Jezeli nie to z jakich powodow ?</font></strong><br> <input type=checkbox name=odp2a value=internet> Brak dostepu do internetu <br> <input type=checkbox name=odp2b value=zaufanie> Brak zaufania do internetowego handlu <br> <input type=checkbox name=odp2c value=dostep> Brak bezposredniego dostepu do towaru <br> <input type=checkbox name=odp2d value=platnosci> Brak zaufania do sposobow platnosci<br> <input type=checkbox name=odp2e value=obawa> Obawa przed ujawnieniem danych osobowych<br> <input type=checkbox name=odp2f value=doswiadczenie> Brak doswiadczenia <br> <input type=checkbox name=odp2g value=towary> Brak interesujących towarow <br> <input type=checkbox name=odp2h value=stracilem> Straciłem/am zaufanie do tej formy sprzedaży<br> Inne jakie ? <input name=innaodp type=text size=50> [/xml:1:b93c801e6e]zliczanie.php [php:1:b93c801e6e]<?php $file="dane1.txt"; // tu wpisz nazwe pliku txt w którym maj1 bya przechowywane dane. switch($odp1) { case tak: $plik=file($file); $linija=explode("||", $plik[0]); $linija[0]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; case nie: $plik=file($file); $linija=explode("||", $plik[0]); $linija[1]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; } ?> <? $file="dane2.txt"; // tu wpisz nazwe pliku txt w którym maj1 bya przechowywane dane. switch($odp2a) { case internet: $plik=file($file); $linija=explode("||", $plik[0]); $linija[0]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]||$linija[5]||$linija[ ]||$linija[7]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; } ?> <? $file="dane2.txt"; // tu wpisz nazwe pliku txt w którym maj1 bya przechowywane dane. switch($odp2b) { case zaufanie: $plik=file($file); $linija=explode("||", $plik[0]); $linija[1]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]||$linija[5]||$linija[ ]||$linija[7]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; } ?> <? $file="dane2.txt"; // tu wpisz nazwe pliku txt w którym maj1 bya przechowywane dane. switch($odp2c) { case dostep: $plik=file($file); $linija=explode("||", $plik[0]); $linija[2]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]||$linija[5]||$linija[ ]||$linija[7]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; } ?>[/php:1:b93c801e6e] [zmoderowane] <rzseattle> kod html prosze umieszczac w znacznikach XML a nie php |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o input tyou radio, daj przy jednym z nich "selected":
[xml:1:ea823104eb] <input type=radio name=odp1 value=tak selected> Tak <br> <input type=radio name=odp1 value=nie> Nie <br> [/xml:1:ea823104eb]... i z dyńki Pozostałe checkboxy radziłbym nazwać np. odp2[0], odp2[1] etc... i po wysłaniu sprawdzić przy pomocy foreach, lub each, np.: [php:1:ea823104eb]<?php while (list($key) = each($_POST['odp2'])) { if ($_POST['odp2'][$key] == ""){$alert .="nie wybrano odpowiedzi nr $key";} } if (!isset($alert)) { // ZAPISZ } else { echo($alert); } ?>[/php:1:ea823104eb] -------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 21.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Zrobilem tak jak mi pokazales ale nic sie nie dzieje
ankieta.php (część kodu ankiety) 3</font><font size="3">. Czy w przyszłości zamierza Pan/i korzystac z oferty sklepów internetwowych ?<br> <input type=radio name=odp3 value=tak selected> </font></strong><font size="3">Tak <strong><br> <input type=radio name=odp3 value=nie> </strong>Nie</font> zliczanie.php [php:1:beee17c426]<?php while (list($key) = each($_POST['odp3'])) { if ($_POST['odp3'][$key] == ""){$alert .="nie wybrano odpowiedzi nr $key";} } if (!isset($alert)) { // ZAPISZ } else { echo($alert); } ?>[/php:1:beee17c426] [php:1:beee17c426]<?php $file="dane3.txt"; // tu wpisz nazwe pliku txt w którym maj1 bya przechowywane dane. switch($odp3) { case tak: $plik=file($file); $linija=explode("||", $plik[0]); $linija[0]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; case nie: $plik=file($file); $linija=explode("||", $plik[0]); $linija[1]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; } ?>[/php:1:beee17c426] Czy może mi ktos powiedzieć co z tym skryptem jest zle ? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Co do radio, nie musisz go sprawdzać... Musi być poprawny, bo nie da się zostawić pustego pola.
Checkboxy proponowałem nazwać odp2[0] i wtedy sprawdzić całą tabelę przy pomocy [manual:0d3222f3c7]each[/manual:0d3222f3c7] -------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 21.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
A co powoduje "selected" w innpucie typu radio ? Czy powoduje jego zaznaczenie ? Bo jeżeli tak to tym sposobem bede ankietowanym sugerował odpowiedz.
Chce zrobić coś takiego: mm pytanie - diwe odpowiedzi TAK/NIE>. gdy niz nie zostanie zaznaczone w momęcie oddania glosu pytania w ktore zostały pprawnie zaznaczone sa ukrywane a nie zaznaczone sa widoczne i zarazem widoczny jest komunikat "popraw" itp. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat A co powoduje "selected" w innpucie typu radio ? Czy powoduje jego zaznaczenie ?
Kod <input type="radio" name="nazwa" value="true" CHECKED>
-------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat A co powoduje "selected" w innpucie typu radio ? Czy powoduje jego zaznaczenie ?
Rzeczywiście nie selected, tylko checked, przepraszam ![]() Cytat Chce zrobić coś takiego: mm pytanie - diwe odpowiedzi TAK/NIE>. gdy niz nie zostanie zaznaczone w momęcie oddania glosu pytania w ktore zostały pprawnie zaznaczone sa ukrywane a nie zaznaczone sa widoczne i zarazem widoczny jest komunikat "popraw" itp.
użyj do tego pętli, którą Ci wcześniej opisałem... Jeśli wpis jest poprawny wyświetlasz pole typu hidden, jeśli nie - select. Pętla powinna wyglądać tak: [php:1:0366d91a7d]<?php while (list($key, $value) = each($_POST['odp2'])) { // tu sprawdzanie i wyświetlanie } ?>[/php:1:0366d91a7d] -------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 21.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Z imputy typu "radio" sie udało. ale za Chiny nie moge zrobic tego z checboxami nadal nie wymusza zaznaczenia ktoregokolwiek z pol
moze cos z kodem pochrzanilem. Oto czesc kodu [php:1:a75099c6df]<?php while (list($key, $value) = each($_POST['odp2'])) { // tu sprawdzanie i wyświetlanie } $file="dane2.txt"; // tu wpisz nazwe pliku txt w którym maj1 bya przechowywane dane. switch($odp2[0]) { case internet: $plik=file($file); $linija=explode("||", $plik[0]); $linija[0]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]||$linija[5]||$linija[ ]||$linija[7]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; } ?> <? $file="dane2.txt"; // tu wpisz nazwe pliku txt w którym maj1 bya przechowywane dane. switch($odp2[1]) { case zaufanie: $plik=file($file); $linija=explode("||", $plik[0]); $linija[1]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]||$linija[5]||$linija[ ]||$linija[7]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; } ?> <? $file="dane2.txt"; // tu wpisz nazwe pliku txt w którym maj1 bya przechowywane dane. switch($odp2[2]) { case dostep: $plik=file($file); $linija=explode("||", $plik[0]); $linija[2]++; $all="$linija[0]||$linija[1]||$linija[2]||$linija[3]||$linija[4]||$linija[5]||$linija[ ]||$linija[7]"; $pl=fopen("$file", "r+"); fwrite($pl, $all); fclose($pl); break; } ?>[/php:1:a75099c6df] |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
[php:1:13ef62b590]<?php
while (list($key, $value) = each($_POST['odp2'])) { // tu sprawdzanie i wyświetlanie } ?>[/php:1:13ef62b590] - to nie wystarczy. musisz w tej pętli sprawdzić, czy wszystkie odp2 mają wartości, np.: [php:1:13ef62b590]<?php while (list($key, $value) = each($_POST['odp2'])) { if ($value == ""){$alert .="nie wybrano odpowiedzi nr $key";} } if (!isset($alert)){ // kod zapisu do pliku; } else { echo($alert); } ?>[/php:1:13ef62b590] -------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 103 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat [php:1:d55867dced]<?php
while (list($key, $value) = each($_POST['odp2'])) { if ($value == ""){$alert .="nie wybrano odpowiedzi nr $key";} } if (!isset($alert)){ // kod zapisu do pliku; } else { echo($alert); } ?>[/php:1:d55867dced] Hej, jeśli jeszcze dobrze pamiętam właściwości checkbox'a to kodzik z góry nigdy nie zwroci Ci info ze jakis z checkboxow nie jest 'zaznaczony'. Z obiektem tego typu (checkbox) jest problem tego typu iż jeżeli nie jest on "checked" to zmienna o nazwie , w tym przypadku np. $odp[2] nie pojawi się powiedzmy w kodzie ( po submicie nie zostanie ona przekazana do skryptu). Jeśli się myle prosze poprawcie mnie. A tak dodając z własnego doświadczenia , to do nazywnia checkboxow i ich obslugi rowniez uzywam el. tablicy , tylko że asocjacyjnej. Nazwy wygladaj wtedy $checkbox['pyt1'].Wtedy taki kodzik wyglada tak : [php:1:d55867dced] foreach($tablica_pytan as $pytanie){ if(empty($_POST['checkbox'][$pytanie])){ $_error.="Prosze o uzupełnienie odp. do pytania ".$pytanie."n"; } } echo $_error; [/php:1:d55867dced] Mam nadzieje , że to coś pomoże. Pozdrawiam |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 296 Pomógł: 0 Dołączył: 9.05.2002 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Hej, jeśli jeszcze dobrze pamiętam właściwości checkbox'a to kodzik z góry nigdy nie zwroci Ci info ze jakis z checkboxow nie jest 'zaznaczony'. Z obiektem tego typu (checkbox) jest problem tego typu iż jeżeli nie jest on "checked" to zmienna o nazwie , w tym przypadku np. $odp[2] nie pojawi się powiedzmy w kodzie ( po submicie nie zostanie ona przekazana do skryptu). Jeśli się myle prosze poprawcie mnie.
absolutna racja. mój błąd. each można więc zastosować tu tylko jeśli wiemy ile checkboxów być powinno, więc: [php:1:5030f541bd]<?php if (count($_POST['odp2']) == "5"){ // 5 to liczba wszystkich checkboxów // kod zapisu do pliku; } else { echo("nie wybrano wszystkich pól"); } ?>[/php:1:5030f541bd] [manual:5030f541bd]each[/manual:5030f541bd] nie ma tu zastosowania -------------------- audaces fortuna iuvat!
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 21.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Cytat Hej, jeśli jeszcze dobrze pamiętam właściwości checkbox'a to kodzik z góry nigdy nie zwroci Ci info ze jakis z checkboxow nie jest 'zaznaczony'. Z obiektem tego typu (checkbox) jest problem tego typu iż jeżeli nie jest on "checked" to zmienna o nazwie , w tym przypadku np. $odp[2] nie pojawi się powiedzmy w kodzie ( po submicie nie zostanie ona przekazana do skryptu). Jeśli się myle prosze poprawcie mnie.
absolutna racja. mój błąd. each można więc zastosować tu tylko jeśli wiemy ile checkboxów być powinno, więc: [php:1:f79663e45f]<?php if (count($_POST['odp2']) == "5"){ // 5 to liczba wszystkich checkboxów // kod zapisu do pliku; } else { echo("nie wybrano wszystkich pól"); } ?>[/php:1:f79663e45f] [manual:f79663e45f]each[/manual:f79663e45f] nie ma tu zastosowania Jeszcze nie o to mi chodzilo. Mam 5 checkboxów i w momęcie gdy zaznaczam tylko jednego pojawia sie "Nie wypełniles.....", zaznaczam dwa - to samo. Ale gdy zaznacze wszystkie 5 to dopiero wtedy komunikat znika. A gdy liczbe checkboxów zmienilem na 1 to komunikat "nie wypelniles..." pojawia sie w momęcie zaznaczenia 2 odpowiedzi ale jak zaznaczy tylko jedna to jest OK. Jest jescze jeden problem a mianowicie w momęcie gdy ankietowany nie zaznaczy wszystkich wymaganych pól (conajmniej jednego) to i tak skrypt zliczajacy zlicza te glosy mimo tego ze zle zaglosował. Ja sobie wyobrazalem to tak ze jak zaglosuje zle to pojawia sie ztrona popraw.php a jak wszystko ok to strona zliczanie.php ktora zliczy prawidlowe glosy. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 21.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Czy moze mi ktos pomóc ?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:02 |