Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przenoszenie zmiennej z jednej funkcji do drugiej
Forum PHP.pl > Forum > Przedszkole
kamilos809
Witam,
Mam problem, który jest pewnie banalny, ale nijak nie wiem jak go rozwiązać. Otóż mam kod:
  1. function openside($title) {
  2. $q="SELECT * FROM panels WHERE panel_name='$title'";
  3. $w=mysql_query($q);
  4. $panel_side=$x['panel_side'];
  5. echo '<b>panel side:'.$panel_side;
  6. if($panel_side=='1'){
  7. $panel='panel-main';
  8. $bmain='border-bmain3';
  9. }
  10. if($panel_side=='4'){
  11. $panel='panel-main2';
  12. $bmain='border-bmain2';
  13. }
  14.  
  15. echo "<table width='171' cellpadding='0' cellspacing='0'><tr>";
  16. echo "<td width='171' class='$panel'>$title</td>";
  17. echo "</tr></table>";
  18. echo "<table width='171' cellpadding='0' cellspacing='0'><tr>";
  19. echo "<td width='171' class='panel-r'>";
  20.  
  21. }
  22.  
  23. function closeside() {
  24.  
  25. echo "</td></tr>";
  26. echo "<tr>";
  27. echo "<td class='border-bmain'><img src='".THEME."images/blank.gif' width='0' height='0' alt='' style='display:block'></td></tr>";
  28. echo "<tr><td class='$bmain'></td>";
  29. echo "</tr></table><br>";
  30. }


Chciałbym, żeby generowana w funkcji openside(); zmienna $bmain była odczytywana też w funkcji closeside();
Jak tego dokonać?
sajegib
W czym problem, wystarczy, że zadeklarujesz zmienną POZA ciałem funkcji, a ponadto w ciałach obu funkcji wrzucisz global np.

  1. $zmienna = 'foo';
  2. function mojaSuperFunkcja(){
  3. global $zmienna;
  4. }
ZaXaZ
ja bym to tak zrobil:

w funkcji openside() dodaj w przed ostatniej linijce funkcji (przed })
return $bmain i w closeside() zrobic po { global $bmain;

jednak oczywiscie moze nie dzialac... wtedy bys musial przypisac funkcje openside() do zmiennej czyli np.

$xxx = openside($title);
i zrobic global $xxx w closeside() jednak wtedy zostanie wszystko przekazane jak sje nie myle ;p (czyli te echa w openside by tez sie wyswietlily)
kamilos809
sajegib, wiem, że tak może być, ale wszystko opiera sie na tej linijce:
function openside($title) {
dzięki $title, reszta kodu działa.

ZaXaZ, ogarnę Twój sposób i zobaczymy wink.gif
ZaXaZ
Cytat(kamilos809 @ 30.04.2014, 00:32:03 ) *
ZaXaZ, ogarnę Twój sposób i zobaczymy wink.gif


ogatnij to bo ponad pół godziny myślałem co by tu zrobić tongue.gif

  1. <?php
  2. function a($a)
  3. {
  4. $panel_side=4; #do skasowania oczywiscie po testach.
  5. echo 'nsk+929';
  6. if($panel_side===1)
  7. {
  8. $panel='panel-main';
  9. $bmain='border-bmain3';
  10. }
  11. echo 'n+jiwii+2iw';
  12. if($panel_side===4)
  13. {
  14. $panel='panel-main2';
  15. $bmain='border-bmain2';
  16. }
  17. echo 'n-2+?;kjej';
  18. return array('UnikalnaNazwaTablicy'=>$bmain);
  19. }
  20. function b()
  21. { global $xxx;
  22. echo 'Jak widać niema tu "ech" z a() jeśli są, za to mamy zmienną...<br/>';
  23. echo 'badmin: '.$xxx['UnikalnaNazwaTablicy'].'<br/>';
  24. }
  25.  
  26. $a='milionpięćsetstodziewięćset';
  27. $xxx=a($a); //wyswietli w tym miejscu echa z a() jeśli są
  28. echo '<br/><br/><br/>Test!!<br/><br/><br/>';
  29. b();
  30. b(); //test czy dalej działa
  31. b(); //znów...
  32. ?>
  33.  


dużo do dodania do swojego kodu niema...
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.