Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Obsługa formularza i zapisanie go do CSV. Co robię żle ?, Przekierowałem formularz do pliku PHP jednakże wywala mi błędy
Grisza
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


Słuchajcie chciałem obsłużyć zwykły formularz. I zapisać jego dane.
Co robię żle ?
Wywala mi błędy:

  1. <?php
  2. if($_POST['submit']){
  3. $list ="$_POST['imie'].", ".$_POST['nazwisko]'.", ".$_POST['instytucja']";
  4. else
  5. echo "Błąd z przesłaniem danych";
  6.  
  7. $fp = fopen('file.csv', 'a');
  8.  
  9. foreach ($list as $line) {
  10. fputcsv($fp, split(',', $line), ',', '&quot;');
  11. }
  12.  
  13. fwrite($fp, "\r\n");
  14.  
  15. fclose($fp);
  16. echo "Dziękujemy za wypełnienie zgłoszenia";
  17. ?>
Przy czym ze zwykłą ArayListą wszystko działało poprawnie
  1. <?php
  2. $list = array (
  3. 'aaa,bbb,ccc,dddd',
  4. '123,456,789',
  5. '"aaa","bbb"'
  6. );
  7.  
  8. $fp = fopen('file2.csv', 'a');
  9.  
  10. foreach ($list as $line) {
  11. fputcsv($fp, split(',', $line), ',', '&quot;');
  12. }
  13.  
  14. fwrite($fp, "\r\n");
  15.  
  16. fclose($fp);
  17. ?>
Go to the top of the page
+Quote Post
lobopol
post
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Pierwsza rzecz jaka rzuca się w oczy to nie zamknięty if, po drugie nawet jak go zamkniesz to
  1. $fp = fopen('file.csv', 'a');
  2.  
  3. foreach ($list as $line) {
  4. fputcsv($fp, split(',', $line), ',', '"');
  5. }
  6.  
  7. fwrite($fp, "\r\n");
  8.  
  9. fclose($fp);
  10. echo "Dziękujemy za wypełnienie zgłoszenia";
  11. ?>

ten fragment i tak się będzie chciał wykonać.

i czy w formularzu masz któreś pole z wartością name="submit"? jeżeli nie masz to bez niego też ci będzie wywalało błąd.

Ten post edytował lobopol 4.05.2010, 14:58:00
Go to the top of the page
+Quote Post
Blackhole
post
Post #3





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


Czemu nie wstawiłeś tu tych błędów?(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Grisza
post
Post #4





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


Tak ale jeśli to jest jedna linijka kodu, to nie trzeba go chyba zamykać ?
Bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
Blackhole
post
Post #5





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


Jak otworzyłeś klamrę, to musisz ją zamknąć.
Go to the top of the page
+Quote Post
Grisza
post
Post #6





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


W stanie takim jaki jest teraz wywala mi taki błąd:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\VertrigoServ\www\Ankieta\zapis.php on line 3

Dodam, że kod formularza wygląda tak:
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  4. <meta name="Description" content="Ankieta, mająca na celu zarejestrować zgłoszenie uczestników na warsztaty">
  5. <meta name="Keywords" content=" konferencja, warsztaty, webuzzz">
  6. <title>Ankieta przedkonferencyjna</title>
  7.  
  8. <link rel="stylesheet" href=" style.css" type="text/css">
  9. </head>
  10. <body style="background-color: #C5DDC9">
  11. <div class="content">
  12. <form enctype="text/plain" action="zapis.php" method="post">
  13. <div class="ankieta">
  14. <legend>Formularz zgłoszeniowy na warsztaty z webuzzza</legend>
  15. <p style="font-size:13px; font-style:italic; margin:13px;">Formularz zgłoszeniowy na warsztaty z tworzenia własnnej strony internetowej dla prowadzonego przez Państwa e-Centrum</p>
  16. <p>Podaj swoje imię: <input type="text" name="imie" value="tu wpisz swoje imię" size="30" maxlength="40" style="position: relative; left:68px; background-color: cornsilk;"></p>
  17. <p>Podaj swoje nazwisko: <input type="text" name="nazwisko" value="tu wpisz swoje nazwisko" size="30" maxlength="40" style="position: relative; left:40px; background-color: cornsilk;"></p>
  18. <p>Podaj swoją instytucję: <input type="text" name="instytucja" value="tu wpisz swoją instytucję" size="30" maxlength="40" style="position: relative; left:37px; background-color: cornsilk;"></p>
  19. <p>Podaj swoj mail kontaktowy: <input type="text" name="mail" value="tu wpisz swoj e-mail" size="30" maxlength="40" style="position: relative; left:5px; background-color: cornsilk;"></p>
  20. <p>Podaj swoj telefon: <input type="text" name="telefon" value="tu wpisz swoj telefon" size="30" maxlength="40" style="position: relative; left:60px; background-color: cornsilk;"></p>
  21. <legend><span style="color:green;">Wybierz warsztat w którym będziesz uczestniczyć </span><span style="color:red; font-weight: bold;">(jeden termin)</span></legend>
  22. <div style="background-color:cornsilk; margin:4px; padding:6px;">
  23. <input type="radio" name="warsztat" value="1" checked style="background-color:cornsilk;">warsztat 22.04 godz. 16-19 <span style="color:blue;">(grupa I)</span>
  24. <hr>
  25. <input type="radio" name="warsztat" value="2">warsztat 23.04 godz. 9-12 <span style="color:blue;">(grupa II)</span>
  26. <hr>
  27. <input type="radio" name="warsztat" value="3">warsztat 23.04 godz. 10-13 <span style="color:blue;">(grupa III)</span>
  28. </div>
  29. <br />
  30. <legend><span style="color:green;">Wybierz czy i w ilu noclegach będziesz uczestniczyć </span><span style="color:red; font-weight: bold;">(od jeden do wiele)</span></legend>
  31. <div style="background-color:cornsilk; margin:4px; padding:6px;">
  32. <input type="checkbox" name="nocleg" value="0">bez noclegu
  33. <hr>
  34. <input type="checkbox" name="nocleg" value="nocleg 21 kwietnia">nocleg 21 kwietnia
  35. <hr>
  36. <input type="checkbox" name="nocleg" value="nocleg 22 kwietnia">nocleg 22 kwietnia
  37. </div>
  38. <br />
  39. <center><input type="submit" value="Wyślij formularz zgłoszeniowy"> <input type="reset" value="Wyzerowanie formularza"></center>
  40. </div>
  41. </form>
  42. </div>
  43. </body>
  44. </html>
  45.  

Naprawdę się nad nim napracowałem (IMG:style_emoticons/default/smile.gif)

Jak usunąłem tą klamrę dalej mi wywala błąd:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\VertrigoServ\www\Ankieta\zapis.php on line 3

Pomimo usunięcia klamry dalej wyskakuje błąd:


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\VertrigoServ\www\Ankieta\zapis.php on line 3

Ten post edytował Grisza 4.05.2010, 15:02:09
Go to the top of the page
+Quote Post
lobopol
post
Post #7





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


zamknij tego ifa to raz, a dwa <input type="submit" name ="submit" value="Wyślij formularz zgłoszeniowy"> <input type="reset" value="Wyzerowanie formularza">

$list ="$_POST['imie'].", ".$_POST['nazwisko]'.", ".$_POST['instytucja']"; na

$list =$_POST['imie'].", ".$_POST['nazwisko'].", ".$_POST['instytucja'];

Ten post edytował lobopol 4.05.2010, 15:08:25
Go to the top of the page
+Quote Post
Grisza
post
Post #8





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


Dzięki wielkie (IMG:style_emoticons/default/smile.gif)
Teraz mi wyskakuje już taki błąd:

Błąd z przesłaniem danych
Warning: Invalid argument supplied for foreach() in C:\Program Files\VertrigoServ\www\Ankieta\zapis.php on line 10
Dziękujemy za wypełnienie zgłoszenia

Przy takim kodzie pliku zapisz.php:

  1. <?php
  2. if($_POST['submit']){
  3. $list =$_POST['imie'].", ".$_POST['nazwisko'].", ".$_POST['instytucja'];
  4. }
  5. else
  6. echo "Błąd z przesłaniem danych";
  7.  
  8. $fp = fopen('file.csv', 'a');
  9.  
  10. foreach ($list as $line) {
  11. fputcsv($fp, split(',', $line), ',', '&quot;');
  12. }
  13.  
  14. fwrite($fp, "\r\n");
  15.  
  16. fclose($fp);
  17. echo "Dziękujemy za wypełnienie zgłoszenia";
  18. ?>
  19. Bardzo proszę o pomoc. Coś dane są chyba w złym typie.


Plik CSV jest dalej pusty (IMG:style_emoticons/default/sad.gif)

Bardzo proszę, sadzę, że to już mały błąd.

Ten post edytował Grisza 4.05.2010, 17:49:15
Go to the top of the page
+Quote Post
JohnnyB
post
Post #9





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


Cytat(lobopol @ 4.05.2010, 16:06:26 ) *
<input type="submit" name ="submit" value="Wyślij formularz zgłoszeniowy">


dopisz to w końcu w formularzu ... i wyrzuć foreach, zostaw tylko

fputcsv($fp, split(',', $list), ',', '&quot;');




Go to the top of the page
+Quote Post
Grisza
post
Post #10





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


W tym właśnie rzecz, że daję submit, nawet specjalnie przekleiłem 2 razy, a dalej mi wyskakuje:


Błąd z przesłaniem danych
Warning: Invalid argument supplied for foreach() in C:\Program Files\VertrigoServ\www\Ankieta\zapis.php on line 10
Dziękujemy za wypełnienie zgłoszenia,

czyli ten if pierwszy wychwytuje jakiś błąd takjakby nie był spełniony

Jak usunąłem foreach() to teraz wyskakuje mi bez Waringa:

Błąd z przesłaniem danych
Dziękujemy za wypełnienie zgłoszenia

Jednakże plik CSV jest dalej pusty, więc nie dochodzą dane z formularza. Niewiem co się dzieje (IMG:style_emoticons/default/sad.gif)


Ten post edytował Grisza 5.05.2010, 09:06:38
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$list =$_POST['imie'].", ".$_POST['nazwisko'].", ".$_POST['instytucja'];
foreach ($list as $line) {

od kiedy to po stringu mozną foreachem leciec jak po tablicy?
Go to the top of the page
+Quote Post
Grisza
post
Post #12





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 5.05.2010, 10:04:33 ) *
$list =$_POST['imie'].", ".$_POST['nazwisko'].", ".$_POST['instytucja'];
foreach ($list as $line) {

od kiedy to po stringu mozną foreachem leciec jak po tablicy?

Myślałem, że można (IMG:style_emoticons/default/smile.gif)
Ale tutaj w ogóle nie dochodzą dane z formularza. Może gdzieś w formularzu jest błąd.
Czyli też radzisz usunąć foreach ?

Jeszcze raz wkleję kod źródłowy formularza i kod źródłowy pliku PHP:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  3. <meta name="Description" content="Ankieta, mająca na celu zarejestrować zgłoszenie uczestników na warsztaty">
  4. <meta name="Keywords" content=" konferencja, warsztaty, webuzzz">
  5. <title>Ankieta przedkonferencyjna</title>
  6.  
  7. <link rel="stylesheet" href=" style.css" type="text/css">
  8. </head>
  9. <body style="background-color: #C5DDC9">
  10. <div class="content">
  11. <form enctype="text/plain" action="zapis.php" method="post">
  12. <div class="ankieta">
  13. <legend>Formularz zgłoszeniowy na warsztaty z webuzzza</legend>
  14. <p style="font-size:13px; font-style:italic; margin:13px;">Formularz zgłoszeniowy na warsztaty z tworzenia własnnej strony internetowej dla prowadzonego przez Państwa e-Centrum</p>
  15. <p>Podaj swoje imię: <input type="text" name="imie" value="tu wpisz swoje imię" size="30" maxlength="40" style="position: relative; left:68px; background-color: cornsilk;"></p>
  16. <p>Podaj swoje nazwisko: <input type="text" name="nazwisko" value="tu wpisz swoje nazwisko" size="30" maxlength="40" style="position: relative; left:40px; background-color: cornsilk;"></p>
  17. <p>Podaj swoją instytucję: <input type="text" name="instytucja" value="tu wpisz swoją instytucję" size="30" maxlength="40" style="position: relative; left:37px; background-color: cornsilk;"></p>
  18. <p>Podaj swoj mail kontaktowy: <input type="text" name="mail" value="tu wpisz swoj e-mail" size="30" maxlength="40" style="position: relative; left:5px; background-color: cornsilk;"></p>
  19. <p>Podaj swoj telefon: <input type="text" name="telefon" value="tu wpisz swoj telefon" size="30" maxlength="40" style="position: relative; left:60px; background-color: cornsilk;"></p>
  20. <legend><span style="color:green;">Wybierz warsztat w którym będziesz uczestniczyć </span><span style="color:red; font-weight: bold;">(jeden termin)</span></legend>
  21. <div style="background-color:cornsilk; margin:4px; padding:6px;">
  22. <input type="radio" name="warsztat" value="1" checked style="background-color:cornsilk;">warsztat 22.04 godz. 16-19 <span style="color:blue;">(grupa I)</span>
  23. <hr>
  24. <input type="radio" name="warsztat" value="2">warsztat 23.04 godz. 9-12 <span style="color:blue;">(grupa II)</span>
  25. <hr>
  26. <input type="radio" name="warsztat" value="3">warsztat 23.04 godz. 10-13 <span style="color:blue;">(grupa III)</span>
  27. </div>
  28. <br />
  29. <legend><span style="color:green;">Wybierz czy i w ilu noclegach będziesz uczestniczyć </span><span style="color:red; font-weight: bold;">(od jeden do wiele)</span></legend>
  30. <div style="background-color:cornsilk; margin:4px; padding:6px;">
  31. <input type="checkbox" name="nocleg" value="0">bez noclegu
  32. <hr>
  33. <input type="checkbox" name="nocleg" value="nocleg 21 kwietnia">nocleg 21 kwietnia
  34. <hr>
  35. <input type="checkbox" name="nocleg" value="nocleg 22 kwietnia">nocleg 22 kwietnia
  36. </div>
  37. <br />
  38. <center><input type="submit" name ="submit" value="Wyślij formularz zgłoszeniowy"> <input type="reset" value="Wyzerowanie formularza"></center>
  39. </div>
  40. </form>
  41. </div>
  42. </body>
  43. </html>


  1. <?php
  2. if($_POST['submit']){
  3. $list =$_POST['imie'].", ".$_POST['nazwisko'].", ".$_POST['instytucja'];
  4. }
  5. else
  6. echo "Błąd z przesłaniem danych";
  7.  
  8. $fp = fopen('file.csv', 'a');
  9.  
  10. /*foreach ($list as $line) {
  11.   fputcsv($fp, split(',', $line), ',', '&quot;');
  12. }
  13. */
  14.  
  15. fputcsv($fp, split(',', $list), ',', '&quot;');
  16.  
  17. fwrite($fp, "\r\n");
  18.  
  19. fclose($fp);
  20. echo "Dziękujemy za wypełnienie zgłoszenia";
  21. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Myślałem, że można
I jak sobie to wyobrażales? Ze niby co będzie na wyjsciu tego foreach? Poszczegolne literki czy cos innego?

Cytat
Czyli też radzisz usunąć foreach ?
Nic nie radzę - nie chce mi się analizowac tego tematu. Przypadkiem spojrzalem na Twoj ostatni post i zwróciłem ci uwagę na blad jaki miales.
Go to the top of the page
+Quote Post
Grisza
post
Post #14





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


No liczyłem, że każdy string doda do Araylisty. Gorzej że mi nie chce skrypt wysłać na plik php. Niewiem dlaczego.
Go to the top of the page
+Quote Post
lobopol
post
Post #15





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Jakbyś był tak miły to dodaj:
  1. echo "<pre>";
  2. print_r($_POST);
  3. echo "</pre>";

w skrypcie z zapisem i napisz co wyświetliło przy przesłaniu formularza. Ten błąd świadczy o tym, że wartość $_POST['submit'] nie została przesłana
Go to the top of the page
+Quote Post
Grisza
post
Post #16





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


Czy może poprostu powinienem zrobić coś takiego ?

  1.  
  2. <?php
  3.  
  4. $list = array (
  5. '$_POST['imie'],$_POST['nazwisko'],$_POST['instytucja'],dddd',
  6. '123,456,789',
  7. '"aaa","bbb"'
  8. );
  9.  
  10. $fp = fopen('file2.csv', 'a');
  11.  
  12. foreach ($list as $line) {
  13. fputcsv($fp, split(',', $line), ',', '&quot;');
  14. }
  15.  
  16. fwrite($fp, "\r\n");
  17.  
  18. fclose($fp);
  19. ?>
  20.  


Cytat(lobopol @ 5.05.2010, 11:05:48 ) *
Jakbyś był tak miły to dodaj:
  1. echo "<pre>";
  2. print_r($_POST);
  3. echo "</pre>";

w skrypcie z zapisem i napisz co wyświetliło przy przesłaniu formularza. Ten błąd świadczy o tym, że wartość $_POST['submit'] nie została przesłana

Dobry pomysł (IMG:style_emoticons/default/smile.gif)
Ale rzeczywiście nic nie przesyła.
Wyświetlił mi tylko to:
Array
(
)
A potem już standardowo. Czyli błąd leży gdzieś chyba w formularzu.

Błąd z przesłaniem danych
Dziękujemy za wypełnienie zgłoszenia

Cytat(lobopol @ 5.05.2010, 11:05:48 ) *
Jakbyś był tak miły to dodaj:
  1. echo "<pre>";
  2. print_r($_POST);
  3. echo "</pre>";

w skrypcie z zapisem i napisz co wyświetliło przy przesłaniu formularza. Ten błąd świadczy o tym, że wartość $_POST['submit'] nie została przesłana


Może chodzi o to:

enctype="text/plain"

Ten post edytował Grisza 5.05.2010, 10:12:31
Go to the top of the page
+Quote Post
Misiur66
post
Post #17





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


  1. if($_POST['submit']){
  2. $list =$_POST['imie'].", ".$_POST['nazwisko'].", ".$_POST['instytucja'];
  3. }
  4. else


A gdzie są klamry do else?

Enctype wywal, bo tylko jakbyś pliki przesyłał to musisz zmienić. I powiedz co się stanie ;D
Go to the top of the page
+Quote Post
lobopol
post
Post #18





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Powiedz mi czemu się tak z tym foreachem uparłeś? Sformatuj sobie to co chcesz wstawić do pliku w tym ifie, a następnie doklej nową linie do pliku. Błąd jest w formularzu wywal enctype i zobaczymy (IMG:style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post
Grisza
post
Post #19





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 4.05.2010

Ostrzeżenie: (0%)
-----


Cytat(lobopol @ 5.05.2010, 11:33:35 ) *
Powiedz mi czemu się tak z tym foreachem uparłeś? Sformatuj sobie to co chcesz wstawić do pliku w tym ifie, a następnie doklej nową linie do pliku. Błąd jest w formularzu wywal enctype i zobaczymy (IMG:style_emoticons/default/smile.gif) .

Jupii dzięki chłopaki (IMG:style_emoticons/default/smile.gif)
Wywaliłem Enclipe i pomogło teraz się wszystko ładnie wyświetliło cała zawartość ale ciekawe dlaczego te Enclipe rozwalało wysyłanie formularza (IMG:style_emoticons/default/smile.gif)
Uparłem się bo było w manualu putsCSV (IMG:style_emoticons/default/smile.gif)

Ten post edytował Grisza 5.05.2010, 10:39:35
Go to the top of the page
+Quote Post
Misiur66
post
Post #20





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


Cytat
Actually, the POST forms have by default application/x-www-form-urlencoded as the enctype


Dlatego (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:12