Wpis z mikrobloga

#php.owe mirki, chcę zrobić formularz, który będzie zapisywał odpowiedzi do pliku csv. Oto co na razie mam:

w index.html:

Podaj swoje imię:

Podaj swój wiek:

Pytanie nr 1:Prawda Fałsz

Pytanie nr 2:Prawda Fałsz

Pytanie nr 3:Prawda Fałsz

w dane.php:

php<br/
$list = array (

array($POST['imie']),

array($
POST['wiek']),

array($_POST['Pyt1']),

array($_POST['Pyt2']),

array($_POST['Pyt3']),

);

$filename= "2.csv";

$fp = fopen('1.csv', 'w');

foreach ($list as $fields) {

fputcsv($fp, $fields,',','"');

}

fclose($fp);

?>

W formularzu na razie są 3 pytania z radio buttonami, chciałbym aby było ich 30: Pyt nr 1, Pyt nr 2, ... , Pyt nr 29, Pyt nr 30. Pytanie jak to zrobić w pętli?

#programowanie
  • 13
@lasso: Jako nazwy inputów możesz ustawić coś takiego name="pyt[]" automatycznie stworzy ci tablicę array.

Ten zapis: array($POST['imie']), wydaje się kompletnie bez sensu, tworzysz jednoelementową tablicę, możesz napisać po prostu

array($POST['imie'], POST['wiek'] itd... ale najlepiej byłoby to zrobić tak:

array(

'imie' => $post...,

'wiek' => $post...,

'pytania' => array(

$post...,

$post...

...

),

)

Lub użyć stdClass jeśli koniecznie chcesz trzymać to w jednej zmiennej/obiekcie.

Polecam również użycie funkcji http://pl1.php.net/file_put_contents jest bardzo
array(
'imie' => $post...,
'wiek' => $post...,
'pytania' => array(
$post...,
$post...
...
),
)
Nie zwracajcie uwagi, tylko testuje wykop code syntax highlighting
@bnormal @michal__q Jeżeli usunę tę jedno elementowe tablice to wyskakują mi błędy

kod:

php</pre
$list = 

**
array

**
 (


        $POST[

_
'imie'

_
],


        $
POST[

_
'wiek'

_
],


        $POST[

_
'Pyt1'

_
],


        $
POST[

_
'Pyt2'

_
],


    $POST[

_
'Pyt3'

_
],


);


$fp = 

**
fopen

**
(

_
'1.csv'

_


_
'w'

_
);

**
foreach

**
 ($list 

**
as

**
@Xayan działa, ale wszystkie wartości w pliku csv są teraz w jednej linii, oddzielone przecinkami, a chcę żeby każda wartość była w osobnej linii.
@Xayan: Super działa, dzięki.

Mam jeszcze jedno pytanie:

Jak zrobić, żeby ten kod był wykonywany w pętli, tak aby wyświetlić na stornie np. 30 pytań. Próbowałem z echo, ale jest problem z cudzysłowami i nie działa.

Pytanie nr 1 


Prawda



Fałsz

Dla przykładu próbowałem wyświetlić w pętli to:

Pytanie nr 1 :Prawda Fałsz

i chciałem zrobić tak jak poniżej, ale nie działa

for( $x = 1; $x <= 10; $x++ ){
echo 'Pytanie nr '.$x.'  :Prawda Fałsz

';

}
@Xayan zamiast wyświetlić w pętli Pytanie nr x i po dwa pola radio wyświetla na stornie:

';} } ?>

Jeśli wpisze: Pytanie nr 1 :Prawda Fałsz

to działa dobrze
Już wiem o co chodzi ten kod miałem w pliku html, w którym nie był interpretowany kod php. Umieściłem w pliku php i zaczęło działać. Jeśli chodzi o cudzysłów to poradziłem sobie poprzez dodanie znaku \ przed każdym " w kodzie html. Działa jak chciałem :)