Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Zmienna z funkcji zanika
Ziels
post 5.08.2006, 10:41:13
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 2
Dołączył: 30.06.2006

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


Witam,

Mam taki kod: (nawet nie trzeba go czytać, w skrócie powiem że jest to część panelu admina, z formularzami do dodawania/usuwania/edycji działów)
  1. <?php
  2. switch($_GET['action'])
  3. {
  4.  
  5.  
  6.  case 'dodaj':
  7.  if($_SERVER['REQUEST_METHOD'] == 'POST'){
  8.  if(!$temat OR !$tresc OR !$side){die("Podaj wszystkie wymagane dane");}
  9.  
  10. $nohtml = htmlspecialchars($tresc, ENT_NOQUOTES);
  11. $tematench = htmlspecialchars($temat, ENT_NOQUOTES);
  12. $nohtml3 = str_replace(""", "&quot", $tematench);
  13.  
  14. $insart = "INSERT INTO tablica VALUES(
  15.  'jakie swartosci' )"
  16. or die ("<br><b>Nie mog&#281; umieścić danych w tabeli</b>");
  17. $do = mysql_query($insart);
  18. echo('Dane dodano pomyślnie!');
  19. }else{
  20.  
  21. $what="dodaj";
  22. include"./includes/form.php";
  23.  
  24. }
  25. break;
  26.  
  27.  
  28.  
  29. case 'usun':
  30. if($_SERVER['REQUEST_METHOD'] == 'POST'){
  31.  
  32. if(!$select){
  33. echo("nie wybrałeś żadnego działu!");
  34. }else{
  35. $select=$_POST["select"];
  36. $delete = mysql_query("DELETE FROM tablica WHERE id='$select'") or die ("<br>LINIA 113. Siakiś błęd się stoczył.<br>" . mysql_error());
  37. echo('Dało rade usunąć dziada!');
  38.  
  39. }
  40.  
  41. }else{
  42. $result = mysql_query('select * from tablica') or die("Błąd bazy danych, spróbuj ponownie lub napraw przyczyne błędu!<br>" . mysql_error());
  43. echo ('<form method=post action="./index.php?action=usun">');
  44. while ($row = mysql_fetch_assoc($result)) {
  45. echo "<input type=radio name="select" value=" . $row["id"] . " id=" . $row["id"] . "><label for=".$row["id"].">".$row["title"]."</label><br>n";
  46. }
  47.  echo "<input type="submit" value=jedziemy></form>";
  48. }
  49. break;
  50.  
  51.  
  52.  
  53. case 'edytuj':
  54. $select=$_POST["select"];
  55.  
  56. if($_SERVER['REQUEST_METHOD'] == 'POST' && $tresc && $temat && $side && $select){
  57.  
  58.  $update = "UPDATE tablica SET title='$temat' WHERE id='$select'";
  59.  $do = mysql_query($update) or die ("Nie mogę zaktualizować tabeli. 1");
  60.  $update = "UPDATE tablica SET content='$tresc' WHERE id='$select'";
  61.  $do = mysql_query($update) or die ("Nie mogę zaktualizować tabeli. 2");
  62.  $update = "UPDATE tablica SET side='$side' WHERE id='$select'";
  63.  $do = mysql_query($update) or die ("Nie mogę zaktualizować tabeli. 3");
  64.  $update = "UPDATE talica SET menutext='$temat' WHERE id='$select'";
  65.  $do = mysql_query($update) or die ("Nie mogę zaktualizować tabeli. 4");
  66.  
  67.  echo ('Aktualizacja przeszła pomyslnie');
  68. }
  69. elseif($_SERVER['REQUEST_METHOD'] == 'POST' && $select){
  70. $id=$select;
  71. $result = mysql_query("select * from tablica WHERE id='$id'") or die("LINIA 167. Błąd bazy danych, spróbuj ponownie lub napraw przyczyne błędu!<br>" . mysql_error());
  72. $row = mysql_fetch_assoc($result);
  73. $insert=$row["content"];
  74. $insertitle=$row["title"];
  75. $sidecheck=$row["side"];
  76. $what="edytuj";
  77. include"./includes/form.php";
  78.  mysql_free_result($result);
  79. }
  80. else{
  81. $result = mysql_query('select * from tablica') or die(" Błąd bazy danych, spróbuj ponownie lub napraw przyczyne błędu!<br>" . mysql_error());
  82. echo ('<form method=post action="./index.php?action=edytuj">');
  83. while ($row = mysql_fetch_assoc($result)) {
  84. echo "<input type=radio name="select" value=" . $row["id"] . " id=" . $row["id"] . "><label for=".$row["id"].">".$row["title"]."</label><br>n";
  85. }
  86. echo "<input type="hidden" name=czeked value=czeked><input type="submit" value=jedziemy></form>";
  87.  
  88.  mysql_free_result($result);
  89.  
  90. }
  91.  break;
  92.  
  93. case 'menusy':
  94. break;
  95.  
  96. default:
  97. $id = $_GET["id"];
  98.  
  99. if($id && $_GET["action"] == "cms"){
  100.  $result = mysql_query('select * from tablica WHERE id='.$id.'');
  101.  if ($row = mysql_fetch_assoc($result)) {
  102. echo bb2html( $row["content"] );
  103.  }
  104.  mysql_free_result($result) or die("Błąd bazy danych, spróbuj ponownie lub napraw przyczyne błędu!<br>" . mysql_error());
  105. }else{
  106.  $result = mysql_query("SELECT * FROM tablica ORDER BY ID") or die("LINIA 135. Błąd bazy danych, spróbuj ponownie lub napraw przyczyne błędu!<br>" . mysql_error());
  107.  $row = mysql_fetch_array($result);
  108.  echo bb2html( $row["content"] );
  109.  
  110.  mysql_free_result($result);
  111. }
  112.  
  113.  break;
  114.  }
  115. ?>


A więc o co chodzi? Jeśli jest on "na czysto" w kodzie wszystko działa, ale jeśli zamkne go w funkcji, a w kodzie dołożę jej wywołanie, to zmienne POST nie są przekazywane (dostaje zdefiniowane komunikaty typu "wybierz jakiś dział!").

Co na to mogę poradzić? Jeśli nic, to czy jest jakaś inna metoda wywołania tego, tak żeby w kodzie była jedna, bądź kilka linijek, jak w przypadku wywołania funkcji?

Ten post edytował Ziels 5.08.2006, 10:42:35
Go to the top of the page
+Quote Post

Posty w temacie


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: 19.07.2025 - 11:34