Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

HemersonSales

[Resolvido] Comando in_array()

Recommended Posts

Boa Tarde Galera

 

Tenho uma aplicação onde são cadastradas vagas de estágio.

Uma das ferramentas é a de atualizar o cadastro da vaga, vinculando a mais cursos.

Na tela de edição é mostrada uma relação de todos os cursos oferecidos em um checkbox, e os cursos que já estão vinculados, tem que aparecer marcados.

 

Tem uma vaga que eu cadastrei pra 3 cursos, os 2 últimos estão aparecendo marcados normalmente, mas o primeiro não, e ele esta salvo no BD corretamente.

 

Onde esta o problema?

 

       			<?	
					$vinc = array();
					for ($a = 0;$FTCURSOSVINC[$a] != NULL;$a++) {
						$vinc[$a] = $FTCURSOSVINC[$a][iD_CodCur];
					}
					for ($b = 0;$FTCURSOS[$b] != NULL;$b++) {	
						?>
							<input type="checkbox" name="cursos[<?=$b?>]" id="cursos" value="<?=$FTCURSOS[$b][CurCod]?>" <? if(in_array($FTCURSOS[$b][CurCod],$vinc)) echo 'checked="checked"';?> /><?=$FTCURSOS[$b][CurNom]?> <br />                           
						<? 
					}
				?>

 

$FTCURSOSVINC é o array onde contém os cursos vinculados a vaga

$FTCURSOS é o array onde contém todos os cursos

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu for quando você dá um $a++ na linha de baixo ele passa ser a+1, por isso ele está começando do índice 1 ao invés do índice 0.

 

                        <?      
                                               $vinc = array();
                                               for ($a = 0;$FTCURSOSVINC[$a] != NULL;$a++) {
                                                       $vinc[$a-1] = $FTCURSOSVINC[$a-1][iD_CodCur];
                                               }

                                       ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcinou por causa do 2º for, corrigido. Testa ai.

Qualquer coisa é só fazer $b-1 onde tiver a variável $b tb!!!

 

                        <?      
                                               $vinc = array();
                                               for ($a = 0;$FTCURSOSVINC[$a] != NULL;$a++) {
                                                       $vinc[$a-1] = $FTCURSOSVINC[$a-1][iD_CodCur];
                                               }
                                               for ($b = 0;$FTCURSOS[$b] != NULL;$b++) {       
                                                       ?>
                                                               <input type="checkbox" name="cursos[<?=$b-1?>]" id="cursos" value="<?=$FTCURSOS[$b-1][CurCod]?>" <? if(in_array($FTCURSOS[$b-1][CurCod],$vinc)) echo 'checked="checked"';?> /><?=$FTCURSOS[$b-1][CurNom]?> <br />                           
                                                       <? 
                                               }
                                       ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tbm num deu, ele desceu as marcações, creio que o erro não esta no contador, e sim na condição do comando in_array ou a lógica sei lá, o contador esta correto.

já dei var_dump nos dois arrays e vi que a caixa q deveria estar marcada esta nos dois array entçao o in_array deveria voltar TRUE mas não esta voltando.

 

Visualmente ta assim:

 

() Curso A

(x) Curso B

() Curso C

(x) Curso D

(x) Curso E

(x) Curso F

 

Do Curso B ao F estão cadastrados no banco, mas o Curso C não vem com o checkbox marcado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei dar uma simplificada, fica um pouco difícil, por não saber como vem os valores nas variáveis, mas

tente implementar algo assim, fica mais limpo o código:

 

	foreach($FTCURSOSVINC as $k=>$curso){
	if(in_array($k, $FTCURSOS)){
		echo "Encontrou";
	}else{
		echo "Não encontrou";
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal muito obrigado pela ajuda. Eu consegui fazer funcionar, o que estava acontecendo era algo muito bobo, da até vergonha de falar rsrsrsrs

 

A varialvel com todos os códigos do curso estava com um espaço, ai quando ia procurar no array dava false, justamente por causa do espaço. Resolvi colocando o simples comando trim()

 

						$vinc = array();
					for ($a = 0;$FTCURSOSVINC[$a] != NULL;$a++) {
						$vinc[$a] = $FTCURSOSVINC[$a][iD_CodCur];
					}
					for ($c = 0;$FTCURSOS[$c] != NULL;$c++) {	
						?>
							<input type="checkbox" name="cursos[<?=$c?>]" id="cursos" value="<?=$FTCURSOS[$c][CurCod]?>" <? if(in_array(trim($FTCURSOS[$c][CurCod]),$vinc)) echo 'checked="checked"';?> /><?=$FTCURSOS[$c][CurNom]?><br />                           
						<? 
					}	

 

Muito obrigado a quem tentou me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.