Tutaj ustawiłeś że formularz ma przesyłać dane metodą POST
if (isset($p) && ($p == "e")) { $wynik = mysql_query("select * from menu where id='$id'"); echo "<FORM METHOD=\"post\" ACTION=\"admin.php\">"; echo "<TEXTAREA NAME=\"tresc\">$w[2]</TEXTAREA><BR>"; echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$w[0]\"><BR>"; echo "<INPUT TYPE=\"submit\" VALUE=\"edytuj\">"; }
tutaj natomiast robisz coś takiego:
if (isset($tresc) && ($tresc != "")) { echo "<BR>Zaktualizowano."; mysql_query("UPDATE menu SET tresc = '$tresc' where id = '$id'"); }
w starym PHP była możliwość że dane przesyłane przez POST, GET itd. były od razu dostępne przez zwykłe zmienne, dlatego @mat-bi napisał o register_globals (to jest właśnie to)
jak widzisz nigdzie wcześniej w kodzie nie przypisałeś wartości do zmiennej $tresc, a skoro powyższa opcja którą opisałem jest wyłączona ze względów bezpieczeństwa Twój skrypt nie działa
żeby działał musisz go zmienić tak jak napisał @nospor, czyli dla przykładu:
$tresc = $_POST['tresc'];
if (isset($tresc) && ($tresc != "")) { echo "<BR>Zaktualizowano."; mysql_query("UPDATE menu SET tresc = '$tresc' where id = '$id'"); }
Dodatkowo zamiast ciągle robić echo kodu HTML lepiej wielokrotnie zamykać blok kodu PHP, przykład:
<div class="user_controls">
<?php if ($user = Current_User::user()): ?>
Hello, <em>
<?php echo $user->username; ?></em> <br/>
<?php echo anchor
('logout', 'Logout'); ?> <?php else: ?>
<?php echo anchor
('login','Login'); ?> |
<?php echo anchor
('signup', 'Register'); ?> <?php endif; ?>
</div>
<h1>My Message Board</h1>
<?php foreach($categories as $category): ?>
<div class="category">
<h2>
<?php echo $category->title; ?></h2>
<?php foreach($category->Forums as $forum): ?>
<div class="forum">
<h3>
<?php echo anchor
('forums/'.$forum->id, $forum->title) ?> (
<?php echo $forum->Threads->count(); ?> threads)
</h3>
<div class="description">
<?php echo $forum->description; ?> </div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>