Ir para conteúdo

POWERED BY:

Arquivado

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

BrunoAlterosa

Dificuldades com Formulario avançado

Recommended Posts

ola galera

estou com uma dificuldade enorme, tenho um formulario para edição. Nele eu pego os dados de um cliente cadastrado + seu dependentes.

Eu fiz 2 tabelas, e fiz um INNER JOIN para mostrar todo o conteudo para edição

o problemas sao dois:

 

Primeiro: nao consigo setar o select vindo do banco de dados...

 

Segundo: no formulario de ediçao eu mostro todos os dependentes, usando apenas 4 inputs, só q na hora de atulaizar no banco eu nao sei como eu edito essses dependentes...

Um pouco do codigo:

<?php
      $query=mysql_query("SELECT * FROM cliente WHERE idcliente='$id'");
      
      while($cliente = mysql_fetch_array($query)){
?>
 <form id="form" name="form" method="post" action="editarDadosFinal.php">
      Nome:   <input = "text" name="nome" id="nome" size="30" maxlength="45" value=" <?php  echo $cliente['nome'];?>">
      Estado:  <select name="estado" id="estado"value=" <?php  echo $cliente['estado'];?>"></select>

//Daqui para baixo sao os dependentes, eu faço aparecer varios somente com essas linhas, mais nao sei como atualizar um a um no banco :(

<?php
       $d = mysql_query("SELECT * FROM cliente LEFT OUTER JOIN dependentes ON codigo = '$id'");

       while($dep = mysql_fetch_array($d)){

        if($dep['idcliente'] === $dep['codigo']){
                Parentesco: <input type="text" name="par_1" size="10" value="<?php  echo $dep['parentesco'];?>">
                Nome:   <input = "text" name="nome_1" id="dep1" size="20" value=" <?php  echo $dep['nome_dep'];?>">

                }else{
         }
}
</form>
?>

Se alguem puder me ajudar, ficarei grato

Compartilhar este post


Link para o post
Compartilhar em outros sites
BrunoAlterosa,

 

Organiza teu código que o negócio tá feio..

1º Voce faz o select e busca os campos no banco, e depois faz o Update nos dados, já que é alteração dos dados.

que página é essa editarDadosFinal.php? está aparecendo algum erro?

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uai cara, deixa eu explicar melhor entao

PRIMEIRO: esses codigos ai em cima, sao um formulario onde eu imprimo na tela os valores la do banco de dados, ai o

cliente altera de acordo com a necessidade dele.

 

SEGUNDO: O EditarDadosFinal.php, seria a pagina auxiliar, onde ele pegara os dados do formulario e fará o UPDATE.

 

Não aparece erro, pq ainda nao sei como faz o UPDATE da parte dos dependentes, a logica dos dependentes é seguinte: ele mostrara por exemplo 3 nomes diferentes, so q ele que do jeito q eu fiz ele vai ter só um input né...

 

como atualizar esses dados, se ele tem so um INPUT

 

deu pra entender? rsrsr

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que seria bom você dar um ideia do que seria essa edição, organizar teu código e quais tipos de dados seria essas dependências.

 

- Qual o objetivo?

- O que tem nas duas tabelas e etc.

 

Poderiamos ajudar melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo...

 

o objetivo dos dependentes seria:

é feito o cadastro de 1 cliente,ai ele sera o titular do plano. Ai junto com ele, mais duas pessoas usam o plano dele.

ai o cadastro é feito = 1 titular e 2 dependentes.

 

eu fiz a tabela cliente(que seria o titular) e tambem fiz a tabela dependentes

Ai e feito o cadastro do titular e dos dependentes em uma pagina.

Só que eu fiz 2 inserts, um para o titular e outro para os dependentes. Coloquei o campo codigo na tabela

dependentes, pra ele pegar o Id do cliente. Ai na consulta e so comparar o idcliente com o codigo da tabela dependentes.

Fiz isso pra organizar melhor as tabelas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK, vou redigir um modelo e você toma como exemplo...

<?php
$PClientes = mysql_query("SELECT * FROM clientes WHERE id='$id'");
$cliente   = mysql_fetch_array($PClientes);
  echo '<form name="clientes" method="post" action="form.php">';
  echo 'Nome: <input type="text" name="cliente" value="'.$cliente['nome'].'" />';
  echo '<h3>DEPENDENTES</h3> <br /><br />';
$cli_id=$cliente['id'];
$PDependentes = mysql_query("SELECT * FROM dependentes WHERE cli_id='$cli_id'");
while($res = mysql_fetch_array($PDependentes)):
  /*
   ESSE VALOR "DEPEN_NOME[]" É RETORNADO UM ARRAY QUANDO É ENVIADO O FORM
   EX: $_POST['depen_nome'] = array(depid => dep_nome);
  */
  echo '<input name="depen_nome['.$res['depid'].']" value="'.$res['dep_nome'].'" />';
endforeach;
echo '</form>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo entendi, so nao entendi a linha 14, mais é por causa dos meus conhecimentos serem baixos

 

so me explica por favor, como eu faço entao o update agora dos dependentes.

 

seria algo tipo assim:

 

$dep = $_POST['depen_nome'];

 

mysql_query("UPDATE dependentes SET nome = '$dep'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo entendi, so nao entendi a linha 14, mais é por causa dos meus conhecimentos serem baixos

 

so me explica por favor, como eu faço entao o update agora dos dependentes.

 

seria algo tipo assim:

 

$dep = $_POST['depen_nome'];

 

mysql_query("UPDATE dependentes SET nome = '$dep'");

 

Quanto for pegar o valor vai ser retornado um array de dados...

 

então poderá fazer o seguinte para fazer o update...

<?php
$depedentes = $_POST['depen_nome'];

foreach ( $dependentes as $dep_id => $dep_nome ):
   $sql=mysql_query("UPDATE dependentes SET nome='$dep_nome' WHERE depid='$dep_id'");
endforeach;
?>

Aconcelho da uma estudada sobre array...

http://php.net/manual/pt_BR/language.types.array.php

 

EXPLICANDO LINHA 14

 

name="depen_nome[$ID]" value="$depen_nome"

 

em um array ficaria mais ou menos assim...

 

índice do array seria o $ID e o valor $depen_nome

array($ID => $depen_nome)

Compartilhar este post


Link para o post
Compartilhar em outros sites

  1. <?php

  2. $depedentes = $_POST['depen_nome'];

foreach ( $dependentes as $dep_id => $dep_nome ):

$sql=mysql_query("UPDATE dependentes SET nome='$dep_nome' WHERE depid='$dep_id'");

endforeach;

?>

Esta dando Parse erro na linha 6,

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

  1. <?php
  2. $depedentes = $_POST['depen_nome'];
  3. foreach ( $dependentes as $dep_id => $dep_nome ):
  4. $sql=mysql_query("UPDATE dependentes SET nome='$dep_nome' WHERE depid='$dep_id'");
  5. endforeach;
  6. ?>

Esta dando Parse erro na linha 6,

 

Colocar o error completo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara valeu pelas dicas deu certo aqui o seu exemplo, so sei pq o endforeach nao da certo na primeira pagina. Ai eu usei o while normal

e tambem usei um campo hidden para o id dos dependentes. ficou assim:

 

pagina.php

$PClientes = mysql_query("SELECT * FROM cliente WHERE idcliente='$id'");
    $cliente = mysql_fetch_array($PClientes);
    echo '<form name="testeeditar2" method="post" action="testeeditar2.php">';
    echo 'Nome: <input type="text" name="cliente" value="'.$cliente['nome'].'" />';
    echo '<h3>DEPENDENTES</h3> <br /><br />';
    $cli_id=$cliente['idcliente'];
    $PDependentes = mysql_query("SELECT * FROM dependentes WHERE codigo='$cli_id'");

    while($res = mysql_fetch_array($PDependentes)){
/*
ESSE VALOR "DEPEN_NOME[]" É RETORNADO UM ARRAY QUANDO É ENVIADO O FORM
EX: $_POST['depen_nome'] = array(depid => dep_nome);
*/
echo '<input type= "hidden"name="id_dep['.$res['iddependentes'].']" value="'.$res['iddependentes'].'" />';
echo '<input name="nome_dep['.$res['iddependentes'].']" value="'.$res['nome_dep'].'" /><br />';

}

e a pagina q atualiza o registro ficou assim:

$dependentes = $_POST['nome_dep'];
    $dep_id = $_POST['id_dep'];

    mysql_select_db("funeraria",$con);

    foreach ($dependentes as $dep_id => $dep_nome ):
    $dep_nome = strtoupper($dep_nome);
    $sql=mysql_query("UPDATE dependentes SET nome_dep='$dep_nome' WHERE iddependentes='$dep_id'")
                             or die(mysql_error());
    endforeach;

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.