Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak wykonać pewien skrypt w php? Panel menu
Forum PHP.pl > Forum > Przedszkole
ZeTu
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.
cycofiasz
Odpuść sobie zapisywanie tego w pliku txt, zastosuj albo bazę danych mysql/sqlite , albo zapisuj to jako tablicę (var_export).
r4xz
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
ZeTu
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.
adbacz
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ć?
ZeTu
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.
adbacz
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);
ZeTu
A teraz zamiast zapisywać to wyczyszcza zawartość pliku cos-tam.txt i jest pusty
r4xz
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
ZeTu
No fajnie czytałem to i próbowałem różnymi metodami, ale nic nie poskutkowało.
peter13135
może chmody nie pozwalają na zapis ?
poza tym, nie lepiej skorzystać z file_put_contents('plik.txt', 'nowa_zawartosc_pliku'); ?
ZeTu
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.
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.