Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tekst w <input > a zapis do pliku
Forum PHP.pl > Forum > Po stronie przeglądarki > HTML \ XHTML
marcin98721
Witam
Czy istnieje możliwość aby wszystko to co wpisze użytkownik w pole input zapisywało się automatycznie do pliku? bez żadnego naciskania przycisku oczywiście.
Proszę o pomoc.
Pozdrawiam
marcin98721
szukałem już w google, ale nie znalazłem dokładne tego samego o co proszę. a zapisywać do pliku w php wydaje mi się że potrafię, gorzej z javascript
kamil4u
Poczytaj o zdarzeniu onkeydown/onkeyup/onkeypress i/lub onchange i o AJAX. Teraz po każdym wciśnięciu przycisku wysyłasz żądanie przez AJAX na serwer, który zapisuje to co wysłałeś. Jeśli nie znasz JS to użyj jakieś biblioteki np. jQuery - tam obsługa AJAX-u jest naprawdę prosta.
marcin98721
wiem, że to mi się przyda http://api.jquery.com/blur/ ale niestety nie wiem jak to zaimplementować...
kamil4u
Napisałem Ci co Ci się przyda. Zadaj pytania związane z tym. I poczytaj o tym.
marcin98721
Wspomniałeś coś o jQuery a tam znalazłem właśnie tą funkcję blur();

A co do tego co podałeś to np: http://help.dottoro.com/ljlwfxum.php nie wiem jak to wykorzystać. Pierwszy przykład zwraca np kod Unicode danego znaku, co mi się chyba nie przyda...
kamil4u
Problem polega na tym, że czkasz na gotowca i nie chcesz o niczym poczytać, się czegoś nauczyć. No i teraz pytanie co z Tobą zrobić smile.gif

Dostaniesz gotowca, ale w formie pseudokodu. Twoim zadaniem będzie przepisanie tego na JS. Myślę, że to dobry kompromis.

Kod
Pobierz_element_o_ID('mojeID').przypisz_zdarzenie_change({ //$('#') , change
  Wyślij_zapytanie_metodąGet( 'TwójPlikPHP', {'zmienna': this.wartosc ); //get, val
});



W komentarzach funkcje, które masz użyć. W następnym poście oprócz ew. pytań , podaj kod jak przerobiłeś mój powyższy kod.
Pozdrawiam
marcin98721
znalazłem coś innego. tyle tylko że tym razem zapisuje mi do konsoli javascript
  1. function send(pass){
  2. /* save serverside biggrin.gif */
  3. console.log("$$$: "+pass);
  4. }


i z tego co czytam to nie da się tego zapisać do pliku używając tylko samego javascript, ale do konsoli normalnie zapisuje w formie:
Cytat
$$$: p
$$$: ph
$$$: php

Czy może jestem w błędzie i da radę?

Cytat
Problem polega na tym, że czkasz na gotowca i nie chcesz o niczym poczytać, się czegoś nauczyć. No i teraz pytanie co z Tobą zrobić

Niestety muszę się z Tobą zgodzić, ale działam pod presją czasu, na jutro muszę mieć to zrobione więc nie mam za bardzo czasu na czytanie obszernych dokumentacji. :C
kamil4u
To zamiast szukać coś co Ci jest zupełnie niepotrzebne użyj swojego czasu na przeczytanie dokumentacji 4 funkcji.

Cytat
do pliku używając tylko samego javascript

Dlatego używasz AJAX, czyli metody GET, czyli prosić serwer, żeby uruchomił skrypt PHP, który już potrafi zapisywać dane. Skrypt PHP będzie wyglądał tak, że pod zmienną super globalną $_GET['zmienna'] będziesz miał to co podasz w JS.

Tak więc podsumowując: do roboty! smile.gif
marcin98721
  1. <input id="search" name="random" type="text" size="15" onChange="">
  2.  
  3. $('#random').przypisz_zdarzenie_change({ //$('#') , change
  4. $.get( 'plik.txt', {'zmienna': this.value); //get, val
  5. });
  6.  

Tyle wiem na dzień dzisiejszy
kamil4u
Źle:
- nie zgadza się id
- nic nie zrobiłeś z przypisz_zdarzenie_change
- masz odwołać się do pliku PHP, nie do txt
- musisz stworzyć plik PHP, który stworzy i zapisz Ci dane
- nie this.value tylko użyj metody .val(); -> to akurat nie jest błąd, ale zrób tak jak mówię
- JS umieszczamy w <script>

Popraw co Ci się uda i pokaż kod + stwórz plik PHP i go również podaj.
marcin98721
plik.php
  1. <?php
  2.  
  3. $dane = $_GET['search']; //nie wiem skąd mam brać te dane?!
  4.  
  5. $file = "dane.txt";
  6. $fp = fopen($file, "x");
  7. flock($fp, 2);
  8. fwrite($fp, $dane);
  9. flock($fp, 3);
  10. fclose($fp);
  11. ?>


Cytat
nie zgadza się id

To id wykorzystuję akurat w stylach css, no ale ok, jeśli to nie przeszkadza.

Cytat
JS umieszczamy w <script>

ojj śpieszyłem się, skoro jest to pseudokod to nie robi to różnicy wink.gif

index.html
  1. <input id="search" name="random" type="text" size="15" onChange="zdarzenie">
  2. .
  3. .
  4. .
  5. <script>
  6. $('#search').zdarzenie({
  7. $.get( 'plik.php', {'zmienna': this.val());
  8. </script>
  9. });
kamil4u
-Spr. w dokumentacji co ma być zamiast "zdarzenie". Napisałem Ci co ma tam.
-
Cytat
$dane = $_GET['search']; //nie wiem skąd mam brać te dane?!

Właśnie po to jest AJAX i
Cytat
$.get( 'plik.php', {'zmienna': this.val());

- nie sprawdziłeś o co chodzi z val - zrób to w końcu, bo robi się to denerwujące. Marnujesz mój czas( i swój ) zamiast poświęcić 30s i sprawdzić jak ma być
- pseudokod to był mój, a nie Twój, więc tu wszystko robi różnicę
- nie zgadzają Ci się nawiasy {}
marcin98721
plik.php
  1. <?php
  2.  
  3. $dane = $_GET['zmienna']; //nie wiem skąd mam brać te dane?!
  4.  
  5. $file = "dane.txt";
  6. $fp = fopen($file, "x");
  7. flock($fp, 2);
  8. fwrite($fp, $dane);
  9. flock($fp, 3);
  10. fclose($fp);
  11. ?>


index.html
  1. <input id="search" name="random" type="text" size="15" onChange="change">
  2. .
  3. .
  4. .
  5. <script>
  6. $('#search').change({
  7. $.get( 'plik.php', {'zmienna': this.val());
  8. });</script>


Dalej nie wiem co z tym onChange. Dlatego strzelam. Pierwszy lepszy link z google https://www.ssbbartgroup.com/reference/inde...nChange_Opinion i nic tam nie ma.
Tak, wiem że to denerwujące.
kamil4u
- Usuń cały atrybut "onchange"
- wszystko czytaj tylko i wyłącznie stąd: http://api.jquery.com/ - przynajmniej na temat tego co robisz teraz
- co to za kropki? po co?
- nie zgadza się ilość { z }
- nadal nic nie zrobiłeś z val - otwórz w końcu dokumentację i zobacz jak ma być
- w PHP użyj: file_put_contents
marcin98721
kropki oznaczają że coś tam jeszcze innego jest. ale po co mam wklejać cały mój plik index.html jak reszta nie dotyczy tematu wink.gif
  1. <input id="search" name="random" type="text" size="15">
  2.  
  3.  
  4.  
  5. <script>
  6. $('#search').change({
  7. $.get( 'plik.php', {'zmienna': this.val()});
  8. });</script>


plik.php
  1. <?php
  2.  
  3. $dane = $_GET['zmienna'];
  4. $file = "baza.txt";
  5. file_put_contents($file, $dane, FILE_APPEND);
  6. ?>


Czy teraz będzie działać?

PS. jeszcze jedno. Czy można to #search jakoś zastąpić i użyć np tej nazwy z "name" bo tak jak obstawiałem tak też się stało. Nie działa mi jeden element przez to. Bo ten input pojawia się w przeglądarce po naciśnięciu danego przycisku (ESC), po dodaniu tego kodu przestał się pojawiać...
kamil4u
Sprawdź. Nie będzie. Przeczyta jeszcze raz moje posty i popraw to co tam napisałem. A pisałem o tym 3 razy!!
marcin98721
zapewne chodzi o val() ale na prawdę nie mam pojęcia co tam wstawić. czytałem i to http://api.jquery.com/val/ i jakieś przykłady z tego forum i nie wiem jaką wartość wstawić między te nawiasy...
Chyba sobie odpuszczę. Porwałem się na zbyt trudną rzecz dla mnie do zrobienia...

PS. jeszcze jedno. Czy można to #search jakoś zastąpić i użyć np tej nazwy z "name" bo tak jak obstawiałem tak też się stało. Nie działa mi jeden element przez to. Bo ten input pojawia się w przeglądarce po naciśnięciu danego przycisku (ESC), po dodaniu tego kodu przestał się pojawiać...
kamil4u
Nie widzisz różnicy między:
Kod
$(this).val()

, a
Kod
this.val()
?

To może rzeczywiście sobie odpuść.

Id ma się zgadzać, czyli: <input id="search" name="random" type="text" size="15"> i $('#search').change({ ma być takie samo.
marcin98721
No i coś nie działa, bo po wklejeniu tego:
  1. $('#search').change({
  2. $.get( 'plik.php', {'zmienna': $(this).val()});
  3. });


nie mogę wyświetlić tego input'a (nie działa "włączanie" go klawiszem ESC)
kamil4u
Nie znam Twojego kodu. Skąd mam wiedzieć co jest nie tak. Zapisywanie działa?
marcin98721
Ok, uporałem się z tym niewyświetlaniem input. Zapisywanie nie działa, niestety. Nie wiem czy sobie tego życzysz ale mogę wysłać Ci link na priv.

PS. oczywiście chmod dla pliku baza.txt zmieniłem na 777.
kamil4u
A wczytałeś jQuery przed tym skryptem?
marcin98721
Gotowe, ale nic to nie dało.
Ale Tobie jakimś sposobem udało się wpisać słowo 'test' do tego pliku tekstowego. Może to wina tego hostingu? sam już nie wiem. jutro z rana zmienię tak żeby zapisywało się do bazy danych, może wtedy będzie działać, bo ja już nie mam na to pomysłu...
kamil4u
http://kamil.contrel.pl/php.pl/1/1.html

Przy change zapomniałeś dać function
marcin98721
Kurde, rzeczywiście.
W ogóle wielkie dzięki! Można powiedzieć że uratowałeś mi skórę ;))
Pozdr!
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.