Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Edycja tylko niektórych danych w pliku
Forum PHP.pl > Forum > PHP
poplop
Witam,
chcę się pobawić w pisanie skryptów PHP i proszę o pomoc.
Teraz wyjaśnię o co mi chodzi:
Mam plik konfiguracja.conf i chcę aby przez stronę można było edytować tylko niektóre dane, które w nim są.
Plik konfiguracja.conf wygląda tak:
  1. sloty=10
  2. haslo=haslo
  3. hasloadmina=hasloadmina
  4. port=8000
  5. intro=test.mp3

I chciałbym aby przez stronę można było edytować tylko takie dane:
haslo, hasloadmina i intro.
Może ktoś podać jakiś przykład? Zupełnie nie wiem jak to zrobić. Wiem jak zrobić edycję całego pliku ale nie wiem jak zrobić to o co mi chodzi...


Proszę o pomoc.

Pozdrawiam.
CuteOne
poczytaj o file(), explode() i porównaniach warunkowych
poplop
Cytat(CuteOne @ 11.10.2011, 23:26:06 ) *
poczytaj o file(), explode() i porównaniach warunkowych

A mogę prosić o przykład? Tylko jeżeli można to z Polskimi komentarzami - jeżeli to nie problem.

Pozdrawiam.
crocodillo
  1.  
  2. <?php
  3. $file='nazwapliku';
  4.  
  5. $haslo='cośtam';
  6. $hasloadmina='cośtam';
  7. $intro = 'cośtam';
  8.  
  9. $ff=file($file);
  10. $string='';
  11.  
  12. if ($ff) {
  13.  
  14. foreach($ff as $a=>$b) {
  15.  
  16. list($c,$d) = explode('=',$b,2);
  17.  
  18. switch (strtolower(trim($c))) {
  19.  
  20. case 'haslo':
  21. $d=$haslo;
  22. break;
  23.  
  24. case 'hasloadmina':
  25. $d=$hasloadmina;
  26. break;
  27.  
  28. case 'intro':
  29. $d=$intro;
  30. break;
  31.  
  32. }
  33. $ff[$a]="$c=$d";
  34. }
  35.  
  36. $string=implode(PHP_EOL,$ff);
  37. }
  38.  
  39.  
  40. ?>
  41.  
poplop
  1. <?php
  2. $file='konfiguracja.ini';
  3.  
  4. $haslo='haslo';
  5. $hasloadmina='hasloadmina';
  6. $intro = 'intro';
  7.  
  8. $ff=file($file);
  9. $string='';
  10.  
  11. if ($ff) {
  12.  
  13. foreach($ff as $a=>$b) {
  14.  
  15. list($c,$d) = explode('=',$b,2);
  16.  
  17. switch (strtolower(trim($c))) {
  18.  
  19. case 'haslo':
  20. $d=$haslo;
  21. break;
  22.  
  23. case 'hasloadmina':
  24. $d=$hasloadmina;
  25. break;
  26.  
  27. case 'intro':
  28. $d=$intro;
  29. break;
  30.  
  31. }
  32. $ff[$a]="$c=$d";
  33. }
  34.  
  35. $string=implode(PHP_EOL,$ff);
  36. }
  37.  
  38.  
  39. ?>
  40. <html>
  41. <head>
  42. <title>Test php</title>
  43. </head>
  44. <body>
  45. <form action="test.php" method="post">
  46.  
  47. Haslo: <input type="text" name="haslo" /><br>
  48. Haslo admina: <input type="text" name="hasloadmina" /><br>
  49. Intro: <input type="text" name="intro" /><br>
  50. <input type="submit" name="submit" value="Wyslij" />
  51. </form>
  52. </body>
  53. </html>


Co robię źle? Nie zapisuje mi danych w pliku konfiguracja.ini :/
crocodillo
na końcu dopisz (za $string=...):

file_put_contents($file,$string);
poplop
Cytat(crocodillo @ 13.10.2011, 20:39:24 ) *
na końcu dopisz (za $string=...):

file_put_contents($file,$string);

Teraz wstawia ale źle. Zamiast brać dane z formularza to wpisuje dane jakie są ustawione w kodzie.

Jak to zmienić?
crocodillo

$haslo = $_POST['haslo'];
$hasloadmina = $_POST['hasloadmina'];
$intro = $_POST['intro'];



tylko pamiętaj, że ten skrypt nie sprawdza, czy zostało cokolwiek wpisane w tych polach.
poplop
Cytat(crocodillo @ 13.10.2011, 20:50:44 ) *
$haslo = $_POST['haslo'];
$hasloadmina = $_POST['hasloadmina'];
$intro = $_POST['intro'];



tylko pamiętaj, że ten skrypt nie sprawdza, czy zostało cokolwiek wpisane w tych polach.

Dobrze, dziękuję za pomoc. I mam jeszcze jedno pytanie:
Jak zrobić aby w tych polach wczytywało wartości z pliku? Tak aby wiadomo było czy coś jest wpisane - i jeżeli tak to jest to wpisywane w to pole, aby wiadomo było co się edytuje.
I jak zrobić tak aby przy wejściu na stronę nie czyściło danych z pliku konfiguracja.ini?
crocodillo
to już tak na szybkiego, bo muszę iść. napiszę tylko dla jednego pola, resztę mam nadzieję, że sobie dopiszesz:

  1. $ff=file($file);
  2.  
  3.  
  4. if ($ff) {
  5.  
  6. foreach($ff as $a=>$b) {
  7.  
  8. list($c,$d) = explode('=',$b,2);
  9.  
  10. switch (strtolower(trim($c))) {
  11.  
  12. case 'haslo': // te 3 linijki trzeba powtórzyć dla pozostałych danych
  13. $haslo = $d;
  14. break;
  15. }
  16. }



i html:
  1. <input type="text" name="haslo" value="<?php echo $haslo;?>" />
poplop
Kod wygląda teraz tak:
  1. <?php
  2. $file='konfiguracja.ini';
  3.  
  4. $haslo = $_POST['haslo'];
  5. $hasloadmina = $_POST['hasloadmina'];
  6. $intro = $_POST['intro'];
  7.  
  8. $ff=file($file);
  9.  
  10.  
  11. if ($ff) {
  12.  
  13. foreach($ff as $a=>$b) {
  14.  
  15. list($c,$d) = explode('=',$b,2);
  16.  
  17. switch (strtolower(trim($c))) {
  18.  
  19. case 'haslo': // te 3 linijki trzeba powtórzyć dla pozostałych danych
  20. $haslo = $d;
  21. break;
  22. case 'hasloadmina': // te 3 linijki trzeba powtórzyć dla pozostałych danych
  23. $hasloadmina = $d;
  24. break;
  25. case 'intro': // te 3 linijki trzeba powtórzyć dla pozostałych danych
  26. $intro = $d;
  27. break;
  28. }
  29.  
  30. $ff[$a]="$c=$d";
  31. }
  32.  
  33. $string=implode(PHP_EOL,$ff);
  34. file_put_contents($file,$string);
  35.  
  36. }
  37.  
  38.  
  39. ?>
  40. <html>
  41. <head>
  42. <title>Test php</title>
  43. </head>
  44. <body>
  45. <form action="test.php" method="post">
  46.  
  47. Haslo: <input type="text" name="haslo" value="<?php echo $haslo;?>" /><br>
  48. Haslo admina: <input type="text" name="hasloadmina" value="<?php echo $hasloadmina;?>" /><br>
  49. Intro: <input type="text" name="intro" value="<?php echo $intro;?>" /><br>
  50. <input type="submit" name="submit" value="Wyslij" />
  51. </form>
  52. </body>
  53. </html>

Wczytuje dane do pól ale zapisywanie już nie działa :/
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.