Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze zmiana wartosci w pliku tekstowym
Forum PHP.pl > Forum > PHP
Eron
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
Darti
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.
Eron
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.
Ludvik
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.
Darti
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 .
colinQ
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 smile.gif
Eron
ColinQ nie dziala 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.
colinQ
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ć?? blink.gif Ja?? 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 smile.gif

Bo zauważ że jezeli obejżysz plik.txt i bedzie np 300 a wpiszesz 100 i klikniesz ok to wyswietli 200. :]
b_chmura
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
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.