Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularz problem..
Forum PHP.pl > Forum > Przedszkole
AdiPL
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ść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);
  
}

?>
Kshyhoo
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.
AdiPL
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.
Mefiuu
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
tehaha
  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()
AdiPL
Dziękuję bardzo wielkie tehaha. Męczyłem się z tym od dwóch dni. Pochwała poszła.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.