BooM Posted February 10, 2011 Share Posted February 10, 2011 Boas pessoal tenho uma dúvida.. Tenho um ficheiro que fiz include numa página com o seguinte código: <?php include("variaveis.php"); function muda(){ $id=$_GET['id']; if ($id==1) { echo $titulo; } } Dentro desse ficheiro fiz outro include para "variaveis.php" e fiz este código para testar: <?php $titulo="sdfgdsfg"; ?> Quando chamo a função não aparece nada.. Se puser o $titulo dentro do 1º ficheiro já funciona.. Não consigo detectar nenhum erro. Estou a fazer alguma coisa mal? Link to comment Share on other sites More sharing options...
Piu_730 Posted February 10, 2011 Share Posted February 10, 2011 (edited) Boas pessoal tenho uma dúvida.. Tenho um ficheiro que fiz include numa página com o seguinte código: <?php include("variaveis.php"); function muda(){ $id=$_GET['id']; if ($id==1) { echo $titulo; } } Dentro desse ficheiro fiz outro include para "variaveis.php" e fiz este código para testar: <?php $titulo="sdfgdsfg"; ?> Quando chamo a função não aparece nada.. Se puser o $titulo dentro do 1º ficheiro já funciona.. Não consigo detectar nenhum erro. Estou a fazer alguma coisa mal? Lol... eu percebo pouco de php e estou a tentar decifrar a tua pagina e fiquei com um nó no cérebro!!! Pode ser de eu perceber pouco... mas podias explicar melhor? lol Edited February 10, 2011 by Piu_730 Link to comment Share on other sites More sharing options...
HERiTAGE Posted February 10, 2011 Share Posted February 10, 2011 Tens o include fora da função... A tua variável não está disponível. Link to comment Share on other sites More sharing options...
Mini0n Posted February 10, 2011 Share Posted February 10, 2011 Isso tem a ver com o scope. Experimenta: <?php include 'variaveis.php'; function muda() { global $titulo; $id = $_GET['id']; if ($id==1) { echo $titulo; } } ?> Se não lhe deres o global, ele vai tentar usar o $titulo de dentro da função... E isso não existe. No php.net esta cena do scope das variáveis é explicado bem. :edit: Também podes colocar o include dentro da função, como o HERi disse, mas se tiveres outras cenas no include, que sejam necessárias noutras funções, é melhor usares o global, penso eu de que. Link to comment Share on other sites More sharing options...
HERiTAGE Posted February 10, 2011 Share Posted February 10, 2011 Ya, o global é melhor opção pq podes querer usar as variáveis que definiste no ficheiro noutro lado qq. Foi só para mostrar que os includes só estão disponíveis ou dentro da função ou fora da função, nunca nos dois ao mesmo tempo, a não ser que assim o definas. Link to comment Share on other sites More sharing options...
BooM Posted February 10, 2011 Author Share Posted February 10, 2011 Obrigado. Vou queimar a pestana mais um bocado Link to comment Share on other sites More sharing options...
BooM Posted February 12, 2011 Author Share Posted February 12, 2011 Apareceu-me mais uma dúvida... Já à uns dias que ando a tentar resolver mas não consigo.. if ($id==1) { for ($i=1; $i<=$itens_anime; $i++) { echo $anime_titulo[$i]; } echo $anime_codigo[$channel]; } elseif ($id==2) { for ($i=1; $i<=$itens_desporto; $i++) { echo $desporto_titulo[$i]; } echo $desporto_codigo[$channel]; } Basicamente as variáveis $anime_* e $desporto_* são iguais, não há erros de sintaxe, os id's estão certos e a minha pergunta é porque é que um dos ifs funciona e o outro não?.. o $id e o $channel vou buscar a um $_GET no link.. Tenho mais elseif a seguir a estes e funcionam todos menos os de desporto... [FRUSTRAÇÃO] Tenho quase a certeza que vai acabar por ser uma merdinha qualquer estupida que passa sempre despercebida [/FRUSTRAÇÃO] Link to comment Share on other sites More sharing options...
Coutinho77 Posted February 12, 2011 Share Posted February 12, 2011 Só assim com esse código é dificil ajudar-te... Link to comment Share on other sites More sharing options...
BooM Posted February 12, 2011 Author Share Posted February 12, 2011 (edited) Ok. A função completa está aqui: function tv() { include("variaveis.php"); $id=$_GET['id']; $channel=$_GET['chnl']; if ($id==1) { for ($i=1; $i<=$itens_anime; $i++) { echo $anime_titulo[$i]; } echo $anime_codigo[$channel]; } elseif ($id==2) { for ($i=1; $i<=$itens_desporto; $i++) { echo $desporto_titulo[$i]; } echo $desporto_codigo[$channel]; } elseif ($id==3) { for ($i=1; $i<=$itens_series; $i++) { echo $series_titulo[$i]; } echo $series_codigo[$channel]; } elseif ($id==4) { for ($i=1; $i<=$itens_filmes; $i++) { echo $filmes_titulo[$i]; } echo $filmes_codigo[$channel]; } } Variáveis: $anime_titulo[1]='<div id="titulos"><a href="tv.php?id=1&chnl=1" class="menulink">Sin the Movie</a></div>'; $anime_titulo[2]='<div id="titulos"><a href="tv.php?id=1&chnl=2" class="menulink">Gundam Seed</a></div>'; $anime_titulo[3]='<div id="titulos"><a href="tv.php?id=1&chnl=3" class="menulink">Love Hina</a></div>'; $anime_titulo[4]='<div id="titulos"><a href="tv.php?id=1&chnl=4" class="menulink">Lady Death</a></div>'; $anime_titulo[5]='<div id="titulos"><a href="tv.php?id=1&chnl=5" class="menulink">Vários Animes</a></div>'; $anime_codigo[1]='<br /><br /><center><div><iframe ... "></iframe></div></center>'; $anime_codigo[2]='<br /><br /><center><div><iframe ... "></iframe></div></center>'; $anime_codigo[3]='<br /><br /><center><div><iframe ... "></iframe></div></center>'; $anime_codigo[4]='<br /><br /><center><div><iframe ... "></iframe></div></center>'; $anime_codigo[5]='<br /><br /><center><div><iframe ... "></iframe></div></center>'; $itens_desporto=3; $desporto_titulo[1]='<div id="titulos"><a href="tv.php?id=2&chnl=1" class="menulink">Sky Sports News HD</a></div>'; $desporto_titulo[2]='<div id="titulos"><a href="tv.php?id=2&chnl=2" class="menulink">Ajax Vs Atletico Madrid</a></div>'; $desporto_titulo[3]='<div id="titulos"><a href="tv.php?id=2&chnl=3" class="menulink">Ajax Vs Benfica</a></div>'; $desporto_codigo[1]='<br /><br /><center><div><iframe ... "></iframe></div></center>'; $desporto_codigo[2]='<br /><br /><center><div><iframe ... "></iframe></div></center>'; $desporto_codigo[3]='<br /><br /><center><div><iframe ... "></iframe></div></center>'; Edited February 12, 2011 by BooM Link to comment Share on other sites More sharing options...
Coutinho77 Posted February 12, 2011 Share Posted February 12, 2011 experimenta fazer a verificação do $itens_desporto directamento no for. em vez da variavel põe lá 3 a ver se dá algum resultado. Link to comment Share on other sites More sharing options...
hda Posted February 12, 2011 Share Posted February 12, 2011 porque não usas count(array) para o tamanho? já não uso php há milhões mas normalmente uns print_r ajudam a fazer debug.. vê se o id e o chnl estão a ser bem passados, etc Link to comment Share on other sites More sharing options...
Coutinho77 Posted February 12, 2011 Share Posted February 12, 2011 Se ele não tem problemas nos outros ifs essas variaveis estão a ir bem pelo url Link to comment Share on other sites More sharing options...
BooM Posted February 12, 2011 Author Share Posted February 12, 2011 experimenta fazer a verificação do $itens_desporto directamento no for. em vez da variavel põe lá 3 a ver se dá algum resultado. Não dá .. se eu tirar a variável $desporto_titulo[$i] e puser uma coisa qualquer funciona.. porque não usas count(array) para o tamanho? já não uso php há milhões mas normalmente uns print_r ajudam a fazer debug.. vê se o id e o chnl estão a ser bem passados, etc Eu pensei nesse count mas não me apeteceu ir ver como se fazia. Tentei os print_r e nada.. o id e chnl passam sem espinhas.. Que noia.. Se estivesse na escola já estava a partir umas quantas peças... Link to comment Share on other sites More sharing options...
Coutinho77 Posted February 12, 2011 Share Posted February 12, 2011 Boom, se tens a variave($itens_desporto)l definida dentro do variaveis.php que está no include e a queres usar dentro da função para ser chamada, torna-a global.ex rapido: variaveis.php <?php $clube= 'porto'; ?> da função <?php function func() { global $clube; include 'variaveis.php'; echo $clube; } ?> Link to comment Share on other sites More sharing options...
BooM Posted February 12, 2011 Author Share Posted February 12, 2011 (edited) Foi das primeiras coisas que tive a experimentar. Aliás o resto das variaveis são tratadas da mesma maneira e funcam.. Edit: AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH!!! Era o include que tinha que estar depois de declarar as globais e não antes !! :lamo: Finalmente. Obrigado Edited February 12, 2011 by BooM Link to comment Share on other sites More sharing options...
Coutinho77 Posted February 12, 2011 Share Posted February 12, 2011 :P Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now