Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak wykonać pewien skrypt w php? Panel menu
ZeTu
post 11.08.2011, 21:45:12
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

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


Witam
Chciałbym wykonać pewien skrypt tylko nie wiem w jaki sposób mogę go zrobić i dlatego prosiłbym was o pomoc.
Szukałem na różnych stronach niby coś tam znajdowałem, ale zawsze gdy robiłem, to źle działał.
Chodzi o to, że ten skrypt miałby za zadanie dodawać, usuwać, edytować oraz zmieniać pozycję zawartości pliku np. cos-tam.txt.
A dokładniej to na przykładzie.
Plik cos-tam.txt
Kod
index.php | Strona glowna
forum.php | Forum
blog.php | mBlog
oferta.php | Oferta
portfolio.php | Portfolio
kontakt.php | Kontakt

A na stronie głównej otwierane było by jako:
Kod
<ul>
<li><a href="index.php">Strona glowna</a></li>
<li><a href="forum.php">Forum</a></li>
<li><a href="blog.php"> mBlog</a></li>
<li><a href="oferta.php">Oferta</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
<li><a href="kontakt.php">Kontakt</a></li>
</ul>

I nie wiem właśnie co trzeba było by wpisać na stronie głównej aby tak było wczytywane.
A druga sprawa, chodzi o panel za pomocą którego można było by dodawać, usuwać, edytować oraz zmieniać pozycję czyli w górę lub w dół.
I ten panel najlepiej jak by był tylko w jednym pliku.
Bardzo proszę o pomoc w wykonaniu tego panelu.


--------------------
Go to the top of the page
+Quote Post
cycofiasz
post 11.08.2011, 21:53:04
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Odpuść sobie zapisywanie tego w pliku txt, zastosuj albo bazę danych mysql/sqlite , albo zapisuj to jako tablicę (var_export).
Go to the top of the page
+Quote Post
r4xz
post 11.08.2011, 21:55:13
Post #3





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


a więc zaczynamy od zera?

krok 1,
materiał: http://php.net/manual/en/ref.filesystem.php
spróbuj zrobić najpierw panel.
jutro daj kod który zmajstrowałeś i będziemy poprawiać błędy/działać dalej


--------------------
Go to the top of the page
+Quote Post
ZeTu
post 12.08.2011, 17:22:06
Post #4





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

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


Znaczy się na początek chciałem na pliku .txt, a potem na bazie.
Ok poczytam, może coś się uda.

No dobra przesiedziałem pół dnia, no i pokombinowałem co nie co.
Już wiem jak wykonać tylko mam pewien problem, oczywiście cały czas mówimy o panelu, nie o wyświetlaniu.
A więc chodzi tutaj o kod do edycji podam tutaj tylko, że bez formularza.
Kod
<?
$ide="0";
$file=file("cos-tam.txt");
$dane=explode("|", $file[$ide]);
$link=$dane[0];
$name=$dane[1];

$plik = fopen("cos-tam.txt","r");
$plik1 = fread($plik,10240);

$text="$plik1";
$ad1="$link";
$ad2="strona główna";
$be1="$name";
$be2="index2.php";
$text = str_replace('$ad1','$ad2;',$text);
$text = str_replace('$be1','$be2;',$text);

echo $text;

fwrite($plik,$text);
fclose($plik);  
?>

W czym problem?
Chodzi o to, że nie podmienia mi $ad1 na $ad2 i $be1 na $be2 oraz nie zapisuje tego do pliku.
I jak mam to zrobić aby działało? Co w tym kodzie jest nie tak?
A jeśli chodzi o to "echo $text", dopisałem po to aby zobaczyć czy się podmienia.
Szukałem innego sposobu na podmianę, ale nie znalazłem.

Ten post edytował ZeTu 12.08.2011, 17:24:09


--------------------
Go to the top of the page
+Quote Post
adbacz
post 12.08.2011, 18:22:06
Post #5





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Ok, ale od kiedy zmienne się zapisuje w cudzysłowiach? Nie zamienia się nic, bo zmienne w funkcji sa zapisane w cudzysłowiach, zamiast:
  1. $text = str_replace('$ad1','$ad2;',$text);

zrób:
  1. $text = str_replace($ad1, $ad2, $text);

jeśli chcesz by Ci zamieniało stringi jednej zmiennej na stringi w drugiej.

Tak samo przypisywanie wartości jednej zmiennej do drugiej, takie coś:
  1. $plik = fopen("cos-tam.txt","r");
  2. $plik1 = fread($plik,10240);
  3.  
  4. $text="$plik1";
  5. $ad1="$link";
  6. $ad2="strona główna";
  7. $be1="$name";
  8. $be2="index2.php";

powinieneś zamienić na:
  1. $plik = fopen("cos-tam.txt","r");
  2. $plik1 = fread($plik, 10240);
  3.  
  4. $text = $plik1;
  5. $ad1 = $link;
  6. $ad2 = 'strona główna';
  7. $be1 = $name;
  8. $be2 = 'index2.php';


Ja rozumiem, że to forum Przedszkole, no ale żeby takie gafy popełniać?

Ten post edytował adbacz 12.08.2011, 18:27:32
Go to the top of the page
+Quote Post
ZeTu
post 12.08.2011, 19:13:12
Post #6





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

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


Aha, dobrze wiedzieć, już sprawdzam czy będzie mi działać, z góry dzięki.

No i niby działa, ale nie zapisuje zmian do pliku.

Ten post edytował ZeTu 12.08.2011, 19:13:55


--------------------
Go to the top of the page
+Quote Post
adbacz
post 13.08.2011, 11:46:02
Post #7





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


A czy czasem pliku nie otwiera się do zapisu stosując inny tryb otwarcia pliku aby go zapisać. Z tego co wiem to "r" stosuje się do odczytu. Żeby otworzyć plik do zapisu potrzeba użyć "w".

Czyli coś takie powinno zadziałać:
  1. $plik = fopen("cos-tam.txt", "w");
  2. $plik1 = fread($plik, 10240);
Go to the top of the page
+Quote Post
ZeTu
post 13.08.2011, 13:09:26
Post #8





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

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


A teraz zamiast zapisywać to wyczyszcza zawartość pliku cos-tam.txt i jest pusty


--------------------
Go to the top of the page
+Quote Post
r4xz
post 13.08.2011, 13:38:28
Post #9





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


Cytat(ZeTu @ 13.08.2011, 14:09:26 ) *
A teraz zamiast zapisywać to wyczyszcza zawartość pliku cos-tam.txt i jest pusty

lektura niezdana smile.gif
fopen -> mode


--------------------
Go to the top of the page
+Quote Post
ZeTu
post 13.08.2011, 13:40:35
Post #10





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

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


No fajnie czytałem to i próbowałem różnymi metodami, ale nic nie poskutkowało.


--------------------
Go to the top of the page
+Quote Post
peter13135
post 13.08.2011, 14:37:29
Post #11





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


może chmody nie pozwalają na zapis ?
poza tym, nie lepiej skorzystać z file_put_contents('plik.txt', 'nowa_zawartosc_pliku'); ?


--------------------
:)
Go to the top of the page
+Quote Post
ZeTu
post 1.09.2011, 13:28:10
Post #12





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

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


Zrobiłem to tak
  1. <?
  2. $ide="0";
  3. $folder = 'cos-tam.txt';
  4. $file=file("$folder");
  5. $dane=explode(" | ", $file[$ide]);
  6. $link=$dane[0];
  7. $name=$dane[1];
  8.  
  9. $plik = fopen("$folder", "r");
  10. $plik1 = fread($plik, 10240);
  11.  
  12. $text = $plik1;
  13. $ad1 = $link;
  14. $ad2 = 'index2.php';
  15. $be1 = $name;
  16. $be2 = 'Strona główna ';
  17. $text = str_replace($ad1, $ad2, $text);
  18. $text = str_replace($be1, $be2, $text);
  19.  
  20. file_put_contents($folder, utf8_encode($text));
  21. fclose($plik);
  22.  
  23. echo 'Zmieniono ustawienia<br><a href="penel.php">Powrot</a>';
  24. ?>

No i niby wszystko gra, ale jest jeszcze jeden problem.
Po zapisie w pliku cos-tam.txt (chmod ustawiłem na 777) z 2 pierwszych linijek zrobiła się jedna i wygląda to tak
Kod
index2.php | Strona g?ówna forum.php | Forum
blog.php | mBlog
oferta.php | Oferta
portfolio.php | Portfolio
kontakt.php | Kontakt

A co mam zrobi, aby to było tak jak napisałem na początku tematu?

Ok naprawiłem problem.

Udało mi się zrobić panel, tylko mam jeden problem, nie wiem jak zamienić linie np. 1 z 2, że 1 to będzie 2, a 2 to 1, czyli tzw. zmiana pozycji.
Próbowałem

Kod
<?php
...
$text = str_replace("$ad1", "$ad2", $text);
$text = str_replace("$be1", "$be2", $text);

$text = str_replace("$ad2", "$ad1", $text);
$text = str_replace("$be2", "$be1", $text);


file_put_contents($folder, utf8_encode($text));
...
?>

Ale zamiast zapisywać zmian czyści cały plik.

Ten post edytował ZeTu 1.09.2011, 13:29:11


--------------------
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.08.2025 - 23:00