Retorno de array errado / **Socorro**

10 respostas
M

Galera meu problema é seguinte eu seleciono os médicos, coloco os horários ele me retorna assim:

Seleção e retorno do post

Sendo o que eu quero é que volte assim:
codMedico: 36
hora inicio: 11:11 hora fim: 11:11
codMedico: 37
hora inicio: 22:22hora fim: 22:22

que os horários sejam respectivos a seu médico, o meu código é esse:
Screenshot_22

Socorro por que é amanhã a entrega do meu tcc kkkkk

10 Respostas

R

É jovem, chorar na ultima hora não vai resolver…

O que percebo que está faltando ai é uma relação entre os horarios com os medicos, você separou em 2 arrays ($codMedico e $horaInicio), onde a meu ver deveria ser para cada codMedico ter um horaInicio e um Horafim, como vc está fazendo no html?

Você consegue dizer para o php montar uma estrutura parecida simplesmente usando [] nos inputs, por exemplo assim:

<input type="text" name="medico[0][nome]">
<input type="text" name="medico[0][horaInicio]">
<input type="text" name="medico[0][horaFim]">

Isso está simulando uma linha do print que vc postou ok? As demais linhas teriam medico[1] medico[2] e assim em diante…

Tendo isso em mente, no php para pegar os medicos basta:

$plantonistas = $_POST['medico'];
foreach ($plantonistas as $cod => $medico) {
    echo "codMedico: {$cod} Nome: {$medico['nome']}<br>";
    echo "hora inicio: {$medico['horaInicio']} hora fim: {$medico['horaFim']}<br><br>";
}

Usando apenas um unico for vc mata tudo…

M

Eu monto o html através desse código:

Usei aquele esquema que você falou para colocar os “[ ]” para fazer um array

R

Ajustei meu post anterior, da uma olhada, do jeito que vc mostrou agora, vc nunca vai amarrar os horarios aos seus respectivos médicos, vc precisa usar matrizes e não apenas vetores compreendes?

M

Agora eu entendi, então o name=“medico[0][nome]”, o medico é o global, e o nome é uma váriavel
é como se fosse um vetor de json?

R

Algo parecido (na verdade vc monta uma matriz que é um vetor de vetores), agora q vc postou melhor o código usando suas variaveis ficaria algo assim:

<input name="cor[{$id_select}][nome]">...
<input name="cor[{$id_select}][horaInicio]">...
<input name="cor[{$id_select}][horaFim]">...

A flexibilidade do php é justamente em poder misturar chaves numericas cor[1] por exemplo com chaves textuais como nome, horaInicio, horaFim etc…

Da uma olhada pra ver como fica (Ctrl + U pra ver codigo-fonte) e vc verá que o php imprime dentro dos [] os valores com os codigos dos medicos, isso para os tres inputs (onde cada médico terá seu cadastro separado e bem organizado…), depois la no confirmarPlantao vc usa um foreach só!

M

Mano fiz exatamente o que você disse, funciono porém ele da erro de index quando não seleciono todas as checkbox

mas quando seleciona tudo funciona que é uma beleza

tem como arrumar isso?

R

isso vc pode resolver com isset…

foreach ($plantonistas as $cod => $medico) {
    if (isset($medico['nome'])) {
        echo "codMedico: {$cod} Nome: {$medico['nome']}<br>";
        echo "hora inicio: {$medico['horaInicio']} hora fim: {$medico['horaFim']}<br><br>";
    }
}

Algo nesse sentido, faça o teste

M

Mano eu não sei seu nome mas PUTA QUE PARIU eu te amo kkkkkk, se tu mora em sp eu ia te chamar para ir ver o meu tcc meu chapa

R

sou Rodrigo e sou hétero :joy:, sucesso no seu projeto irmão, muito boa sorte!

M

Obrigado mesmo Rodrigo, eu também sou hétero, meio que me exaltei kkkk

Criado 3 de dezembro de 2018
Ultima resposta 3 de dez. de 2018
Respostas 10
Participantes 2