Ir para conteúdo

POWERED BY:

Arquivado

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

Falberto

vários campos para o mesmo ID

Recommended Posts

Seguinte,estou tento dificuldade em criar uma página que vai atualizar todos os campos de uma tabela.Exemplo:na tabela de medicamentos preciso listar 3 campos para atualização.ficando assim:

SELECT COD_MEDICAMENTO_ID,             COD_REGISTRO_MEDICAMENTO,            NOM_COMERCIAL,            NOM_PRINCIPIO_ATIVO            FROM T_MEDICAMENTO'            WHERE UPPER(NOM_PRINCIPIO_ATIVO) LIKE '.chr(39).'%'.$nom_comercial.'%'.chr(39);

Monto um WHILE trazendo os medicamento

    while ($linha = mysql_fetch_object($query)) {			print('<tr class="descricao" onmouseover="this.className='.chr(39).'muda'.chr(39).'" onmouseout="this.className='.chr(39).chr(39).'"> '."\n");      print('<td class="tabela_descricao"><input type="text" name="'.$linha->COD_MEDICAMENTO_ID.'" value="'.$linha->COD_REGISTRO_MEDICAMENTO.'"size="20" /></td> '."\n");      print('<td class="tabela_descricao"><input type="text" name="'.$linha->COD_MEDICAMENTO_ID.'" value="'.$linha->NOM_COMERCIAL.'"size="60" />'."\n");      print('<td class="tabela_descricao"><input type="text" name="'.$linha->COD_MEDICAMENTO_ID.'" value="'.$linha->NOM_PRINCIPIO_ATIVO.'"size="60" />'."\n");      print('<input type="hidden" name="'.$linha->COD_MEDICAMENTO_ID.'" value="'.$linha->COD_MEDICAMENTO_ID.'" />'."\n");      print('</tr> '."\n");    }    print('</table> '."\n");

só que na hora de atualizar, não estou conseguindo associar os campos, "COD_REGISTRO_MEDICAMENTO", "NOM_COMERCIAL", "NOM_PRINCIPIO_ATIVO", ao ID do medicamento COD_MEDICAMENTO_ID .na hora de gravar ele está trazendo apenas o ultimo valor do campo.para melhor entendimento, segue o linkwww.ciezo.org.br/sms-cmj/atualizacaoAcredito que a chave seja na hora que coloca o atributo 'name' no input.

Compartilhar este post


Link para o post
Compartilhar em outros sites

falbertoa atribuição de valores funciona em cascata ( de cima pra baixo )veja a diferença entre esses dois scripts:

<?phpif( isset( $_POST['acao'] ) ){ while( list( $k, $v ) = each( $_POST ) ){ echo "<br />"; echo $k; echo ": "; echo $v; }}?><form action=posts.php method=POST><input type=hidden name=acao value=1><br /><input type=text name=254 value=teste1><br /><input type=text name=253 value=teste2><input type=submit value=enviar></form>

<?phpif( isset( $_POST['acao'] ) ){ while( list( $k, $v ) = each( $_POST ) ){ echo "<br />"; echo $k; echo ": "; echo $v; }}?><form action=posts.php method=POST><input type=hidden name=acao value=1><br /><input type=text name=254 value=teste1><br /><input type=text name=254 value=teste2><input type=submit value=enviar></form>

no seu caso, são 3 campos que pertencem a um mesmo ID, sendo que são vários registros.para esse caso é simples, basta formatar a nomenclatura dos campos de entrada:

<br /><input type=text name=nome[254] value="Fulano da Silva"><br /><input type=text name=idade[254] value=50><br /><input type=text name=ocupacao[254] value="pedreiro"><br /><br /><input type=text name=nome[255] value="Beltrano Pereira"><br /><input type=text name=idade[255] value=27><br /><input type=text name=ocupacao[255] value="carpinteiro">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito o que você quer.

você quer selecionar um dos campos na busca para atualizar seu registros. é isso?

Os nomes de campo tem que identificar cada campo da tabela que no caso você deixou todos com o mesmo nome.

você poderia fazer assim:

 

COD_REGISTRO_MEDICAMENTO.$linha->COD_MEDICAMENTO_IDNON_COMERCIAL.$linha->COD_MEDICAMENTO_IDNON_PRINCIPIO_ATIVO.$linha->COD_MEDICAMENTO_IDCOD_MEDICAMENTO_ID.$linha->COD_MEDICAMENTO_ID
Outro detalhes é que você vai atualizar a partir de uma busca e nesta busca poderá ter mais de um registro.

então você terá que identificar qual registro será enviado para atualização.

 

Pois o fomulário ele enviará todos da lista, e atualizara todos conforme id.

Compartilhar este post


Link para o post
Compartilhar em outros sites

falbertoa atribuição de valores funciona em cascata ( de cima pra baixo )veja a diferença entre esses dois scripts:

<?phpif( isset( $_POST['acao'] ) ){ while( list( $k, $v ) = each( $_POST ) ){ echo "<br />"; echo $k; echo ": "; echo $v; }}?><form action=posts.php method=POST><input type=hidden name=acao value=1><br /><input type=text name=254 value=teste1><br /><input type=text name=253 value=teste2><input type=submit value=enviar></form>

<?phpif( isset( $_POST['acao'] ) ){ while( list( $k, $v ) = each( $_POST ) ){ echo "<br />"; echo $k; echo ": "; echo $v; }}?><form action=posts.php method=POST><input type=hidden name=acao value=1><br /><input type=text name=254 value=teste1><br /><input type=text name=254 value=teste2><input type=submit value=enviar></form>

no seu caso, são 3 campos que pertencem a um mesmo ID, sendo que são vários registros.para esse caso é simples, basta formatar a nomenclatura dos campos de entrada:

<br /><input type=text name=nome[254] value="Fulano da Silva"><br /><input type=text name=idade[254] value=50><br /><input type=text name=ocupacao[254] value="pedreiro"><br /><br /><input type=text name=nome[255] value="Beltrano Pereira"><br /><input type=text name=idade[255] value=27><br /><input type=text name=ocupacao[255] value="carpinteiro">

Maravilha, entendi perfeitamente,agora estou com outro problema, como eu vou pegar os valores na proxima página? dentro de um for?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pcdesign, tudo bem isso é normal acontecerfalberto,apenas reaproveite o exemplo que passei

while( list( $k, $v ) = each( $_POST ) ){echo "<br />";echo $k;echo ": ";echo $v;}

a estrutura de repetição fará um loop em cada índice do array $_POSTpara o seu caso, os índices do array $_POST são por sua vez, array tambémlogicamente você deverá fazer um loop neles também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pcdesign, tudo bem isso é normal acontecerfalberto,apenas reaproveite o exemplo que passei

while( list( $k, $v ) = each( $_POST ) ){echo "<br />";echo $k;echo ": ";echo $v;}

a estrutura de repetição fará um loop em cada índice do array $_POSTpara o seu caso, os índices do array $_POST são por sua vez, array tambémlogicamente você deverá fazer um loop neles também.
aqui que está meu problema, estou até agora batendo cabeça e não consigo montar um SQL de update em cima dessa condição, pois ele pegar um item por item para colocar na array, entao não consigo atualizar os 3 campos de uma vez

Compartilhar este post


Link para o post
Compartilhar em outros sites

Finalmente consegui resolver!!o que eu precisava era montar uma array com os elemtos em ordem, então varri todos os POST de uma vez assim hó!

		for( ;list(, $cod_registro_medicamento ) = each( $_POST["cod_registro_medicamento"] ),				list(, $nome_comercial ) = each( $_POST["nome_comercial"] ), 				list(, $nome_ativo ) = each( $_POST["nome_ativo"] ), 				list(, $cod_medicamento_id ) = each( $_POST["cod_medicamento_id"] );)				{$sql = 'UPDATE T_MEDICAMENTO '."\n".			'   SET COD_REGISTRO_MEDICAMENTO      = '.chr(39).$cod_registro_medicamento.chr(39).', '."\n".			'   NOM_COMERCIAL								      = '.chr(39).$nome_comercial.chr(39).', '."\n".			'   NOM_PRINCIPIO_ATIVO    					  = '.chr(39).$nome_ativo.chr(39).', '."\n".			'   COD_USUARIO_ID                    = '.$cod_usuario_id."\n".			'   WHERE COD_MEDICAMENTO_ID 					= '.$cod_medicamento_id;}

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.