Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Problem z edycją rekordów - formularz edycji nie ukazuje się w przeglądarce.
LeoMInor
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.03.2012

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


Witam forumowiczów (IMG:style_emoticons/default/smile.gif)

Nie znalazłem podobnego tematu w wyszukiwarce, więc:

Mam problem z edycją rekordów bazy z poziomu panelu admina.
Pisałem stronę na webserv i wszystko śmigało. Po zalogowaniu wyświetlały się nazwy pozycji menu strony a przy nich przycisk edytuj.
Po kilknięciu na niego wchodził formularz edycji.

Teraz wrzuciłem stronę na serwer OVH i ku mojemu zdziwieniu co prawda po zalogowaniu pozycje menu się wyświetlają, ale po wybraniu edycji strona nie wyświetla formularza edycji, a tylko się przeładowuje no i mogę tak klikać edytuj do przyszłego wieku.
W pasku przeglądarki widzę, że zmienne $p i $ile są przekazywane przez zapytanie (/admin.php?p=e&id=1).

Kod:
  1. <?
  2.  
  3. if (isset($_GET["logout"]) && ($_GET["logout"]=="1")) {unset($_SESSION["access"]);}
  4.  
  5. $sql = mysql_connect("***","***","***");
  6. mysql_query('set charset utf8');
  7.  
  8. if((isset($_POST['user']) && $_POST['user'] !== "") && (isset($_POST['pass']) && $_POST['pass'] !== "")) {
  9. $result=mysql_query("select * from users where user='".$_POST["user"]."' and pass='".md5($_POST["pass"])."'");
  10. $ile=mysql_num_rows($result);
  11.  
  12. if ($ile=="1"){
  13. $_SESSION["access"]=1;
  14. }}
  15.  
  16.  
  17.  
  18. if (isset($_SESSION["access"]) && ($_SESSION["access"]=="1")){
  19.  
  20.  
  21. $wynik = mysql_query("select id,link from menu");
  22.  
  23. while ($w = mysql_fetch_row($wynik)) {
  24. echo $w[1]." - "."\n";
  25. echo "<A HREF=\"admin.php?p=e&id=$w[0]\">edytuj</A><BR> ";
  26. }
  27.  
  28. echo "<A HREF=\"admin.php?logout=1\">Wyloguj</A>";
  29.  
  30.  
  31. if (isset($p) && ($p == "e")) {
  32. $wynik = mysql_query("select * from menu where id='$id'");
  33. $w = mysql_fetch_row($wynik);
  34. echo "<FORM METHOD=\"post\" ACTION=\"admin.php\">";
  35. echo "<TEXTAREA NAME=\"tresc\">$w[2]</TEXTAREA><BR>";
  36. echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$w[0]\"><BR>";
  37. echo "<INPUT TYPE=\"submit\" VALUE=\"edytuj\">";
  38. echo "</FORM>";
  39. }
  40.  
  41. if (isset($tresc) && ($tresc != "")) {
  42. echo "<BR>Zaktualizowano.";
  43. mysql_query("UPDATE menu SET tresc = '$tresc' where id = '$id'");
  44. }
  45.  
  46. }
  47.  
  48. else {
  49. echo "<FORM METHOD=\"post\" ACTION=\"admin.php\">";
  50. echo "login:<BR>";
  51. echo "<INPUT TYPE=\"text\" NAME=\"user\"><BR>";
  52. echo "hasło:<BR>";
  53. echo "<INPUT TYPE=\"password\" NAME=\"pass\"><BR>";
  54. echo "<INPUT TYPE=\"submit\" VALUE=\"loguj\">";
  55. echo "</FORM>";
  56. }
  57.  
  58. ?>
  59.  
  60.  


(IMG:style_emoticons/default/co_jest.gif) Pomożecie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


Tutaj ustawiłeś że formularz ma przesyłać dane metodą POST

  1. if (isset($p) && ($p == "e")) {
  2. $wynik = mysql_query("select * from menu where id='$id'");
  3. $w = mysql_fetch_row($wynik);
  4. echo "<FORM METHOD=\"post\" ACTION=\"admin.php\">";
  5. echo "<TEXTAREA NAME=\"tresc\">$w[2]</TEXTAREA><BR>";
  6. echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$w[0]\"><BR>";
  7. echo "<INPUT TYPE=\"submit\" VALUE=\"edytuj\">";
  8. echo "</FORM>";
  9. }


tutaj natomiast robisz coś takiego:

  1. if (isset($tresc) && ($tresc != "")) {
  2. echo "<BR>Zaktualizowano.";
  3. mysql_query("UPDATE menu SET tresc = '$tresc' where id = '$id'");
  4. }


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:

  1. $tresc = $_POST['tresc'];
  2. if (isset($tresc) && ($tresc != "")) {
  3. echo "<BR>Zaktualizowano.";
  4. mysql_query("UPDATE menu SET tresc = '$tresc' where id = '$id'");
  5. }


Dodatkowo zamiast ciągle robić echo kodu HTML lepiej wielokrotnie zamykać blok kodu PHP, przykład:

  1. <div class="user_controls">
  2. <?php if ($user = Current_User::user()): ?>
  3. Hello, <em><?php echo $user->username; ?></em> <br/>
  4. <?php echo anchor('logout', 'Logout'); ?>
  5. <?php else: ?>
  6. <?php echo anchor('login','Login'); ?> |
  7. <?php echo anchor('signup', 'Register'); ?>
  8. <?php endif; ?>
  9. </div>
  10.  
  11. <h1>My Message Board</h1>
  12.  
  13. <?php foreach($categories as $category): ?>
  14.  
  15. <div class="category">
  16.  
  17. <h2><?php echo $category->title; ?></h2>
  18.  
  19. <?php foreach($category->Forums as $forum): ?>
  20.  
  21. <div class="forum">
  22.  
  23. <h3>
  24. <?php echo anchor('forums/'.$forum->id, $forum->title) ?>
  25. (<?php echo $forum->Threads->count(); ?> threads)
  26. </h3>
  27.  
  28. <div class="description">
  29. <?php echo $forum->description; ?>
  30. </div>
  31.  
  32. </div>
  33.  
  34. <?php endforeach; ?>
  35.  
  36. </div>
  37.  
  38. <?php endforeach; ?>


Ten post edytował jaslanin 1.04.2012, 16:18:45
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 16:54