Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekazanie zmiennej
Forum PHP.pl > Forum > PHP
kowalx
Witam,

Mój problem wygląda tak:

W pliku test.php utworzylem formularz:

  1. <?php
  2. if($_SESSION["access"]=="yes")
  3. {
  4. echo '<form method="POST" action="index.php?module=brown">
  5.  
  6. <p>Rok: <select name="rok">
  7. <option value="2009">2009</option>
  8. <option value="2010">2010</option>
  9.  
  10. </select></p>
  11.  
  12. <!-- <p>Miesiąc: <select name="miesiac">
  13. <option value="1">Styczeń</option>
  14. <option value="2">Luty</option>
  15. <option value="3">Marzec</option>
  16. <option value="4">Kwiecień</option>
  17. <option value="5">Maj</option>
  18. <option value="6">Czerwiec</option>
  19. <option value="7">Lipiec</option>
  20. <option value="8">Sierpień</option>
  21. <option value="9">Wrzesień</option>
  22. <option value="10">Październik</option>
  23. <option value="11">Listopad</option>
  24. <option value="12">Grudzień</option>
  25. <br></br>
  26. -->
  27. <p><input type="submit" value="BROWN"/></p>
  28.  
  29.  
  30. </select></p>
  31.  
  32. </form>';
  33.  
  34. } else
  35. {
  36. echo "<b>Błąd:</b> musisz być zalogowany!";
  37. }
  38. ?>

po wejściu na strone index.php?module=test przechodze do powyższego pliku.
W liscie wybieranej wybieram przykladowo rok 2009.
Pojawia się lista z produktami.
//poniżej fragment listy

Po kliknięciu przykładowo na produkt pierwszy pojawia się komunikat
Błąd: nie znaloziono produktu!

Produkt taki napewno istnieje, myśle że zmienna $_POST["rok"] nie jest przekazywana....
Jestem początkującym więc proszę o wyrozumiałość.
Poniżej źródło pliku brown.php
  1. <?php
  2.  
  3. //$rok=2009; //Rok obiegowy (rok dla którego chcemy prognozować)
  4. $rok=$_POST["rok"];
  5. $miesiac=5; //Zakres 1-12 (miesiąc dla którego chcemy prognozować)
  6. $typ_dokument="WZ"; //Typ dokumentu
  7.  
  8. $alfa = 0.3; //Alfa - stała wygładzania
  9.  
  10. if($_SESSION["access"]=="yes")
  11. {
  12. //-----------------------------------
  13. //============= Start ===============
  14. //-----------------------------------
  15.  
  16. if(isSet($_GET["produkt"]))
  17. {
  18. //---- obsługa --------------------------------------------------------------------
  19.  
  20. if($miesiac==1) //Prognoza od (ogólnie)
  21. {
  22. $set_miesiac_od=10;
  23. $set_rok_od=$rok-1;
  24. } elseif($miesiac==2)
  25. {
  26. $set_miesiac_od=12;
  27. $set_rok_od=$rok-1;
  28. } else
  29. {
  30. $set_miesiac_od=1;
  31. $set_rok_od=$rok;
  32. }
  33.  
  34. if($miesiac==1) //Prognoza do (ogólnie)
  35. {
  36. $set_miesiac_do=12;
  37. $set_rok_do=$rok-1;
  38. } elseif($miesiac==2)
  39. {
  40. $set_miesiac_do=1;
  41. $set_rok_do=$rok;
  42. } else
  43. {
  44. $set_miesiac_do = $miesiac-1;
  45. $set_rok_do=$rok;
  46. }
  47.  
  48. if($miesiac==1)
  49. {
  50. $ile_krokow = 2;
  51. } elseif($miesiac==2)
  52. {
  53. $ile_krokow = 2;
  54. } else
  55. {
  56. $ile_krokow = $miesiac-1; //w przy 4 m-cu wychozi liczba kroków 3
  57. }
  58.  
  59.  
  60. //$aktualny_krok - jesli jeden oblicz kiwany
  61.  
  62. $query = "SELECT `INDEKS`, SUM(ILOSC) AS `SUMA` FROM `archiwum` WHERE `INDEKS`='".$_GET["produkt"]."' AND `ROK_OB`='".$rok."' AND `MIESIAC_OB`='".$miesiac."' AND `DOKUMENT`='".$typ_dokument."' GROUP BY `INDEKS` LIMIT 1 ";
  63. $result = mysql_query($query) or die ("<b>Błąd:</b> ".mysql_error()."<br />\n");
  64. $numbers_records = mysql_num_rows($result);
  65.  
  66. if($numbers_records!=0)
  67. {
  68. //$aktualny_krok=0;
  69.  
  70. $analizowany_miesiac=$set_miesiac_od;
  71. $analizowany_rok=$set_rok_od;
  72.  
  73. function prognoza($ilosc_wydan, $analizowany_rok, $analizowany_miesiac, $ile_krokow, $typ_dokument, $alfa)
  74. {
  75. //Aktualny_krok - $x
  76. $ile_krokow++;
  77. for($x=1; $x<=$ile_krokow; $x++)
  78. {
  79.  
  80. $query = "SELECT `INDEKS`, SUM(ILOSC) AS SUMA FROM `archiwum` WHERE `INDEKS`='".$_GET["produkt"]."' AND `ROK_OB`='".$analizowany_rok."' AND `MIESIAC_OB`='".$analizowany_miesiac."' AND `DOKUMENT`='".$typ_dokument."'";
  81. $result = mysql_query($query) or die ("<b>Błąd:</b> ".mysql_error()."<br />\n");
  82.  
  83. while($row = mysql_fetch_array($result))
  84. {
  85. if(empty($row['SUMA']))
  86. {
  87. $miesiac[$analizowany_miesiac]=0;
  88. } else
  89. {
  90. $miesiac[$analizowany_miesiac]=$row['SUMA'];
  91. }
  92.  
  93. //$more_records - Kroki od 3-11 (w zależności ile kroków optrzeba, zmienna żeby wyjść poza while)
  94. }
  95.  
  96. if($x==1)
  97. {
  98. $pierwszy_krok_ilosc_wydan=$miesiac[$analizowany_miesiac];
  99. }
  100.  
  101. if($analizowany_miesiac==12)
  102. {
  103. $analizowany_rok=$analizowany_rok+1;
  104. $analizowany_miesiac=1;
  105. } else
  106. {
  107. $analizowany_miesiac=$analizowany_miesiac+1;
  108. }
  109.  
  110.  
  111.  
  112. if($x==2)
  113. {
  114. $prognoza[$x]=$pierwszy_krok_ilosc_wydan; //Wynik prognozy naiwnej przepisanej z kroku pierwszego
  115.  
  116.  
  117. }
  118.  
  119. if($x<=$ile_krokow && $x!=1 && $x!=2)
  120. {
  121. $prognoza[$x]=($miesiac[$x-1]*$alfa)+$prognoza[$x-1]*(1-$alfa);
  122.  
  123. }
  124.  
  125. if($x==$ile_krokow)
  126. {
  127. $result=$prognoza[$x];
  128. echo $result;
  129. }
  130.  
  131. /*
  132.   echo "<br /><br /><b>krok ".$x."</b><br />";
  133.   echo "analizowany_miesiac: [".$analizowany_miesiac."]<br />";
  134.   echo "analizowany_rok: [".$analizowany_rok."]<br />";
  135.   echo "pierwszy_krok_ilosc_wydan: [".$pierwszy_krok_ilosc_wydan."]<br />";
  136.   echo "alfa: [".$alfa."]<br />";
  137.   */
  138. }
  139.  
  140. /*
  141.   echo "<br /><br />";
  142.   echo "\$miesiac[]";
  143.   echo "<pre>";
  144.   print_r($miesiac);
  145.   echo "</pre>";
  146.  
  147.   echo "\$prognoza[]";
  148.   echo "<pre>";
  149.   print_r($prognoza);
  150.   echo "</pre>";
  151.   */
  152.  
  153. }
  154. echo '<a href="index.php?module=brown">Wróć do spisu produktów</a>';
  155. echo '<table>
  156. <tr>
  157. <th>Produkt (indeks)</th>
  158. <th>Ilość wydań na miesiąc</th>
  159. <th>Prognoza na '.$miesiac.'m-c '.$rok.'r.</th>
  160. </tr>';
  161.  
  162. while($row = mysql_fetch_array($result))
  163. {
  164. echo '<tr>';
  165. echo '<td>'.$row['INDEKS'].'</td>';
  166. echo '<td>'.$row['SUMA'].'</td>';
  167. echo '<td>';
  168. prognoza($ilosc_wydan, $analizowany_rok, $analizowany_miesiac, $ile_krokow, $typ_dokument, $alfa);
  169. echo '</td>';
  170. echo '</tr>';
  171. }
  172.  
  173. echo '</table>';
  174.  
  175. } else
  176. {
  177. echo "<b>Błąd:</b> nie znaloziono produktu!";
  178. echo "<br /><br />";
  179. echo '<tr>
  180. <th>TEST</th>';
  181. echo "<pre>";
  182. print_r($miesiac);
  183. echo "</pre>";
  184.  
  185. }
  186.  
  187.  
  188.  
  189. //---- obsługa --------------------------------------------------------------------
  190. } else
  191. {
  192. $query = "SELECT DISTINCT `INDEKS`, SUM(ILOSC) AS SUMA FROM `archiwum` WHERE `ROK_OB`='".$rok."' AND `MIESIAC_OB`='".$miesiac."' AND `DOKUMENT`='".$typ_dokument."' GROUP BY `INDEKS` ORDER BY `SUMA` DESC";
  193. $result = mysql_query($query) or die ("<b>Błąd:</b> ".mysql_error()."<br />\n");
  194. $numbers_records = mysql_num_rows($result);
  195. echo $numbers_records;
  196.  
  197. echo "<br /><br />";
  198. echo "Rok: ".$rok."<br />";
  199. echo "Miesiąc: ".$miesiac."<br />";
  200. echo "<br /><br />";
  201.  
  202. echo '<table>
  203. <tr>
  204. <th>Lp.</th>
  205. <th>Produkt (indeks)</th>
  206. <th>Ilość wydań na miesiąc</th>
  207. </tr>';
  208.  
  209. $lp=1;
  210. while($row = mysql_fetch_array($result))
  211. {
  212. echo '<tr>';
  213. echo '<td>'.$lp.'</td>';
  214. echo '<td><a href="index.php?module=brown&produkt='.$row['INDEKS'].'&rok='.$rok.'">'.$row['INDEKS'].'</a></td>';
  215. echo '<td>'.$row['SUMA'].'</td>';
  216. echo '</tr>';
  217. $lp++;
  218. }
  219.  
  220. echo '</table>';
  221. }
  222.  
  223. //-----------------------------------
  224. //============= Koniec ==============
  225. //-----------------------------------
  226. } else
  227. {
  228. echo "<b>Błąd:</b> musisz być zalogowany!";
  229. }
  230.  
  231. ?>
wookieb
Czy znasz różnicę między POST a GET? Widzę, że nie a powinieneś się z tym zapoznać ponieważ jest to podstawa w tworzeniu stron.
http://porady.skryptoteka.pl/22,czym-sie-r...do-skryptu.html
tehaha
jeżeli nie jesteś pewien czy zmienna jest przekazywana to daj na samej górze print_r($_POST); i sprawdź czy jest tam zmienna
kowalx
Po wybraniu roku i kliknięciu przycisku pojawia się lista z danego roku i zadeklarowanego wczesniej miesiaca, wiec w tym momencie zmienna $_POST["rok"] przekazywana jest dobrze, problem wystepuje kiedy to wlasnie po pojawieniu się listy produktów wybieram, wybieram produkt z tej wlasnie listy, tak jakby zmienna $_POST["rok"] nie byla juz widziana

wookieb
No i nigdy nie będziesz jej miał bo do przesłania roku w linku służy GET.
kowalx
zastosowałem się do Twojej rady,

w pliku test.php zmienilem metode na GET
tak samo w pliku brown.php
zmienilem $rok=$_GET["rok"]

kiedy klikam przycisk w polu adresu pojawia sie zły odnośnik:
http://localhost/index.php?rok=2009

pomimo że action w test.php wygląda tak:
<form method="GET" action=index.php?module=brown>

PROBLEM ROZWIĄZANY
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.