Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Formularz problem.., ..z polami wielokrotnego wyboru
AdiPL
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.05.2010

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


Witam. Mam problem z formularzem w PHP. Zasada działania jest taka, że wypełnione dane formularza mają zapisać się do pliku. Wszystko jest w porządku, ale mam tam pola wielokrotnego wyboru. Mam dwa problemy:
1) Co zrobić, żeby wszystkie zaznaczone pola w polach wielokrotnego wyboru zapisywały się do pliku??
2) Co zrobić, aby zapis do pliku tekstowym nie był zapisem w jednej linii, a wiersz pod wierszem??
Chciałbym, aby ten skrypt był w jednym pliku. Poniżej kod. Proszę o pomoc i z góry dziękuję.
Kod
<?php

$imie = trim($_POST['imie']);
$nazwisko = trim($_POST['nazwisko']);
$plec = trim($_POST['plec']);
$wiek = trim($_POST['wiek']);
$przegladarka = trim($_POST['przegladarka']);
$system = trim($_POST['system']);
$komentarz = trim($_POST['komentarz']);
$komentarz2 = trim($_POST['komentarz2']);

if(empty($imie) and empty($nazwisko)) {
    
echo '<form action="" method="post">
Podaj imię <br/>
        <input type="text" name="imie" /><br/>
        
        Podaj nazwisko <br/>
        <input type="text" name="nazwisko" /><br/><br/>
        
        Płeć<br/>
        <input type="radio" name="plec" value="Mężczyzna" />Mężczyzna
        <input type="radio" name="plec" value="Kobieta" checked="checked"/>Kobieta
        <br/><br/>
        Ile masz lat?<br/>
        <input type="radio" name="wiek" value="mniej niz 15" />Mniej niż 15 <br/>
        <input type="radio" name="wiek" value="15-19" />15-19<br/>
        <input type="radio" name="wiek" value="20-29" />20-29<br/>
        <input type="radio" name="wiek" value="30-39" />30-39<br/>
        <input type="radio" name="wiek" value="40-50" />40-60<br/>
        <input type="radio" name="wiek" value="wiecej niz 60" />Więcej niż 60<br/><br/>
        
        
        Jakiej przeglądarki internetowej używasz? <br/>
        <select name="przegladarka" multiple="multiple">
            <option selected>Internet explorer<br/>
            <option>Google Chrome<br/>
            <option>Mozilla Firefox<br/>
            <option>Opera<br/>
            <option>Netscape<br/>
            <option>Inna<br/>
        </select><br/><br/>
        
        Z jakimi systemami miałeś styczność(IMG:style_emoticons/default/questionmark.gif) (trzymając CTRL zaznaczysz kilka pozycji) <br/>
        <select name="system" multiple size="6">
            <option>Windows<br/>
            <option>Linux<br/>
            <option>Mac OSX<br/>
            <option>BSD<br/>
            <option>OS/2<br/>
            <option>Inny<br/>
        </select><br/><br/>
        
        Wpisz tu swój komentarz: <br/>
        <textarea name="komentarz" cols="50" rows="10" style="white-space: normal">
        </textarea><br/><br/>
        
        Naciśnij Alt+w żeby znaleźc się w tym polu tekstowym: <br/>
        <textarea name="komentarz2" cols="40" rows="5" style="white-space: normal" accesskey="w">
        </textarea><br/><br/>
<input type="submit" value="Zapisz" />
</form>';
}
else {
$dane = $imie."`".$nazwisko."\n".$plec."\n".$wiek."\n".$przegladarka."\n".$system."\n".$komentarz."\n".$komentarz2."\n";
$file = "baza.txt";
$fp = fopen($file, "a");
flock($fp, 2);
fwrite($fp, $dane);
flock($fp, 3);
fclose($fp);
  
}

?>


Ten post edytował AdiPL 20.05.2010, 09:31:06
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Na swoje pytania odpowiedź znajdziesz w byle jakim kursie php albo w szukajce (nie wspomnę o Google).
1. Musisz użyć w selektach <option value="", przechwycić dane przesłane w $_POST i zapisać.
2. Musisz użyć \n - tak jak masz zresztą...
3. Musisz formularz przekierować na plik, w którym masz ów formularz.
Go to the top of the page
+Quote Post
AdiPL
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.05.2010

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


Niestety w google nie znalazłem odpowiedzi na moje pytania, dlatego pytam na tym forum. Nie mam pojęcia jak to zrobić. A "\n" nie działa, bo jest wszystko w jednej linii.
Go to the top of the page
+Quote Post
Mefiuu
post
Post #4





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


Kod
echo '<form action="" method="post">

A gdzie masz choćby nawet instrukcję gdzie przetwarzać ten formularz?
Kod
echo '<form action="do_jakiego_pliku_przeslac_i_przetworzyc.php" method="post">

Najpierw przeczytaj podstawy php : www.php.net/manual
Go to the top of the page
+Quote Post
tehaha
post
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


  1. <?php
  2.  
  3. if(!isset($_POST['submit'])) {
  4.  
  5. echo '<form action="" method="post">
  6. Podaj imię <br/>
  7. <input type="text" name="imie" /><br/>
  8.  
  9. Podaj nazwisko <br/>
  10. <input type="text" name="nazwisko" /><br/><br/>
  11.  
  12. Płeć<br/>
  13. <input type="radio" name="plec" value="Mężczyzna" />Mężczyzna
  14. <input type="radio" name="plec" value="Kobieta" checked="checked"/>Kobieta
  15. <br/><br/>
  16. Ile masz lat?<br/>
  17. <input type="radio" name="wiek" value="mniej niz 15" />Mniej niż 15 <br/>
  18. <input type="radio" name="wiek" value="15-19" />15-19<br/>
  19. <input type="radio" name="wiek" value="20-29" />20-29<br/>
  20. <input type="radio" name="wiek" value="30-39" />30-39<br/>
  21. <input type="radio" name="wiek" value="40-50" />40-60<br/>
  22. <input type="radio" name="wiek" value="wiecej niz 60" />Więcej niż 60<br/><br/>
  23.  
  24.  
  25. Jakiej przeglądarki internetowej używasz? <br/>
  26. <select name="przegladarka[]" multiple="multiple">
  27. <option selected>Internet explorer<br/>
  28. <option>Google Chrome<br/>
  29. <option>Mozilla Firefox<br/>
  30. <option>Opera<br/>
  31. <option>Netscape<br/>
  32. <option>Inna<br/>
  33. </select><br/><br/>
  34.  
  35. Z jakimi systemami miałeś stycznośćquestionmark.gif (trzymając CTRL zaznaczysz kilka pozycji) <br/>
  36. <select name="system[]" multiple size="6">
  37. <option>Windows<br/>
  38. <option>Linux<br/>
  39. <option>Mac OSX<br/>
  40. <option>BSD<br/>
  41. <option>OS/2<br/>
  42. <option>Inny<br/>
  43. </select><br/><br/>
  44.  
  45. Wpisz tu swój komentarz: <br/>
  46. <textarea name="komentarz" cols="50" rows="10" style="white-space: normal">
  47. </textarea><br/><br/>
  48.  
  49. Naciśnij Alt+w żeby znaleźc się w tym polu tekstowym: <br/>
  50. <textarea name="komentarz2" cols="40" rows="5" style="white-space: normal" accesskey="w">
  51. </textarea><br/><br/>
  52. <input type="submit" name="submit" value="Zapisz" />
  53. </form>';
  54. }
  55. else {
  56.  
  57. $imie = trim($_POST['imie']);
  58. $nazwisko = trim($_POST['nazwisko']);
  59. $plec = trim($_POST['plec']);
  60. $wiek = trim($_POST['wiek']);
  61. $przegladarka = implode(',',$_POST['przegladarka']);
  62. $system = implode(',', $_POST['system']);
  63. $komentarz = trim($_POST['komentarz']);
  64. $komentarz2 = trim($_POST['komentarz2']);
  65.  
  66. $dane = $imie."`".$nazwisko."\r\n".$plec."\r\n".$wiek."\r\n".$przegladarka."\r\n".$system."\r\n".$komentarz."\r\n".$komentarz2."\r\n";
  67. $file = "baza.txt";
  68. $fp = fopen($file, "a");
  69. flock($fp, 2);
  70. fwrite($fp, $dane);
  71. flock($fp, 3);
  72. fclose($fp);
  73.  
  74. }
  75.  
  76. ?>


1. nowa linia - spróbuj "\r\n";
2. zanim zapiszesz dane do pliku sprawdzaj czy formularz został wysłany
3. aby odebrać wszystkie wybrane elementy z wielokrotnego wyboru musisz przesłać je jako tablica, czyli dodajesz nawiasy kwadratowe do nazwy name="nazwa[]", potem możesz je scalić funkcją implode()

Ten post edytował tehaha 20.05.2010, 10:44:39
Go to the top of the page
+Quote Post
AdiPL
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.05.2010

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


Dziękuję bardzo wielkie tehaha. Męczyłem się z tym od dwóch dni. Pochwała poszła.
Go to the top of the page
+Quote Post

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 - 07:51