php php5 xhtml css mysql sqlite - projektowanie stron - własny cms

 
Menu główne

Dzisiaj o 30% taniej!

Statystyka
Wizyt: 2 002 635
Wizyt dzisiaj: 387
Wizyt wczoraj: 756
Wizyt w m-cu: 4689
Osób on-line: 7
Prenumeratorzy: 226


PHP.net
Pobierz Firefoksa!
Valid XHTML 1.0!
Valid CSS!

Porady
[PHP] Zapis danych pochodzących z formularza
Krzysztof Szypulski - Piątek, 09 września 2005 08:31:57
Nawiązując do porady Zapis danych do pliku tekstowego pokaże jak odebrać dane z formularza i jak je potem wyświetlić na stronie.
Kod formularza i skryptu, który odbierze i zapisze dane do pliku txt.

PRZYKŁAD
<?php
/*********************************************
* plik formularz.php
*********************************************/

$pole1 = trim($_POST['pole1']);
$pole2 = trim($_POST['pole2']);

if(empty(
$pole1) and empty($pole2)) {
    
// prosty formularz zawierający dwa pola
echo '<form action="" method="post">
<input type="text" name="pole1" style="width: 200px;" /><br />
<textarea name="pole2" style="width: 200px; height: 100px;">
</textarea><br />
<input type="submit" value="Zapisz" />
</form>'
;
}
else {
    
    
// dane pochodzące z formularza
    
$dane = $pole1."`".$pole2."\n";
    
// przypisanie zmniennej $file nazwy pliku
    
$file = "baza.txt";
    
// uchwyt pliku, otwarcie do dopisania
    
$fp = fopen($file, "a");
    
// blokada pliku do zapisu
    
flock($fp, 2);
    
// zapisanie danych do pliku
    
fwrite($fp, $dane);
    
// odblokowanie pliku
    
flock($fp, 3);
    
// zamknięcie pliku
    
fclose($fp);
    
    echo
"Dane zostały zapisane!<br />";
    echo
"<a href=\"podglad.php\">Zobacz wpisane dane</a>";
}

?>

Teraz zapisane dane wyświetlimy na stronie.

PRZYKŁAD
<?php
/*********************************************
* plik podglad.php
*********************************************/

// wczytanie zawartości pliku do tablicy
$file = file("baza.txt");
// przechodzimy przez tablicę za pomocą pętli foreach
foreach($file as $value) {
// rozbijamy poszczególne linie na części
$exp = explode("`",$value);
// wyświetlamy rozbity tekst
echo $exp[0]."<br />".$exp[1]."<hr />";
}

?>

Musimy także pamietać, aby plik baza.txt maił odpowiednie prawa do zapisu (chmod 666).

file()
Warto zajrzeć:
http://www.kess.com.pl/index.php?sid=40&p=inne&pid=6
Drukuj Poleć znajomemuCofnij
Komentarze
Mx-SySd (62.21.11.xxx)
Wtorek, 13 września 2005 19:21:19
A jeśli chciałbym żeby dane z formularza wklejały się do utworzonych przez skrypt komórek tabeli??
Chodzi mi o to żeby skrypt tworzył komórki tabeli do których będzie wklejał dane z formularza
Właściwie czy coś takiego się da zrobić?????
Od administratora:
Nie wiem czy dobrze Cię zrozumiałem. Ja bym zapisał to do pliku tak jak w tej poradzie i wyświetliłbym w odpowiednich polach tabelki.

Anonimek (192.168.0.xxx)
Czwartek, 20 października 2005 21:01:06
Witam.
Wszystko dziala swietnie ale gdy w textarea damy enter to niestety wszystko sie sypie :/ Jak Zamienic entery na <br> lub je usunac? Prosze pokazac na tym przykladzie. Z gory dziekuje i pozdrawiam.
Od administratora:
// usuwamy enter
$pole2 = str_replace("\n","",$pole2);

// zamieniamy go na <br>
$pole2 = str_replace("\n","<br>",$pole2);

Yaarno (172.20.9.xxx)
Niedziela, 30 października 2005 14:14:23
Ja mam pytanie troche z innej parafii. Co zrobić żeby wyświetlić zmienną na tej samej stronie [po wysłaniu], na której znajduje sie tenże formularz?
Chodzi mi mniej wiecej o cos takiego:
Mamy formularz z opcjami wyboru [tzw. lista rozwijalna], klikamy wyslij i pod przyciskiem submit ukazuje nam sie tekst przypisany do tej danej wybranej zmiennej.
Mam nadzieje że nie skomplikowalem tego za bardzo...

majos (83.22.73.xxx)
Środa, 23 listopada 2005 15:43:35
Dzięki za skrypt, działa świetnie. Ale mam jedno pytanie. Gdzie i co wstawić, żeby w pliku baza.txt za kazdym razem gdy ktos wysyla formularz dopisywalo w nowej lini.
Od administratora:
Zamiast w daj a w fopen().

majos (83.22.73.xxx)
Środa, 23 listopada 2005 15:53:21
prosze jeszcze napisać pod którą linijką powinienem wstawić "//usuwamy enter...."
Od administratora:

To zależy do systemu.
Windows:
$tekst = str_replace("\r\n", " ",$tekst);
Linux:
$tekst = str_replace("\n", " ",$tekst);


dzidol (82.139.7.xxx)
Czwartek, 29 grudnia 2005 21:46:04
Jak zrobić, aby wyczyścić plik baza.txt, zanim wprowadzimy dane z formularza
Od administratora:
Zmień uchwyt pliku:
// uchwyt pliku, otwarcie do dopisania
$fp = fopen($file, "w");

blade (195.214.216.xxx)
Czwartek, 09 lutego 2006 00:07:23
jak zedytowac ten skrypt zeby mozna bylo tlo zmienic z bialego. wiem ze to jest pytanie nooba ale nie za bardzo sie znam na php. Bardzo prosze o pomoc ;(
Od administratora:
Skrypt umieść w sekcji body i nadaj jej odpowiedni kolor.

MoaB (193.24.220.xxx)
Sobota, 11 lutego 2006 13:05:29
Czemu enter z pierwszej linijki znika?

tzn. jesli napisze w formularzu:
---- formularz -------
aaaaaaa

bbbbbbb
------ koniec formularza ------
to mi zapisze w pliku prawidłowo, dokładnie tak jak w formularzu

jeśli napisze w formularzu:
---- formularz -------

aaaaaaa
bbbbbbb
------ koniec formularza ------
to w pliku zapisze mi samo:
aaaaaa
bbbbbb
bez spacji na samej górze

Dlaczego? I jak temu zapobiec?

chi.cygni (83.28.57.xxx)
Niedziela, 05 marca 2006 23:11:51
Bardzo interesuje mnie rozwiązanie problemu
dokładnie przedstawionego powyzej przez Yaarno.
Pozdrawiam,

BigBlast (83.28.27.xxx)
Poniedziałek, 13 marca 2006 18:28:53
Jak zrobić by zamiast 2 pól bylo 5 ? A i każde takie jak to pierwsze ...
Od administratora:
Kopiuj i wklej ;-)

KrisDEVIL (83.18.178.xxx)
Środa, 22 marca 2006 13:41:05
a jak zrobić prosty edytor do tego czyli pliczek ktory by edytowal i usuwal te wpisy mecze sie i mecze i nie moge tego zrobic! najlepiej jakby byl tez na haslo :)
Od administratora:
Zabawa z plikami to "ciężkie" zajęcie. Przykład takiego edytora masz w moim skrypcie "artykuły".

Jajko (84.10.177.xxx)
Piątek, 31 marca 2006 15:05:57
Fajny skrypt, ale mam pytanie.
Dodałem do formluarza jeszcze 5 pól. Każde pole odpowiada za inny dzień tygodnia. Chciałbym by skrypt wyświetlał się tak:
Poniedziałek: treść pola1
Wtorek: treść pola 2 itd.

Gdy zrobiłem coś takiego:
<table><tr><td>
<h1>Poniedziałek</h1><BR>
<?
echo $exp[0];
?>
</tr></td>
<tr><td>
<h1>Wtorek</h1><BR>
<?
echo $exp[1];
?>
</tr></td>
</table>

To niestety wychodzą jakieś dziwne rzeczy :/
Od administratora:
Trzeba było podać treść skryptu, który zapisuje te dane.

Łukasz (80.53.165.xxx)
Wtorek, 06 czerwca 2006 22:01:44
a mi nie działa wogóle ten formularz ? nie tworzy sie wogóle plik choć przekopiowałem wszystko tak samo, założyłem to na www.frre.of.pl może to wina tego serwera ?
Od administratora:
Jeżeli jest darmowy to może tak być...

suchy (83.31.48.xxx)
Środa, 05 lipca 2006 00:03:24
A co trzeba zmienić, aby przykładowo po wstawieniu takiego kodu:
<a href="http://www.xxx.pl/" target="_blank"><img src="http://www.xxx.pl/xxx.gif"
width="100" height="30" border="0"></a>
zapisał się do baza.txt w identycznej postaci a nie :
[]
width="100" height="30" border="0">
Od administratora:
stripslashes()

r00seek (83.25.98.xxx)
Środa, 19 lipca 2006 18:33:35
jak zmienić kolor linii oddzielających poszczególne wpisy i który parametr wogóle odpowiada za te linie
Od administratora:
Polecam kurs XHTML/CSS

r00seek (83.25.98.xxx)
Środa, 19 lipca 2006 20:15:27
jak zablokować możliwość wpisania entera do formularza?
Od administratora:
http://algorytmy.pl/?id=2009

Mat (83.8.44.xxx)
Wtorek, 07 listopada 2006 14:11:48
Jak zrobic nie tylko baza.txt lecz zapisuje z formularza automatycznie kolejny plik np. baza2.txt, baza3.txt, baza4.txt , baza5.txt itd... ?
Od administratora:
Trzeba by do tego jakiś licznik zrobić, aby nazwy plików się nie powtórzyły.

radmistrz2 (83.19.247.xxx)
Poniedziałek, 25 grudnia 2006 16:09:29
A jeśli chciał bym dodać jeszcze kilka pól, przycisk radio i tp. to co mam dodać do kodu?
Od administratora:
Przycisk radio zachowuje się podobnie jak pole text. Więc będzie to dodatkowa zmienna, którą zapiszesz do pliku txt.

cesarr (88.220.110.xxx)
Niedziela, 07 stycznia 2007 13:18:48
Ja mam takie pytanie:
jak ma wygladac skrypt zeby na stronie podglad byly widoczne tylko dane ktore zostaly tylko w tym ostatnim momencie dodane, ale jednoczescnie zeby wszystkie dane zapisywaly sie do pliku.
Od administratora:
<?php 
/*********************************************
* plik podglad.php
*********************************************/

// wczytanie zawartości pliku do tablicy
$file file("baza.txt");
// odwracamy kolejność tablicy
$file_rev array_reverse($file);
// przechodzimy przez tablicę za pomocą pętli foreach
foreach($file_rev as $value) {
// rozbijamy poszczególne linie na części
$exp explode("`",$value);
// wyświetlamy rozbity tekst
echo $exp[0]."<br />".$exp[1]."<hr />";
// po pierwszym rekordzie zatrzymujemy
break;
}

?>

Brabus (217.98.98.xxx)
Sobota, 10 lutego 2007 19:13:30
A jak zrobic aby po wpisaniu linku na przykład http://google.pl
w pliku txt automatycznie zapisywało <a href"http://google.pl">
Od administratora:
Tu jest porada

brabus (217.98.98.xxx)
Wtorek, 13 lutego 2007 22:00:59
Ok mamy formularz zapisuje do pliku ,mamy podglad ostatniego dodanego wpisu itd przydało by sie teraz usuwanie :) przypuscmy ze jest scrypt wykozystany do komentarzy i któryś nam sie nie podoba :( jak z strony przeglądarki wywalac taki post :)

Stanczyk (83.28.53.xxx)
Czwartek, 22 lutego 2007 18:10:16
Witam!
Fajny skrypcik, jako początkujący mogę się sporo nauczyć.
Zamieniłem sobie entery na be-ery i wyświetla się ładnie w jednej linii, ale w pliku zapisuje kolejne linie z formularza w kolejnych liniach w pliku.
Co zrobić żeby 3 linie z textarea zapisywały się w pliku w jednej linii po spacji?
Od administratora:
Zamień \n na spacje.
$zm = str_replace("\n"," ",$zm);

Miski (85.14.64.xxx)
Sobota, 03 marca 2007 00:24:25
Witam
Jak zrobić żeby w pliku podglad.php (wyświetlane dane umiesciłem w tabeli) nie było widać pustych wierszy w przypadku gdy, ktos w formularzu mającym np. 3 wiersze po 5 elementów typu input
lub textarea nie wpisze danych (chodzi o cały "wiersz" bez danych). Prosze o rade jak obejść te wyswietlone puste wiersze. Pozdrawiam

Rollon (82.160.40.xxx)
Sobota, 03 marca 2007 10:24:18
A ja chcialbym sie dowiedziac jak zrobic żeby zapisywalo tez automatycznie date wpisu i ja pozniej wyswietlalo, bawilem sie z tym troche ale mi nie wychodzilo?
Od administratora:
Dodajesz dodatkową zmienną do zapisu np. $data = date("Y-m-d");

unpredictable (212.191.80.xxx)
Wtorek, 17 kwietnia 2007 09:43:25
jak mozna zapisac do pliku dane z pol wyboru (select) i jesli mam grupe checkboxow, ktore sa zapisywane jako tablica?
Od administratora:
Z selecta to normalnie, a z checkboxów to musisz zapisać w postaci tablicy oddzielając rekordy za pomocą implode() i jakiegoś separatora.

lxn (83.4.201.xxx)
Piątek, 11 maja 2007 19:03:23
Jak zrobić tak, aby zrobić "tabelę", która dodawałaby nowe rekordy, znaczy się ze mam formularz i w nim 5 pól, które wypełnia (ktoś) i chciałbym, aby aby z każdego wpisu dane były zamieszczane w tym pliku, a nie nadpisywane, czy coś...
Od administratora:
Jeżeli zastosujesz poprawny operator przy fopen() to nie będą się dane nadpisywały.

robert13 (83.11.128.xxx)
Niedziela, 27 maja 2007 08:25:18
Mam problem. Jeśli do pola wpisze jakiś tekst lub tekst+liczby, to bez problemu zapisze mi go do pliku, ale jeśli w polu do pisania są same liczby to już nie. Bardzo proszę o pomoc.
Od administratora:
Przecież to nie ma znaczenia co tam wpiszesz powinno działać.

Uglum (83.29.15.xxx)
Wtorek, 29 maja 2007 16:49:09
Odczyt działa bez zarzutu, ale chciałbym żeby w formularzu były wypisane stare dane... coś koło tego:

<textarea name="pole1" style="width: 30px; height: 30px; ">

<?php
$file
= file("baza.txt");
foreach(
$file as $value) {
$exp = explode("`",$value);
echo
$exp[0];
}
?>

</textarea>

Tylko że nie działa oczywiście, a nie wiem jak to obejść.
Chodzi mi o to, że jak będzie ktoś robił aktualizacje to żeby nie musiał na nowo wpisywać starych danych, a jedynie zmieniać.
Od administratora:
Pobierz sobie skrypt artykułów i zobacz jak tam to jest zrobione.

Piotrek (212.76.37.xxx)
Czwartek, 21 czerwca 2007 18:30:53
Co do skryptu, to jest on genialny, jednak jak zrobić, by dane zapisywane były w postaci tekstowej, tzn. gdy zapiszę w formularzy kod skryptu JS i nacisnę dodaj, to w bazie zapisuje się wersja HTML, a ja chciałbym, by pamiętana była w postaci tekstowej.
Od administratora:
Możesz jaśniej?

Piotrek (212.76.37.xxx)
Poniedziałek, 02 lipca 2007 08:19:56
No to trochę inaczej, dane są zapisane w postaci tekstowej do pliku .txt. Dane z tego pliku są pobierane i wyświetlane na stronie jako część strony i wszystkie znaczniki są traktowane jako elementy witryny (img, p, div). Więc jak zrobić, by po wprowadzeniu do formularza jakiegoś kodu JS, wyświetlał się on w postaci tekstowej, a nie wykonywalnej...
Od administratora:
Przed zapisem użyj funkcji htmlspecialchars()

HotRod (83.238.238.xxx)
Piątek, 06 lipca 2007 21:53:39
Chodzi mu prawdopodobnie o HTML special chars

Radi (83.27.24.xxx)
Czwartek, 23 sierpnia 2007 19:54:41
Może ktoś wie jak wysłać $id do POST nie mogę wartości ze zmiennej zapisać do baza.txt :(
Fragment:

$tabelka = '1234567890qwertyuiopasdfghjkklzxcvbnm';
$id = '';
for ($i=0; $i<6; $i++)
{
$id .= $tabelka[rand()%(strlen($tabelka))];
}
echo '<h1>'.$id.'<h1 />';

$id = trim($_POST['id']);

Wszystkie dane z pól z formularza przechodzą do baza.txt oraz na podglond.php poza zmienną $id :(
Od administratora:
A po co to:
$id = trim($_POST['id']);
Przecież $id generujesz w tym miejscu. A może to się dzieje w formularzu?
Jeżeli tak to z formularza wyślij to w polu ukrytym (hidden).

Łukasz (83.5.131.xxx)
Niedziela, 26 sierpnia 2007 23:05:13
Ja chce stworzyc formularz, w ktorym osoby odwiedziajace strone beda mogly wybrac cos z listy wpisac swoje dane osobowe i caly ten formularz zapisuje sie w formie pliku tekstowego ktory jest odrazu wysylany na konkretny mail.. Byłbym wdzieczny za jakakolwiek pomoc bo jestem dopiero poczatkujacym w te klocki Pozdrawiam

GP (87.205.88.xxx)
Wtorek, 28 sierpnia 2007 00:02:49
Jak powinien wyglądać skrypt który będzie zawsze dodawał na końcu pliku wcześniej zdefiniowany text ??

wojmar151 (87.206.82.xxx)
Środa, 05 września 2007 11:44:09
Zrobiłem sobie wszystko tak jak jest napisane, ale mam jeden problem... kiedy dodaję linki np: <a href="edit.php">Edytuj ten plik</a>
To automatycznie zapisuje się tak: <a href="edit.php">Edytuj ten plik</a> i wtedy plik nie może zostać odczytany... jak temu zapobiec?
Od administratora:
Zmień edytor ;-)

Ze względu na brak czasu na moderowanie komentarzy, zawieszam możliowść ich dodawania. Masz pytanie, wykorzystaj formularz "Zadaj pytanie".
Publikowane komentarze są prywatnymi opiniami użytkowników serwisu. Serwis nie ponosi odpowiedzialności za treść opinii.


Zadaj pytanie
Nie znalazłeś(aś) odpowiedzi na nurtujące Cię pytanie?
Zapytaj mnie, może będę umiał Ci pomóc.




Umieść u siebie...
Porady txt
RSS

Losowa książka

Reklama
Modna i seksowna bielizna damska, męska oraz stroje kąpielowe.

Kurs HTML

webmaster html css php mysql

Hosting & design

Setki porad dla właścicieli stron WWW





Copyright © 2001-2010 by Krzysztof Szypulski • Hosting: Snug.pl
Agroturystyka Koniowozy Portfolio Weimary - wyżeł weimarski Linki