Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Zmienna z funkcji zanika
Forum PHP.pl > Forum > Przedszkole
Ziels
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?
KG-
Do zmiennych przekazywanych przy pomocy POST odwołujemy się poprzez $_POST['nazwa_zmiennej'], np $_POST['temat'].
Ziels
No tak.. ale ja głupi jestem -> dodałem wszędzie gdzie trzeba było przechwytywanie z posta i jest ok smile.gif dzięki!
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.