Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]krótkie pytanie o pliki
Forum PHP.pl > Forum > Przedszkole
shpaque
Witam, mam krótkie pytanie bo kończę pisanie i byście mi bardzo pomogli odpowiadając na nie:

czy mogę otworzyc plik do odczytu a w nim ten sam plik zapisac? Cos w tym stylu? Czy to bedzie błędne?

  1. fopen(plik, 'r')
  2. cos tam sobie z niego wczytuje
  3. ...
  4. fopen(ten sam plik, 'w')
  5. fwrite(costam)
  6. fclose(ten sam plik)
  7. ...
  8. fclose(plik)
nospor
A dziala ci?
shpaque
czy jednak od razu po wczytaniu powinienem go zamknac? to pytanie ma sens, bo dalej ida petle i nie wiem czy przed nimi zamykac plik do odczytu, czy na koncu

czy dziala jeszcze nie wiem, bo tak w locie pisze, nie dokonczylem jeszcze bebechow - jak dokoncze bede sprawdzal
Pyton_000
A może co chcesz zrobić bo może zabierasz się do tego ze złej strony
SmokAnalog
Ja też mam przeczucie, że się dziwnie zabierasz do problemu. Poza tym są przecież tryby pozwalające na odczyt i zapis, zobacz w dokumentacji fopen.
shpaque
  1. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  2. {
  3. $action = isset($_POST['action']) ? $_POST['action'] : '';
  4. if ($action == "signup")
  5. {
  6. $fdatein = $_POST['fdatein'];
  7. $fcity = str_replace("%20", " ", $_POST['fcity']);
  8. $fname = $_POST['fname'];
  9. $femail = $_POST['femail'];
  10. $fphone = $_POST['fphone'];
  11. $fgender = $_POST['fgender'];
  12. $fplanujeciaze = $_POST['fplanuje'];
  13. $fjestemwciazy = $_POST['fjestemw'];
  14. $fjestemrodzicem = $_POST['fjestemr'];
  15.  
  16. $dateins = array();
  17. $dateouts = array();
  18. $titles = array();
  19. $programs = array();
  20. $citys = array();
  21. $streets = array();
  22. $places = array();
  23. $seats = array();
  24. $userss = array();
  25.  
  26. $udatas = array();
  27. $uemails = array();
  28. $uphones = array();
  29. $ugenders = array();
  30. $uplanujes = array();
  31. $ujestemws = array();
  32. $ujestemrs array();
  33.  
  34. $database = './db/events.csv';
  35. $items = file($database);
  36. $count = 0;
  37. $kodindex = -1;
  38. foreach($items as $line)
  39. {
  40. list($datein, $dateout, $title, $program, $city, $street, $place, $seat, $users) = explode('|', trim($line));
  41. $dateins[$count] = $datein;
  42. $dateouts[$count] = $dateout;
  43. $titles[$count] = $title;
  44. $programs[$count] = $program;
  45. $citys[$count] = $city;
  46. $streets[$count] = $street;
  47. $places[$count] = $place;
  48. $seats[$count] = $seat;
  49. $userss[$count] = $users;
  50.  
  51. if ($fdatein == $datein && $fcity == $city)
  52. {
  53. $kodindex = $count;
  54. }
  55. $count++;
  56. }
  57.  
  58. $file = fopen($database, 'a');
  59. for ($i = 0; $i < $count; $i++)
  60. {
  61. if ($i == $kodindex)
  62. {
  63. $newdatein = $dateins[$i];
  64. $newdateout = $dateouts[$i];
  65. $newtitle = $titles[$i];
  66. $newprogram = $programs[$i];
  67. $newcity = $citys[$i];
  68. $newstreet = $streets[$i];
  69. $newplace = $places[$i];
  70. $newseat = $seats[$i];
  71. $newuser = $userss[$i];
  72.  
  73. $newname = $fname;
  74. $newemail = $femail;
  75. $newphone = $fphone;
  76. $newgender = $fgender;
  77. $newplanujeciaze = $fplanujeciaze;
  78. $newjestemwciazy = $fjestemwciazy;
  79. $newjestemrodzicem = $fjestemrodzicem;
  80.  
  81. if ($newuser == "")
  82. {
  83. $zajetych = 0;
  84. $dostepnych = $newseat;
  85. }
  86. else
  87. {
  88. $zajetych = explode(',', $newuser);
  89. $zajetych = count($zajetych);
  90. $dostepnych = $newseat - $zajetych;
  91.  
  92. if ($dostepnych > 0)
  93. {
  94. $pos = strpos($newuser, $newemail);
  95. if ($pos === false)
  96. {
  97. $udatabase = './db/users.csv';
  98. $uitems = file($udatabase);
  99. $ucount = 0;
  100. $ukodindex = -1;
  101. foreach($uitems as $uline)
  102. {
  103. list($udata, $uemail, $uphone, $ugender, $uplanuje, $ujestemw, $ujestemr) = explode('|', trim($uline));
  104. $udatas[$ucount] = $udata;
  105. $uemails[$ucount] = $uemail;
  106. $uphones[$ucount] = $uphone;
  107. $ugenders[$ucount] = $ugender;
  108. $uplanujes[$ucount] = $uplanuje;
  109. $ujestemws[$ucount] = $ujestemw;
  110. $ujestemrs[$ucount] = $ujestemr;
  111.  
  112. if ($newemail == $uemail)
  113. {
  114. $ukodindex = $ucount;
  115. }
  116. $ucount++;
  117.  
  118. for ($u = 0; $u < $ucount; $u++)
  119. {
  120. if ($u == $ukodindex)
  121. {
  122. $udatas[$u] = $newname;
  123. $uemails[$u] = $newemail;
  124. $uphones[$u] = $newphone;
  125. $ugenders[$u] = $newgender;
  126. $uplanujes[$u] = $newplanujeciaze;
  127. $ujestemws[$u] = $newjestemwciazy;
  128. $ujestemrs[$u] = $newjestemrodzicem;
  129. }
  130.  
  131. $udb = fopen($udatabase, 'w');
  132. fwrite($udb, $udatas[$u]);
  133. fwrite($udb, '|');
  134. fwrite($udb, $uemails[$u]);
  135. fwrite($udb, '|');
  136. fwrite($udb, $uphones[$u]);
  137. fwrite($udb, '|');
  138. fwrite($udb, $ugenders[$u]);
  139. fwrite($udb, '|');
  140. fwrite($udb, $uplanujes[$u]);
  141. fwrite($udb, '|');
  142. fwrite($udb, $ujestemws[$u]);
  143. fwrite($udb, '|');
  144. fwrite($udb, $ujestemrs[$u]);
  145. fwrite($udb, "\r\n");
  146. fclose($udb);
  147. }
  148.  
  149. if ($newemail != $uemail)
  150. {
  151. $udb = fopen($udatabase, 'w');
  152. fwrite($udb, $newname);
  153. fwrite($udb, '|');
  154. fwrite($udb, $newemail);
  155. fwrite($udb, '|');
  156. fwrite($udb, $newphone);
  157. fwrite($udb, '|');
  158. fwrite($udb, $newgender);
  159. fwrite($udb, '|');
  160. fwrite($udb, $newplanujeciaze);
  161. fwrite($udb, '|');
  162. fwrite($udb, $newjestemwciazy);
  163. fwrite($udb, '|');
  164. fwrite($udb, $newjestemrodzicem);
  165. fwrite($udb, "\r\n");
  166. fclose($udb);
  167. }
  168. }
  169. }
  170. else
  171. {
  172. $message = "Osoba o Twoim adresie e-mail jest już zarejestrowana!";
  173. $opis = "Sprawdź, czy wcześniej nie zapisaliśmy Cię na to wydarzenie. Jeśli nie, użyj innego adresu e-mail w celu rejestracji";
  174. }
  175. }
  176. else
  177. {
  178. $message = "Przykro nam, wszystkie miejsca zostały już zarezerwowane!";
  179. $opis = "Jeśli chcesz abyśmy powiększyli liczbę uczestników i dopisali Cię na listę, skontaktuj się z nami.";
  180. }
  181. }
  182. }
  183. fwrite($database, ",")
  184. fwrite($database, $newemail);
  185. $file = fclose($database);
  186. }
  187. }


co ma robic:
- sprawdzic plik events.csv czy jest juz taki mail jesli nie - dopisac (na koncu linii)
- sprawdzic czy w pliku users.csv jest osoba o takich danych - jesli jest - nadpisac, jesli nie - dopisac
Puszy
Skorzystaj z http://php.net/manual/en/function.fgetcsv.php dzieki temu łatwo pobierzesz dane z pliku CSV, do tego odpowiednio skonstruowana pętla i zamkniesz kod w kilkunastu linijkach. Analogicznie do zrzutu danych do pliku wykorzystaj http://php.net/manual/en/function.fputcsv.php.
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.