Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Edycja danych z pliku *.txt.
moto0095
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Witam. Szukałem w google, sam kombinowałem, i nic (IMG:style_emoticons/default/sad.gif) .
A więc tak jak w temacie chodzi mi o skrypt który pozwalał by na edycję danych z pliku *.txt.
Dokładnie taki jak [TUTAJ].
Zna ktoś coś takiego (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif)

P.S. - strasznie mi jest to potrzebne.

Kombinując dalej udało mi się uzyskać coś takiego:
  1. <?php
  2. $plik = "db.txt";
  3.  
  4. if ((isset($_POST['usun'])) AND (is_numeric($_POST['usun']))) {
  5. /* sprawdzam czy zmienna $_POST['usun'] zostala zainicjonowana i czy jest cyfrą */
  6.  
  7. $dane = file($plik); /* pobieram dane z pliku */
  8. unset($dane[$_POST['usun']]); /* usuwam wybrany rekord tablicy */
  9. $f = fopen($plik, "w"); /* nawiązuje połączenie z plikiem i kasuje jego zawartosc */
  10. foreach($dane as $linia){
  11. $linia = $_POST['text'];
  12. fputs($f, $linia); /* wprowadzam linie po linii do pliku */
  13. }
  14. fclose($f); /* zamykam polączneie z plikiem */
  15.  
  16. }
  17.  
  18. ?>
  19.  
  20. <form action="" method="post">
  21. <?php
  22. $dane = file($plik);
  23.  
  24. for($i=0;$i<count($dane);$i++) {
  25. list($imie[$i], $nazwisko[$i], $miejscowosc[$i]) = explode(" || ", $dane[$i]);
  26. }
  27.  
  28. for($i=0;$i<count($imie);$i++)
  29. echo '<input type="radio" name="usun" value="'.$i.'">'.$imie[$i]." ".$nazwisko[$i].", ".$miejscowosc[$i]."<br>";
  30.  
  31. ?>
  32. <input type="text" name="text">
  33. <input type="submit" value="zmien" />
  34. </form>


lecz to usuwa całą zawartość pliku i zastępuje ją tą wpisaną.
A jak zrobić aby tylko dana linia się zmieniała (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował moto0095 11.04.2010, 18:59:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Miało być na końcu
  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. // pobieramy aktualne dane z pliku i zapisujemy je w tablicy data
  5. $file = file('dane.txt', FILE_IGNORE_NEW_LINES);
  6. if(count($file) != 0) {
  7. foreach($file as $line) {
  8. $data[] = explode('||', $line);
  9. }
  10.  
  11. if(!empty($_POST) && $_POST['action'] == 'saveChanges') {
  12. $row = $_POST['row'];
  13. $firstname = isset($_POST['firstname']) ? $_POST['firstname'] : '';
  14. $lastname = isset($_POST['lastname']) ? $_POST['lastname'] : '';
  15. $city = isset($_POST['city']) ? $_POST['city'] : '';
  16. $data[$row][0] = $firstname;
  17. $data[$row][1] = $lastname;
  18. $data[$row][2] = $city;
  19. $file = fopen("dane.txt", "w");
  20. foreach($data as $line){
  21. $newline = implode('||', $line);
  22. fputs($file, $newline . "\n");
  23. }
  24. fclose($file);
  25. }
  26.  
  27. if(isset($_GET['action'])) {
  28. if($_GET['action'] == 'edit' && isset($_GET['row']) && $_GET['row'] != '') {
  29. $row = $_GET['row'];
  30. ?>
  31. <form action="edycja.php" method="post">
  32. <input type="hidden" name="action" value="saveChanges" />
  33. <input type="hidden" name="row" value="<?php echo $row; ?>" />
  34. <dl>
  35. <dt>Imię:</dt>
  36. <dd><input type="text" name="firstname" value="<?php echo $data[$row][0]; ?>" /></dd>
  37. </dl>
  38. <dl>
  39. <dt>Nazwisko:</dt>
  40. <dd><input type="text" name="lastname" value="<?php echo $data[$row][1]; ?>" /></dd>
  41. </dl>
  42. <dl>
  43. <dt>Miejscowość:</dt>
  44. <dd><input type="text" name="city" value="<?php echo $data[$row][2]; ?>" /></dd>
  45. </dl>
  46. <input type="submit" value="Zapisz zmiany" />
  47. </form>
  48. <?php
  49. }
  50. }
  51.  
  52. // wyświetlamy dane w odpowiedni sposób
  53. ?>
  54. <style type="text/css">
  55. td {
  56. width: 150px;
  57. }
  58. </style>
  59. <table cellspacing="0" cellpadding="0" border="0">
  60. <tr><td>Imię</td><td>Nazwisko</td><td>Miejscowość</td><td>Akcja</td></tr>
  61. <?php
  62. foreach($data as $rowNumber => $row) {
  63. ?>
  64. <tr>
  65. <td><?php echo $row[0]; ?></td>
  66. <td><?php echo $row[1]; ?></td>
  67. <td><?php echo $row[2]; ?></td>
  68. <td><a href="edycja.php?action=edit&row=<?php echo $rowNumber; ?>">Edytuj</a></td>
  69. </tr>
  70. <?php
  71. }
  72. ?>
  73. </table>
  74. <?php
  75. } else {
  76. echo 'Brak danych!';
  77. }
  78. ?>


EDIT:
@down Wystarczyło warunek zmienić na if(count($file) != 0).

Ten post edytował mortus 11.04.2010, 23:53:59
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 22:12