Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem ze zmiana wartosci w pliku tekstowym
Eron
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 19.05.2007
Skąd: Lębork

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


Wiec tak: mam plik tekstowy dane.txt, oraz dwie strony: form.php oraz odczyt.php.
Problem w tym, ze gdy wpisuje w formularzu np. 20, w pliku tekstowym mam 1000, a na stronie odczyt.php ma sie odjac te 20 od tego 1000. Wlasnie sie tak nie dzieje. Wyslwietla mi, ze w pliku mam -20 a nie 980.
Nie dzieje sie tak (tzn. dziala poprawnie), gdy zamiast znaku - daje znak + w 4 linijce kodu odczyt.php.
Oto kod:
  1. <?
  2. form.php
  3.  
  4. $dane=file('dane.txt');
  5. $dane1=$dane[0];
  6. echo "Aktualnie posiadasz: ";
  7. echo '<b>';
  8. echo $dane1;
  9. echo '</b>';
  10. echo '<br>';
  11. echo '<br>';
  12. ?>
  13. <form action="odczyt.php" method="post">
  14. Liczba:<input type="text" name="liczba">
  15. <input type="submit" value="dodaj">
  16. </form>


  1. odczyt.php
  2.  
  3. <?php
  4. $dane=file('dane.txt');
  5. $dane2=$_POST['liczba'];
  6. $dane1=$dane[1000];
  7. $suma= $dane1 - 20;
  8. echo "Teraz masz: ";
  9. echo $suma;
  10. $plik = fopen ('dane.txt', 'w+');
  11. fwrite($plik, $suma);
  12. fclose($plik);
  13.  
  14. ?>


Prosze o pomoc i w zwiazku z tym mam jeszcze jedno pytanie. Czy da sie zabiezpieczyc jakos strone odczyt.php tak, aby NIE moznaby bylo dodawac lub odejmowac wartosci poprzez odswiezanie??

Prosze o pomoc i wyrozumialosc.
Wyniki mojego kodu mozna zobaczyc na tej stronie :
http://cwelgra.ugu.pl/zapis ze dodaniem/form.php

[+] edit
Do wstawiania kodu na forum służą odpowiednie
tagi BB Code ([php]). Tym razem poprawiłem, ale
na przyszłość proszę o tym pamiętać.
---
~strife
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


W drugim pliku odwołujesz się do wartości z tablicy $dane, która przypisana jest pod kluczem 1000.
W taki sposób :
Kod
$dane1=$dane[1000];
$dane1 NIE będą miały wartości 1000.

Zrób podobnie jak w pierwszym pliku:
Kod
$dane1=$dane[0];


EDIT:
Zabezpieczysz się np korzystając z sesji i wpisując do niej, że w tej sesji już wartość dodawano.

Ten post edytował Darti 19.05.2007, 13:48:47
Go to the top of the page
+Quote Post
Eron
post
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 19.05.2007
Skąd: Lębork

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


Ok juz probuje



No niestety. Dalej po odjeciu wyswietla mi ze w pliku zamaiast (jak powinno byc po odjeciu 20) 980, 2.
Aha. Moglby mi ktos blizej podsunac ten pomysl z sejami. Bo ja z sesjami to zielony jestem.

Ten post edytował Eron 19.05.2007, 13:56:28
Go to the top of the page
+Quote Post
Ludvik
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Niepotrzebna do tego sesja. Wystarczy wysłać ciastko. Ciastko można usunąć, ale sesje opierają się głównie na ciastkach. Pobierz zawartość pliku funkcją file_get_contents" title="Zobacz w manualu PHP" target="_manual i zrzutuj na typ integer:
  1. <?php
  2. $dane = file_get_contents('dane.txt');
  3. $dane = (int)$dane;
  4. ?>

Jak coś nie idzie to podglądnij sobie var_dump" title="Zobacz w manualu PHP" target="_manual zmienne, żeby zobaczyć co się stało.
Go to the top of the page
+Quote Post
Darti
post
Post #5





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Cytat
Niepotrzebna do tego sesja. Wystarczy wysłać ciastko. Ciastko można usunąć, ale sesje opierają się głównie na ciastkach.


Moim zdaniem z sesji korzysta się łatwiej, skoro nie widać różnicy to po co przepłacać. Efekt dokładnie ten sam .
Go to the top of the page
+Quote Post
colinQ
post
Post #6





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Zrob sobie takie coś:
  1. <?
  2. if(isset($_POST['wartosc'])){
  3.  
  4. $dane = file('plik.txt');
  5. $dane1 = $dane[0];
  6. $dane2 = $dane1 - $_POST['wartosc'];
  7. echo "Aktualnie posiadasz: ";
  8. echo '<b>';
  9. echo $dane2;
  10. $plik = fopen('plik.txt', 'wr');
  11. fwrite($plik, $dane2);
  12. fclose($plik);
  13. }
  14. else {
  15. ?>
  16. <form method=post action=index.php>
  17. <input type=text name=wartosc>
  18. <input type=submit value=zmien>
  19. </form>
  20. <?
  21. }
  22. ?>

powinno dzialac tylko utworz plik.txt (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Eron
post
Post #7





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 19.05.2007
Skąd: Lębork

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


ColinQ nie dziala (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Dalej to samo co bylo. Jak nie wierzysz to zobie zobacz: http://cwelgra.ugu.pl/php1.php
Ale probuj dalej, moze ci sie uda.
Go to the top of the page
+Quote Post
colinQ
post
Post #8





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Cytat(Eron @ 21.05.2007, 18:08:12 ) *
http://cwelgra.ugu.pl/php1.php
Ale probuj dalej, moze ci sie uda.


Ja mam próbować?? (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) Ja?? (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) Przecież to nie mi to potrzebne tylko tobie, to ty próbuj.

I to działa tylko zmien wartosc pliku na np. 1 000 000 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Bo zauważ że jezeli obejżysz plik.txt i bedzie np 300 a wpiszesz 100 i klikniesz ok to wyswietli 200. :]

Ten post edytował colinQ 21.05.2007, 19:41:40
Go to the top of the page
+Quote Post
b_chmura
post
Post #9





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


Nie rozumiem Twojego przekazu...
ale myślę ze o to Ci chodziło: w pliku dane.txt ma się znajdować liczba 1000 od której w formularzu będzie się odejmować podane liczby i wyświetlić wynik

  1. <?php
  2. if($_GET['action'] == 'rachunek')
  3. {
  4. $dane = file('dane.txt');
  5. foreach($dane as $linia)
  6. {
  7.  $dana[1] = $linia;
  8. }
  9. $dana[2] = $_POST['liczba'];
  10. $wynik = $dana[1] - $dana[2]; 
  11. echo '<b>Teraz masz:</b> '.$wynik;
  12. }
  13. else
  14. {
  15. echo '<form action="?action=rachunek" method="post">
  16. Liczba:<input type="text" name="liczba">
  17. <input type="submit" value="Licz">
  18. </form>';
  19. }
  20. ?>


jeśli nie zrozumiałem przekazy, wybacz...

ps: oczywiście załóż plik dane.txt a w nim wpisz "1000" by poprawnie funkcjonował kod :D

EDIT: pisane z palca

Ten post edytował b_chmura 21.05.2007, 22:06:11
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.12.2025 - 18:02