Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicius Magalhães

Editar 2 tabelas do Mysql por formulario

Recommended Posts

Eaí Galera beleza?

estou com uma duvida alguem poderia me ajudar?

Eu tenho 2 tabelas no meu banco de dados, a primeira eu tenho (Nome, Email, Empresa, Telefone, Cidade) e na outra tabela eu tenho os Telefones dos usuario, pelo seguinte, cada usuario pode ter por exemplo 10 telefones, ae eu criei uma tabela só para guardar os telefones, e relacionei as 2 tabelas pra eu saber de quem pertence o telefone.

 

ae pra editar a primeira tabela eu fiz assim:

include("conexao.php");

$id = intval($_GET["id"]);
if($id)
{   
  $rs = executar("SELECT * FROM tformulario WHERE ID = '".$id."' ");
if(mysql_num_rows($rs) > 0)
{
	$ar = mysql_fetch_row($rs);

	$txtNome 	= $ar[1];
	$txtEmail 	= $ar[2];
	$txtEmpresa    = $ar[3];
	$txtCidade     = $ar[4];
	$cbNovidade    = $ar[5];
}
else
{
	$id = null;
}
}

if($_POST)
{
$txtNome  	 = $_POST["txtNome"];
$txtEmail 	 = $_POST["txtEmail"];
$txtEmpresa	 = $_POST["txtEmpresa"];
       $txtTelefone     = $_POST["txtTelefone"];
$txtCidade 	 = $_POST["txtCidade"];
       $cbNovidade      = $_POST["cbNovidade"];

if($id)
{
executar("UPDATE tformulario SET Nome = '$txtNome', Email = '$txtEmail', Empresa = '$txtEmpresa', Cidade = '$txtCidade', Novidade = '$cbNovidade' WHERE ID = '".$id."' ");
}
else
{
executar("INSERT INTO tformulario (Nome, Email, Empresa, Cidade, Novidade) VALUES ('$txtNome', '$txtEmail', '$txtEmpresa', '$txtCidade', '$cbNovidade')");
}

<?php
while ($row = mysql_fetch_array($rs))
{
?>
  <tr>
    <td><?php echo $row["ID"]; ?></td>
    <td><?php echo $row["Nome"]; ?></td>
    <td><?php echo $row["Email"]; ?></td>
    <td><?php echo $row["Empresa"]; ?></td>
    <td><?php echo $row["Cidade"]; ?></td>
    <td><?php echo $row["Novidade"]; ?></td>
    <td>| <a href="?id=<?php echo $row['ID']; ?>">Editar</a> | <a href="?remover=<?php echo $row['ID']; ?>" onclick="return confirm ('Tem certeza que deseja Remover?');">Remover</a></td>
</tr>
<?php
        }
?>		

 

e quando eu clico em 'Editar', as informações vai para este formulario ae eu consigo edita, mas e pra eu editar os telefones?? sendo que um usuario pode ter 10 telefones, e no meu formulario eu tenho apenas 1 campo de telefone?

 

<form action="" method="post" enctype="multipart/form-data" style="float: left;">
       <label>
           Nome:<br />
           <input type="text" id="txtNome" name="txtNome" maxlength="150" size="50" title="Digite o nome." value="<?php echo $txtNome;?>" />
       </label>
       <br />
       <label>
           E-mail:<br />
           <input type="text" id="txtEmail" name="txtEmail" maxlength="150" size="50" title="Digite o e-mail." value="<?php echo $txtEmail;?>" />
       </label>
       <br />
       <label>
           Empresa:<br />
           <input type="text" id="txtEmpresa" name="txtEmpresa" maxlength="150" size="50" title="Digite a empresa." value="<?php echo $txtEmpresa;?>" />
       </label>
       <br />
       <label>
       		Telefone: <br />

  			<input type="text" name="txtTelefone" maxlength="14" size="50" value="<?php echo $txtTelefone; ?>" />

	  </label>
	  <br />
       <label>
           Cidade:<br />
           <input type="text" id="txtCidade" name="txtCidade" maxlength="50" size="50" title="Digite a cidade." value="<?php echo $txtCidade;?>" />
       </label>
       <br />
       <label>
       <div class="desejo">
           <p>Desejo receber as novidades por e-mail.</p>
           <input type="checkbox" name="cbNovidade" id="cbNovidade" value="1" checked="checked" />
       </div>    
       </label>
       <br />
           <input type="submit" value="enviar" />
   </form>

   <form method="get" action="" style="float: left; margin-left: 100px;">
       <table>
           <tr>
               <td align="center"><p><strong>Pesquisar:</strong></p></td>
           </tr>
           <tr>
	      <td align="right">
                 <label>
                 Nome:<input type="text" name="palavra" size="30" value="<?php echo $palavra;?>" />
   	          </label>
             </td>
           </tr>

           <tr>
	      <td align="right">
               <label>
		         Cidade: <input type="text" name="cidade" size="30" value="<?php echo $cidade;?>" />
           	</label>
              </td>
           </tr>

           <tr>
	      <td align="right">
               <label>
		         Telefone: <input type="text" class="mask-telefone" name="fone" size="30" />
           	</label>
              </td>
           </tr>

           <tr>
              <td><input type="submit" value="buscar" /></td>
           </tr>
       </table>  

</form>

 

Alguém tem alguma sugestão? Por favor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara ficou confusa sua dúvida não entendi muito.

 

Pelo que eu entendi tente assim:

 

Na página de edição das informações tem apenas 1 campo de telefone certo?

porém você também tem o ID do cadastro certo?

 

Joga ele em um link, por exemplo:

<a href="site.com.br/editar_numeros.php?id=$id">Editar outros numeros</a>

 

Nessa página editar_numeros, você resgata os dados do banco, usando esse id que foi passado por GET

e lista com os 10 campos para edição.

 

Para gerar só os campos que tem numero na "editar_numeros" você pode fazer algo mais ou menos assim:

 

<?php

$id =  $_GET['id'];
$buscar = mysql_query("select * from telefones where id_user = ".$id);
while($r = mysql_fetch_array($buscar)){

print "<input type='text' value=".$r['numero']." name='telefone[]' />";

}

?>

 

algo assim

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou na hora de renderizar a página de edição, você pode fazer uma outra consulta à tabela de telefones, cujo usuário seja o que estiver sendo editado no momento e já exibir cada um dos telefones cadastrados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara ficou confusa sua dúvida não entendi muito.

 

Pelo que eu entendi tente assim:

 

Na página de edição das informações tem apenas 1 campo de telefone certo?

porém você também tem o ID do cadastro certo?

 

Joga ele em um link, por exemplo:

<a href="site.com.br/editar_numeros.php?id=$id">Editar outros numeros</a>

 

Nessa página editar_numeros, você resgata os dados do banco, usando esse id que foi passado por GET

e lista com os 10 campos para edição.

 

Para gerar só os campos que tem numero na "editar_numeros" você pode fazer algo mais ou menos assim:

 

<?php

$id =  $_GET['id'];
$buscar = mysql_query("select * from telefones where id_user = ".$id);
while($r = mysql_fetch_array($buscar)){

print "<input type='text' value=".$r['numero']." name='telefone[]' />";

}

?>

 

algo assim

 

Então Gabriel, Agradeço a ajuda, mas tentei aqui fazer desse jeito que você falou, mas nao deu certo nao =/

a situação ta complicada pra mim, eu tb nao consigo explica direito, eu só quero quando clicar no editar, eles tb chama os telfones e se o telefone for mais q 1 ele aumenta os campo de telefone conforme a quantidade de telefone que o usuario tiver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou na hora de renderizar a página de edição, você pode fazer uma outra consulta à tabela de telefones, cujo usuário seja o que estiver sendo editado no momento e já exibir cada um dos telefones cadastrados.

 

Evando Oliveira, desse jeito que você falou, ele pelo menos ta chamando o telefone la no input do telefone, mas ele nao edita e tb eu preciso fazer com que aparece mais campos inputs de acordo com a quantidade de numeros que um usuario tiver.

 

Sim , está dando erra nessa linha $busca = executar("SELECT * FROM ttelefone WHERE ID = '".$id."' ");

 

Está dando algum erro?

 

 

Sim, ta dando erro nessa linha $busca = executar("SELECT * FROM ttelefone WHERE ID = '".$id."' ");

 

mas pelo que eu entendi esta tudo certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Evando Oliveira, desse jeito que você falou, ele pelo menos ta chamando o telefone la no input do telefone, mas ele nao edita e tb eu preciso fazer com que aparece mais campos inputs de acordo com a quantidade de numeros que um usuario tiver.

 

Sim , está dando erra nessa linha $busca = executar("SELECT * FROM ttelefone WHERE ID = '".$id."' ");

 

 

 

 

Sim, ta dando erro nessa linha $busca = executar("SELECT * FROM ttelefone WHERE ID = '".$id."' ");

 

mas pelo que eu entendi esta tudo certo.

 

Ah só pra vcs entenderem esse 'executar' é um função q fiz pra da um query,

 

function executar($sql, $returnID = false)
{
$conecta = mysql_connect("localhost", "root", "") or die("Falha ao conectar o Servidor.");
mysql_select_db("bancoformulario", $conecta) or die ("Falha ao conectar o Banco de Dados.");
$rs = mysql_query($sql, $conecta);
if($returnID)
{
	$rs = mysql_insert_id($conecta);
}
mysql_close($conecta);
return $rs;
}

 

Qual o erro?

 

Então Henrique, do jeito que o Gabriel falou pra eu fazer ta dando esse erro:

 

Fatal error: Call to undefined function executar() in C:\wamp\www\site\formlogin\editar.php on line 5

 

Eu fiz assim agora:

 

if($id) 		{ 			executar("UPDATE tformulario SET Nome = '$txtNome', Email = '$txtEmail', Empresa = '$txtEmpresa', Cidade = '$txtCidade', Novidade = '$cbNovidade', Telefone = '$txtTelefone' WHERE ID = '".$id."' "); 			 			executar("UPDATE ttelefone SET Telefone = '$txtTelefone'"); 		} 		else 		{ 			executar("INSERT INTO tformulario (Nome, Email, Empresa, Cidade, Novidade) VALUES ('$txtNome', '$txtEmail', '$txtEmpresa', '$txtCidade', '$cbNovidade')");	 			 			executar("INSERT INTO ttelefone (Telefone) VALUES ('$txtTelefone')"); 		} 		header("Location: consulta.php"); exit;

 

aí quando eu clico em editar, ele retorna todas as informações no formulario e retorna apenas 1 telefones, e quando eu edito 1 telefone ele edita todos.. =|

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você incluiu o arquivo onde a função "executar" está definida?

 

Sim está tudo certo com a função, eu consigo editar a primeira tabela que tem (Nome, Email, Empresa, Cidade, Novidade)

 

agora a segunda tabela que tem os telefones eu não consigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha o erro:

Fatal error: Call to undefined function executar() in C:\wamp\www\site\formlogin\editar.php on line 5

Erro fatal: chamada da função executar() que não foi definida, em C:\wamp\www\site\formlogin\editar.php na linha 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha o erro:

 

Erro fatal: chamada da função executar() que não foi definida, em C:\wamp\www\site\formlogin\editar.php na linha 5

 

Realmente nesse arquivo tinha esquecido de chama a função, mas mesmo assim nao ta dando certo, agora ele ta simplesmente aparecendo a magina em branco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o Henrique Barcelos disse

esse erro não tem relação nenhuma com as informações das tabelas ou com a conexão.

 

executar não é uma função nativa do php claro,

então ela deve estar em algum arquivo seu!

 

 

troca o executar() por mysql_query()

 

e posta o que acontecer,

se for um novo erro, poste ele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Abre o código fonte da página (ctrl+U) e veja se tem algum erro do PHP lá.

pode acontecer de você não visualizar ele no navegador mas no código fonte aparecer.

 

 

Vixi já tentei de tudo que voce imagina, agora estou conseguindo puxar o telefone, mas como q eu vou editar 2 telefones se eu tenho apenas 1 campo input de telefone? ja tentei fazer um for no input e nao consegui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta difícil mesmo....

 

Pelo meu ponto de vista ele faria o seguinte.

 

Pega a primeira página que ele consegue editar o DB "A" (vamos por o nome de DB "A"), beleza...

 

Abaixo do código desses inputs ele faria uma nova seleção no banco de dados mais so que agora o DB "B", pegaria esses dados armazenaria nos arrays ou chamaria logo eles e exibiria nos imputs de 10 campos ( colocaria o número exato de campos mesmo que não usasse).

 

<imput type:text value: "<php echo: "$numero2;"?>" />

<imput type:text value: "<php echo: "$numero3;"?>" />

...

<imput type:text value: "<php echo: "$numero10;"?>" />

 

Desculpa a pressa estou no trabalho e se tiver erros por favor desconsiderem, to no trabalho e olhei por cima, mas axo que ele usando essa lógica daria certo!!

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.