Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowe podwójne zapisywanie do pliku
Zawleka
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.08.2006

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


Witam.

Mam taki problem. Otóż mam dane pobierane z formularza, oraz kod, który ma zapisywać dane do pliku. Wszystko jest niby dobrze, ale co kilka wpisów dane są zapisywane 2x nie wiedzieć dlaczego.

Oto kod

  1. <?php
  2. $nazwa = $_SESSION['nazwa'];
  3.  
  4. $miasto = $_SESSION['miasto'];
  5.  
  6. $powierzchnia = $_SESSION['powierzchnia'];
  7.  
  8.  $file = 'db.rtq';
  9.  
  10.  $fp =fopen ($file, 'r' );
  11.  
  12.  $stareDane = fread($fp, filesize($file));
  13.  
  14.  fclose($fp);
  15.  
  16.  
  17. $dane = '
  18.  
  19. <!-- $nazwa -->
  20.  <tr><td class=kol_1> '.$nazwa.' </td>
  21.  <td class=kol_2> '.$miasto.' </td>
  22.  <td class=kol_3> '.$powierzchnia.' m<sup>2</sup></td>
  23.  </tr>
  24.  <!-- $nazwa --> ';
  25.  
  26.  $dane .= $stareDane;
  27.  
  28.  
  29.  $fp =fopen($file, 'w' );
  30.  
  31.  rewind($fp); 
  32.  
  33.  fputs($fp, $dane);
  34.  
  35.  fclose($fp);
  36. ?>


Oczywiście na początku pliku jest deklaracja rozpoczęcia sesji.

Gdzie leży problem ? Dlaczego dane czasmi dodają się 2x ? Dokładnie tworzą się dwa takie same wpisy.


Proszę o pomoc. Będę bardzo wdzięczny.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wipo
post
Post #2





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


A nie wykonujesz 2x tego skryptu?
Nie mówie że robisz to ty ale możliwe że ktoś prz okazji.
Albo gdzieś masz include 2x


--------------------
Go to the top of the page
+Quote Post
Zawleka
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.08.2006

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


Nie nie właśnie nie

na stronie nigdzie nie ma zrobionego include

musiał bym przeładować, żeby 2x się wykonał

no ale widocznie się wykonuje 2x ale dlaczego, gdzie leży problem

najdziwniejsze jest to, że to się robi losowo, np 3 wpisy są dobrze a 4 jest źle, 5 też a nastepne 10 też dobrze i potem jeden źle i następne 5 dobrze. Nie ma na to reguły.
Go to the top of the page
+Quote Post
wipo
post
Post #4





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


A daj taki warunek na początku
if (($nazwa2!= $_SESSION['nazwa'])|| ($miasto2!=$_SESSION['miasto'])||
($powierzchnia3!=$_SESSION['powierzchnia'])){
$nazwa2 = $_SESSION['nazwa'];
$miasto2 = $_SESSION['miasto'];
$powierzchnia2 = $_SESSION['powierzchnia'];
....poniżej to co jest teraz

Ten post edytował wipo 5.12.2006, 13:48:58


--------------------
Go to the top of the page
+Quote Post
Zawleka
post
Post #5





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.08.2006

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


Właśnie przed chwilą się z tym uporałem smile.gif

Błąd nie leżał w tym kodzie. Stronę wcześniej, gdzie trzeba było potwierdzić poprawność wprowadzanych danych, zamiast normalnego linka do tej strony dałem przycisk submit taki jak w formularzach smile.gif

To najwyraźniej był błąd ponieważ teraz już po 15 wpisach jest ok smile.gif


Przy okazji, może ktoś mi powie jak zrobić aby kiedy skrypt tej strony się wykona, aby po jej przeładowaniu nie wykonał się jeszcze raz, czyli nie dodał wpisu ponownie.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Przy okazji, może ktoś mi powie jak zrobić aby kiedy skrypt tej strony się wykona, aby po jej przeładowaniu nie wykonał się jeszcze raz, czyli nie dodał wpisu ponownie.


Problem czesto poruszany. przyklady:
http://forum.php.pl/index.php?showtopic=44383
http://forum.php.pl/index.php?showtopic=36933&hl=1062


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Zawleka
post
Post #7





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.08.2006

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


@nospor

Twoja metoda bardzo mi się spodobała, chodzi o to generowanie unikalnego klucza

lecz samemu nie wiem ja kto zrobić a w tych tematach przykładów zabrakło na ten temat

mógłbyś zarzucić kawałkiem porządnego kodu w tej kwestii ?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Twoja metoda bardzo mi się spodobała, chodzi o to generowanie unikalnego klucza

lecz samemu nie wiem ja kto zrobić a w tych tematach przykładów zabrakło na ten temat
Ale chodzi ci o generowanie unikalnego Identyfikatora? Bylo wiele razy. Najprosciej walnij md5 z time() smile.gif (albo nawet bez md5)
Mozesz do tego dorzucic jeszcze np. IP kolesia i wiele innych.

edit: a tu masz jakis banalny skrypcik na GUID:
  1. <?php
  2. function GenerateGuid()
  3. {
  4.  mt_srand((double)microtime()*10000);
  5.  $charid = strtoupper(md5(uniqid(rand(), true)));
  6.  $uuid = substr($charid, 0, 8).'-'
  7.  .substr($charid, 8, 4).'-'
  8.  .substr($charid,12, 4).'-'
  9.  .substr($charid,16, 4).'-'
  10.  .substr($charid,20,12);
  11. return $uuid;
  12. }
  13. ?>
od razu mowie ze mozna lepiej


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Zawleka
post
Post #9





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.08.2006

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


Ja zrobiłem jeszcze prościej, chyba najprościej i prymitywnej jak się dało smile.gif ale do moich potrzeb jest w sam raz smile.gif

otóż robię tak

na stronie gdzie potwierdza się poprawność danych, które zaraz zostaną wprowadzone rejestruję do sesji zmienną $zm i nadaje jej wartość 1 smile.gif

potem w pliku ze skryptem który wprowadza do pliku, sprawdzam czy $zm == 1, jeżeli tak to zapisuje do pliku, na końcu zapisu do pliku nadaje zmiennej $zm = 0; tym samym jak ktoś odświeży zapis się nie wykona ponieważ $zm = 0 smile.gif

bardzo proste i logiczne i dla mnie wystarczające smile.gif

niemniej dziękuje wszystkich za pomoc smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:26