Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]fopen i inne, edycja pliku formularzem...?
MenzoX
post 3.01.2009, 17:35:45
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 2.01.2009

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


Witam, to mój pierwszy post tutaj, nie zdążyłem przeczytać jeszcze regulaminu, ale opowiadał mi go sąsiad, szukałem, ale nie znalazłem, na phpedii owszem, coś było, ale nie odpowiadało mi na pytanie, sąsiad czytał regulamin rok temu bodaj, więc coś mogło się zmienić, on też z resztą nie zna odpowiedzi na pytanie.

Do rzeczy:
Hipotetycznie, posiadam tablicę asocjacyjną, wielowymiarową np.
$vbasic = array('vwpis' = array(), 'vpodpis' = array(), 'vmail' = array());

Owszem, mogę zrobić coś takiego za każdym razem:
  1. <?php
  2. $vbasic['vwpis'][] = "xxx";
  3. ?>

I dla każdej pozycji w tablicy to samo, z inną treścią. Ale można by jakoś napisać skrypt, powiedzmy vdopis.php , w którym, w formularzu, jest textarea, do której coś wpiszę (tagując htmlem), i wtedy zostanie dodane do do pliku z $vbasic w jakimś pliku (pod definicją(?) $vbasic):
  1. <?php
  2. <nowa linia>
  3. <nowa linia>
  4. vbasic['vwpis'][] = "TREŚĆ Z TEXTAREA'Y";
  5. <nova linia>
  6. <nova linia>
  7. ?>


I żeby zawsze dopisywało ponad wcześniejszym dopisem, a pod definicją(?) $vbasic.

Tyle. Z góry dziękuję za pomoc blinksmiley.gif
aaevil.gif

Aha, pytanie xP :

Jak coś takiego napisać? Sugestie?

Ten post edytował MenzoX 3.01.2009, 17:37:32
Go to the top of the page
+Quote Post
Pilsener
post 3.01.2009, 19:38:58
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


A mógłbyś opisać swój problem po polsku? Bo w tej postaci podejrzewam, że nikt tego nie zrozumie.
Go to the top of the page
+Quote Post
xmik
post 3.01.2009, 19:39:23
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.02.2006

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


Nie wiem jak inni, ale ja nie bardzo rozumiem Twojego posta.
Go to the top of the page
+Quote Post
MenzoX
post 3.01.2009, 20:01:17
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 2.01.2009

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


Chodzi o skrypt, który dopisze pod hipotetyczną linią, która określa tablicę np.
  1. <?php
  2. $tablica = array('jeden' => array(), 'dwa' => array());
  3. ?>

To:
  1. <?php
  2. $tablica['jeden'][] = "TEKST Z POLA TEKSTOWEGO (TEXTAREA) W FORMULARZU";
  3. $tablica['dwa'][] = "TEKST Z POLA TEKSTOWEGO JEDNOLINIOWEGO W FORMULARZU (zwykły input)";
  4. ?>


OK, mamy teraz plik:

  1. <?php
  2. $tablica = array('jeden' => array(), 'dwa' => array());
  3. $tablica['jeden'][] = "TEKST Z POLA TEKSTOWEGO (TEXTAREA) W FORMULARZU";
  4. $tablica['dwa'][] = "TEKST Z POLA TEKSTOWEGO JEDNOLINIOWEGO W FORMULARZU (zwykły input)";
  5. ?>


Jeżeli znowu coś dopiszę, to będzie to wyglądało tak:

  1. <?php
  2. $tablica = array('jeden' => array(), 'dwa' => array());
  3. $tablica['jeden'][] = "DOPISAŁEM";
  4. $tablica['dwa'][] = "DOPISAŁEM";
  5.  
  6. $tablica['jeden'][] = "TEKST Z POLA TEKSTOWEGO (TEXTAREA) W FORMULARZU";
  7. $tablica['dwa'][] = "TEKST Z POLA TEKSTOWEGO JEDNOLINIOWEGO W FORMULARZU (zwykły input)";
  8. ?>


A ogólny interfejs najlepiej powinien składać się z:

-------------------------------+
Pola tekstowego |
|
|
|
[_INPUT'u xP_]

oraz

[SUBMIT'a]

biggrin.gif O to mi chodzi.
Go to the top of the page
+Quote Post
kefirek
post 3.01.2009, 22:36:55
Post #5





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Nie wiem czy do końca o to chodzi ale może pomoże
Robisz tak
  1. <?php
  2. $tekst = "aaaaaaaaaa";
  3. $test = "<?php\n";
  4. $test .= "$"."test = "."\"".$tekst."\";\n";
  5. $test.= "?>";
  6. $temp = fopen("test1.php","w");
  7. if (fwrite($temp, $test)) {
  8. fclose($temp);
  9. }
  10. ?>

I potem tworzysz pusty plik test1.php i zmieną $tekst zapisze w tym plik test1.php
I przy pomocy pętli zapisujesz to do pliku

Ten post edytował kefirek 3.01.2009, 22:48:40
Go to the top of the page
+Quote Post
MenzoX
post 4.01.2009, 00:13:04
Post #6





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 2.01.2009

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


Cytat(kefirek @ 3.01.2009, 22:36:55 ) *
Nie wiem czy do końca o to chodzi ale może pomoże
Robisz tak
  1. <?php
  2. $tekst = "aaaaaaaaaa";
  3. $test = "<?php\n";
  4. $test .= "$"."test = "."\"".$tekst."\";\n";
  5. $test.= "?>";
  6. $temp = fopen("test1.php","w");
  7. if (fwrite($temp, $test)) {
  8. fclose($temp);
  9. }
  10. ?>

I potem tworzysz pusty plik test1.php i zmieną $tekst zapisze w tym plik test1.php
I przy pomocy pętli zapisujesz to do pliku



Stary, jesteś boski! biggrin.gif Pomogłeś mi i mojemu sąsiadowi, niech Bóg... nieważne... Gdzie ten przycisk Pomógł?
Otóż właśnie sęk w tym, że nie umiałem posłużyć się fopen i fclose, ale to nawet proste smile.gif

Aha, i mam pytanko jeszcze:
OK, ten kod pisze w pliku, dzięki! Ale co zrobić, żeby nie kasował zawartości pliku, przy dopisywaniu, oraz żeby potem dopisywał w określonej linii (albo określonej liczbie znaków od początku pliku)?

Ten post edytował MenzoX 4.01.2009, 00:15:33
Go to the top of the page
+Quote Post
carck3r
post 4.01.2009, 01:16:09
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 9.11.2008

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


Cytat(MenzoX @ 4.01.2009, 00:13:04 ) *
Stary, jesteś boski! biggrin.gif Pomogłeś mi i mojemu sąsiadowi, niech Bóg... nieważne... Gdzie ten przycisk Pomógł?
Otóż właśnie sęk w tym, że nie umiałem posłużyć się fopen i fclose, ale to nawet proste smile.gif

Aha, i mam pytanko jeszcze:
OK, ten kod pisze w pliku, dzięki! Ale co zrobić, żeby nie kasował zawartości pliku, przy dopisywaniu, oraz żeby potem dopisywał w określonej linii (albo określonej liczbie znaków od początku pliku)?


Żeby nie kasował przy dopisywaniu musisz zastosować tryb 'ab', czyli np.:
  1. <?php
  2. fopen("$DOCUMENT_ROOT/teksty/tekst.txt",'ab');
  3. ?>


pozdrawiam
Go to the top of the page
+Quote Post
MenzoX
post 4.01.2009, 14:31:30
Post #8





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 2.01.2009

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


Dziwna sprawa, ale mi to nie działa... spróbuję jeszcze kilka razy...
Ponawiam pytanie:
Co zrobić, żeby dopisywało tekst w określonym miejscu pliku?

// Już działa ten ab biggrin.gif Dzięki!

Ten post edytował MenzoX 4.01.2009, 14:32:32
Go to the top of the page
+Quote Post
kefirek
post 4.01.2009, 14:45:06
Post #9





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Do odczytu zawartości pliku file_get_contents czyli
  1. <?php
  2. $wynik = file_get_contents('test1.php'); echo $wynik;
  3. ?>
Lub file
Go to the top of the page
+Quote Post
MenzoX
post 4.01.2009, 14:57:28
Post #10





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 2.01.2009

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


Dzięki, na pewno się przyda, tylko, niestety, to przypisuje $wynik'owi "Array", bo kiedy drukuję echem $wynik zwraca tylko ten wyraz, a test1.php u mnie na pewno nie zawiera żadnej tablicy. Kiedy użyję print_r(), w przeglądarce widzę:
  1. <?php
  2. Array ( [0] => $test = "qwertyuiop"; [2] => ?> )
(Należy pamiętać, że BBCode [php.] "dokleja" "<?php")
podczas, gdy plik zawiera:
  1. <?php
  2. $test = "qwertyuiop";
  3. ?>

Widać, że pomija "<?php", ponadto, kiedy napiszę ponad print_r'em "echo "<?php\n";" , absolutnie tego nie drukuje, tylko dalej Array i w tablicy wypis zawartości. Ponadto, nie mogę odwołać się do niczego przy print_r'ze, np. "print_r($wynik[0]);" :/

Ten post edytował MenzoX 4.01.2009, 19:32:20
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 Wersja Lo-Fi Aktualny czas: 13.07.2025 - 12:17