[php] Gdzie jest błąd - dynamiczne menu na plikach

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
informer
Nowy
Nowy
Posty: 24
Rejestracja: pn cze 21, 2004 4:37 pm
Lokalizacja: Warszawa
Kontakt:

[php] Gdzie jest błąd - dynamiczne menu na plikach

Post autor: informer »

Czesc,

http://gorscy.com/proba/admin/

Generalnie menu ma być w prosty sposób zmieniane..

Jest formularz.. no i potem plik zapisz.php:

[php]<?php
$tab_wierszy = file("lista_menu.txt");
//jezeli pierwsza
if ($_POST[menu] == 'min'){
$tab_nowa[] = $_POST[nazwa]."\n";
$maks = 0;
foreach($tab_wierszy as $klucz => $wiersz){
$tab_nowa[] = $wiersz;
$maks++;
}
while ($maks>0){
$stara_nazwa = "../tresc/".($maks-1).".htm";
$nowa_nazwa = "../tresc/".$maks.".htm";
//zmiana z $stara_nazwa na $nowa_nazwa
chmod("$stara_nazwa", 0777);
rename("$stara_nazwa", "$nowa_nazwa") or die ("nie zmienil nazwy $maks");
$maks--;
}
$plik_tresc = fopen("../tresc/0.htm","w") or die ("nie stworzyl pliku 0");
if (fwrite($plik_tresc, $_POST[nazwa]) === FALSE) {
echo "Nie mogę zapisać do pliku 0.htm";
exit;
}
fclose($plik_tresc);

}elseif ($_POST[menu] == 'max'){//jezeli ostatnia
$maks = 0;
foreach($tab_wierszy as $wiersz){
$tab_nowa[] = $wiersz;
$maks++;
}
$tab_nowa[] = "\n".$_POST[nazwa];
$plik_tresc = fopen("../tresc/$maks.htm","w") or die ("nie stworzyl pliku $maks.htm");
if (fwrite($plik_tresc, $_POST[nazwa]) === FALSE) {
echo "Nie mogę zapisać do pliku $maks.htm";
exit;
}
fclose($plik_tresc);
}else {//inne
//plik bedzie sie nazywal ($menu+1).htm
foreach($tab_wierszy as $klucz => $wiersz){
if ($klucz == ($_POST[menu]+1)){
$tab_nowa[] = $_POST[nazwa]."\n";
}

$tab_nowa[] = $wiersz;
$nazwa_tresc = $_POST[menu];
}
for ($i=(count($tab_wierszy)-1); $i>=0; $i--){
if ($i >= ($_POST[menu]+1)){
chmod(($_POST[menu]+1).".htm", 0777);
rename(($_POST[menu]+1).".htm", ($_POST[menu]+2).".htm") or die ("nie zmienil nazwy ".($_POST[menu]+1).".htm");
}
}
$plik_tresc = fopen("../tresc/".($menu+1).".htm","w") or die ("nie stworzyl pliku ".($menu+1).".htm");
if (fwrite($plik_tresc, $_POST[nazwa]) === FALSE) {
echo "Nie mogę zapisać do pliku ".($menu+1).".htm";
exit;
}
fclose($plik_tresc);

}

$plik = fopen("lista_menu.txt","w");
foreach($tab_nowa as $nowy_wiersz){
fwrite($plik, $nowy_wiersz) or die (":nie uda³o sie");
}
fclose($plik);
Header("Location: instrukcja.htm");
exit;

?>[/php]

No i rzecz jasna nie działa to poprawnie... gdzie robie w tym bałaganie błąd?
masterix
Przelotem
Przelotem
Posty: 220
Rejestracja: wt wrz 07, 2004 6:44 pm
Kontakt:

Re: [php] Gdzie jest błąd - dynamiczne menu na plikach

Post autor: masterix »

informer pisze:No i rzecz jasna nie działa to poprawnie... gdzie robie w tym bałaganie błąd?
z tym bałaganem to wyjąłeś mi to z ust ;-)

Po pierwsze to powiedz co nie działa, albo w jaki sposób się objawia to "niedziałanie". Po drugie jak piszesz $_POST[menu] to jest to nie do końca pprawne. Daj error_reporting(E_ALL); i zobaczysz o co mi chodzi ;-)

pzdr.
ODPOWIEDZ