Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicius Magalhães

Relacionamento de Tabelas Mysql

Recommended Posts

Eaí Galera beleza? estou com um problema e nao consigo resolver faz 2 dias já q estou travado nisso, alguém poderia me ajudar? Vou explicar oque está acontecendo:

 

Eu fiz um formulario com (Nome, Email, Empresa, Telefone, Cidade, Mensagem) essas informações são gravadas em um banco de Dados, eu criei 2 tabelas no meu banco de dados, uma tabela para receber (Nome, Email, Empresa e Mensagem), e outra tabela para receber APENAS os TELEFONES, pois cada usuário poder ter VARIOS telefones, até aí tudo bem...

Ae na minha area de admin, fiz uma consulta para imprimir os resultados RELACIONANDO as Tabelas, e eu tenho 1 usuario com 2 telefones, e era para aparecer apenas 1 linha com as informações do usuario e 2 linhas com os telefones, só que a linha do usuario está repetindo de acordo com a quantidade de telefones. vou deixar meu codigo aqui..

 

Banco de Dados:

 

Tabela : tformulario (Nome, Email, Empresa, Cidade, Mensagem, Novidade)

 

Tabela : ttelefone (FormularioID, Telefone)

 

$rs = executar("SELECT tformulario.*, ttelefone.FormularioID, ttelefone.Telefone FROM ttelefone INNER JOIN tformulario ON ttelefone.FormularioID = tformulario.ID ORDER BY Nome");

 

while ($row = mysql_fetch_array($rs))

{

echo $row["ID"];

echo $row["Telefone"];

echo $row["FormularioID"];

echo $row["Nome"];

echo $row["Email"];

echo $row["Empresa"];

echo $row["Cidade"];

echo $row["Mensagem"];

echo $row["Novidade"];

}

 

ele está imprimindo assim:

 

1 (12) 8800-0070 1 Vinicius teste@gmail.com Empresa X Sao Paulo Mensagem Teste.

1 (12) 9999-9999 1 Vinicius teste@gmail.com Empresa X Sao Paulo Mensagem Teste.

 

Sendo que era pra imprimir assim: ("APENAS 1 USUARIO que tem 2 telefones.")

 

1 (12) 8803-0070 1 Vinicius teste@gmail.com Empresa X Sao Paulo Mensagem Teste.

1 (12) 9999-9999

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius seria bom que você colocasse na tabela ttelefone um campo de auto_increment.

E seu codigo pode ficar assim:

<?php
  $sql = executar("SELECT*FROM tformulario");
  $qnt = mysql_num_rows($sql);

  for($i=0;$i<$qnt;$i++){
     $row = mysql_fetch_array($qnt);
     $id = $row['ID'];      

     echo $row["Nome"];
     echo $row['Email']; 
     echo $row['Empresa']; 
     echo $row['Cidade']; 
     echo $row['Mensagem']; 
     echo $row['Novidade']; 

     $sql2 = executar("SELECT*FROM ttelefone WHERE FormularioID = '$id'");
     $qnt2 = mysql_num_rows($sql2);

     for($j=0;$j<$qnt2;$j++){
        $rows2 = mysql_fetch_array($sql2);

        echo $row2['FormularioID']; 
        echo $row2['Telefone']; 
     }
  }
?>

 

Aproveitando cara, acessa o site autosoftpp.com.br, que de uma empresa que trabalha com programação e automação.

 

Valeu cara, qualquer outra duvida, pode posta-la.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o relacionamento está errado, recomendo a você utilizar a seguinte forma para criar as tabelas do zero:

 

CREATE TABLE `tformulario ` (
 `id` int(10) NOT NULL auto_increment,
 `Nome` varchar(100) NOT NULL,
 `Email` varchar(100) NOT NULL,
 `Empresa` varchar(100) NOT NULL,
 `Cidade` varchar(100) NOT NULL,
 `Mensagem` varchar(100) NOT NULL,
 `Novidade` varchar(100) NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

CREATE TABLE `ttelefone ` (
 `id` int(10) NOT NULL auto_increment,
 `FormularioID` int(10) NOT NULL,
 `Telefone` varchar(8) NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

ADD CONSTRAINT `ttelefone_fk_1`
FOREIGN KEY (`FormularioID`)
REFERENCES `tformulario` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE;

 

E quando você for fazer o insert, inserir os dados primeiro na tabela tformulario e o id gerado na inserção, utiliza-lo para inserir junto com o telefone na tabela ttelefone.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius seria bom que você colocasse na tabela ttelefone um campo de auto_increment.

E seu codigo pode ficar assim:

<?php
  $sql = executar("SELECT*FROM tformulario");
  $qnt = mysql_num_rows($sql);

  for($i=0;$i<$qnt;$i++){
     $row = mysql_fetch_array($qnt);
     $id = $row['ID'];      

     echo $row["Nome"];
     echo $row['Email']; 
     echo $row['Empresa']; 
     echo $row['Cidade']; 
     echo $row['Mensagem']; 
     echo $row['Novidade']; 

     $sql2 = executar("SELECT*FROM ttelefone WHERE FormularioID = '$id'");
     $qnt2 = mysql_num_rows($sql2);

     for($j=0;$j<$qnt2;$j++){
        $rows2 = mysql_fetch_array($sql2);

        echo $row2['FormularioID']; 
        echo $row2['Telefone']; 
     }
  }
?>

 

Aproveitando cara, acessa o site autosoftpp.com.br, que de uma empresa que trabalha com programação e automação.

 

Valeu cara, qualquer outra duvida, pode posta-la.

 

Então ricardo, eu coloquei um ID de autoincremente só nao estou chamando ele no php mas , ele está na tabela, eu to conseguindo chamar o usuario ID e esta vindo os telefones juntos, o problema é: Como q eu vouo editar 2 teleefones, sendo que eu tenho apenas 1 CAMPO DE INPUT, estava fazendo um for pra ele repetir o input de acordo com a quantidade de telefone q estiver vindo, mas nao estou conseguindo.

 

o relacionamento está errado, recomendo a você utilizar a seguinte forma para criar as tabelas do zero:

 

CREATE TABLE `tformulario ` (
 `id` int(10) NOT NULL auto_increment,
 `Nome` varchar(100) NOT NULL,
 `Email` varchar(100) NOT NULL,
 `Empresa` varchar(100) NOT NULL,
 `Cidade` varchar(100) NOT NULL,
 `Mensagem` varchar(100) NOT NULL,
 `Novidade` varchar(100) NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

CREATE TABLE `ttelefone ` (
 `id` int(10) NOT NULL auto_increment,
 `FormularioID` int(10) NOT NULL,
 `Telefone` varchar(8) NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

ADD CONSTRAINT `ttelefone_fk_1`
FOREIGN KEY (`FormularioID`)
REFERENCES `tformulario` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE;

 

E quando você for fazer o insert, inserir os dados primeiro na tabela tformulario e o id gerado na inserção, utiliza-lo para inserir junto com o telefone na tabela ttelefone.

 

Fernando, minha tabela está assim, eu ajustei e ta tudo certo agora, a unica coisa que preciso é fazer um jeito do campo INPUT do telefone duplicar ou triplicar de acordo com a quantidade de telefone do usuario que estou chamando, estou tentando fazer um FOR no campo input mas não está dando certo.! EU ja revirei essa internet de cabeça pra baixo e parece q nao tem ninguem teve essa duvida q estou tendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto não é um problema de SQL, e sim de lógica de implementação do seu código PHP.

Fazendo um join recuperando tudo de uma vez, você sempre vai obter dessa forma.

Você poderia implementar uma lógica no PHP que cuide disso, para que você possa imprimir de uma forma diferente.

 

Um exemplo rápido (não testei localmente, mas deve funcionar. Usei a mesma consulta que você mandou)

 

$rs = executar("SELECT tformulario.*
, ttelefone.FormularioID
, ttelefone.Telefone
FROM ttelefone
INNER JOIN tformulario ON ttelefone.FormularioID = tformulario.ID
ORDER BY Nome");

$users = array();

// primeiro, criamos uma lista de usuarios
while ($row = mysql_fetch_array($rs))
{
if(!isset($users[$row['ID']])){
	$users[$row['ID']] = $row;
}
$telefone = $row['Telefone'];
unset($row['Telefone']);

$users[$row['ID']]['telefones'][] = $telefone;
}

// agora, exibimos os resultados
// primeiro o cabecalho
$first = reset($users);

echo '<table border="1">';
echo '<tr>';
foreach($first as $key => $value){
echo '<th>', $key, '</th>';
}
echo '</tr>';

// agora, o restante dos dados dos usuarios
foreach($users as $user){
echo '<tr>';
foreach($user as $key => $value){
	echo '<td>';
	if($key == 'telefones'){
		echo implode(' / ', $value);
	} else {
		echo $value;
	}
	echo '</tr>';
}
echo '<tr>';
}

echo '</table>';

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto não é um problema de SQL, e sim de lógica de implementação do seu código PHP.

Fazendo um join recuperando tudo de uma vez, você sempre vai obter dessa forma.

Você poderia implementar uma lógica no PHP que cuide disso, para que você possa imprimir de uma forma diferente.

 

Um exemplo rápido (não testei localmente, mas deve funcionar. Usei a mesma consulta que você mandou)

 

$rs = executar("SELECT tformulario.*
, ttelefone.FormularioID
, ttelefone.Telefone
FROM ttelefone
INNER JOIN tformulario ON ttelefone.FormularioID = tformulario.ID
ORDER BY Nome");

$users = array();

// primeiro, criamos uma lista de usuarios
while ($row = mysql_fetch_array($rs))
{
if(!isset($users[$row['ID']])){
	$users[$row['ID']] = $row;
}
$telefone = $row['Telefone'];
unset($row['Telefone']);

$users[$row['ID']]['telefones'][] = $telefone;
}

// agora, exibimos os resultados
// primeiro o cabecalho
$first = reset($users);

echo '<table border="1">';
echo '<tr>';
foreach($first as $key => $value){
echo '<th>', $key, '</th>';
}
echo '</tr>';

// agora, o restante dos dados dos usuarios
foreach($users as $user){
echo '<tr>';
foreach($user as $key => $value){
	echo '<td>';
	if($key == 'telefones'){
		echo implode(' / ', $value);
	} else {
		echo $value;
	}
	echo '</tr>';
}
echo '<tr>';
}

echo '</table>';

 

@braços e fique com Deus!

 

 

Então meu codigo está funcionando certinho, quando eu clico em editar, ele chama o ID do usuario e junto com isso ele chama o telefone que pertence a tal usuario, perfeito! agora como q eu vou editar por exemplo se o usuario tem 2 telefones e sendo q eu tenho APENAS 1 CAMPO INPUT do Telefone???? essa é minha duvida, ja fiz FOR mas nao to acertando pra faze isso.

 

<?php
require_once("funcao.php");

if (!isset($_SESSION)) session_start();

if (!isset($_SESSION["UsuarioID"])) 
{
session_destroy();
header("Location: formulario.php"); exit;
}

$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;
}
}

$tel = intval($_GET["id"]);
if($tel)
{
$rr = executar("SELECT *  FROM ttelefone where FormularioID = '".$id."' ");
if(mysql_num_rows($rr) > 0)
{
	$tt = mysql_fetch_row($rr);

	$FormularioID = $tt[1];
	$txtTelefone  = $tt[2];
}
}

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

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

		executar("UPDATE SET Telefone = '$txtTelefone' WHERE tformulario.ID = ttelefone.FormularioID");
	}
	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;
}

$remover = intval($_GET["remover"]);
if($remover)
{
executar("DELETE FROM tformulario WHERE id ='".$remover."'");
}

$palavra = $_GET["palavra"];
$cidade  = $_GET["cidade"];
$fone    = $_GET["fone"];

$pagina = $_GET["pagina"];

if(!$pagina)
{
   (int)$pagina = 1;
}
$limite = 5;
$inicio = ($pagina - 1) * $limite;
/*$rs = executar("SELECT * FROM tformulario WHERE Nome LIKE '%".$palavra."%' AND Cidade LIKE '%".$cidade."%' ");*/
$rs = executar("SELECT * FROM ttelefone INNER JOIN tformulario ON tformulario.ID = ttelefone.FormularioID AND ttelefone.Telefone LIKE '%".$fone."%' WHERE tformulario.Nome LIKE '%".$palavra."%' AND tformulario.Cidade LIKE '%".$cidade."%' GROUP BY tformulario.ID ORDER BY '".$id."' LIMIT $inicio, $limite ");

$fone = executar("SELECT * FROM ttelefone");
/*
select *
from tformulario
INNER JOIN ttelefone ON tformulario.ID = ttelefone.FormularioID
and ttelefone.telefone like '%(12) 8888-889%'
GROUP BY tformulario.ID
*/
$mais = executar("SELECT tmaisinfo.* FROM tmaisinfo, tformulario WHERE tmaisinfo.FormularioID = tformulario.ID");

$mensagem = executar("SELECT * FROM tmensagem");
?>
<html>
<head>
<title>Consultar Banco de Dados</title>
<script src="jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="jquery.maskedinput-1.3.js" type="text/javascript"></script>

<script type="text/javascript">
	$(function(){
		$(".mask-telefone").mask("(99) 9999-9999");
	});
</script>

</head>
<body>
<div id="formulario">
   <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 />
    			<?php for($i = 1; $i <= $rr; $i++) { ?>
  				<input type="text" name="txtTelefone[]" class="mask-telefone" value="<?php echo $i["Telefone"]; ?>" />
  			 <?php } ?>
	  </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>

  <table border="1" style="width: 100%; margin-top: 0pt;">
<?php
while ($row = mysql_fetch_assoc($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
}	
     $consulta = executar("SELECT COUNT(ID) FROM tformulario");
		$total = intval(mysql_result($consulta, 0, 0));
	echo "<strong>Total de Resultados:</strong> " .$total. " -";

       $TotalPaginas = ceil($total / $limite);



       echo " <strong>Paginas:</strong> ";
       echo ' <a href="?pagina=1"> Primeira </a>- ';
	  for($i = 1; $i <= $TotalPaginas; $i++)
       {
           if($i == $pagina)
           {
               echo " ".$i." ";
           }
           else
           {
               echo '<a href="?pagina='.$i.'">'.$i.'</a>';    
           }
       }
       echo " - <a href=\"?pagina=$total\"> Ultima </a>";
?>
</table>

<table border="1" style="float: left; margin-right: 100px;">
       <p><strong>Telefones:</strong></p>
	<?php
		while($linha = mysql_fetch_array($fone))
  		{
	?>
	<tr>
		 <td><?php echo $linha["FormularioID"]; ?></td>
       <td><?php echo $linha["Telefone"]; ?></td>
  	</tr>
<?php } ?>
</table>

   <br /><br />
<div>    	
  <table border="1" style="float: left;">
	<p style="margin-top: -20px;"><strong>Mais Informações:</strong></p>

  <?php while($m = mysql_fetch_array($mais)) { ?>
	<tr>
		<td><?php echo $m["FormularioID"]; ?></td>
		<td><?php echo $m["Bairro"]; ?></td>
		<td><?php echo $m["Escolaridade"]; ?></td>
	</tr>
<?php } ?>	
</table>
</div>	
<table border="1" style="display: block; float: left; margin-left: 100px;">
	<?php 
		while($m = mysql_fetch_array($mensagem))
		{
	?>
	<tr>
		<td><?php echo $m["FormularioID"]; ?></td>
		<td><?php echo $m["Mensagem"]; ?></td>
	</tr>
<?php } ?>
</table>
	<br /><br /><br /><br /><br /><br /><br /><br />
   <a href="index.php"><strong>Voltar para o Painel</strong></a>
   <br />
</div>
</body>
</html>

 

O pior de tudo é que eu imagino que o negocio seja bem simples, é que eu sou iniciante no PHP então to travando em certas coisas bobas, mas tá muito cruel, ja vai fazer 1 semana q to pesquisando sobre isso e não acho nada que me ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, isso é uma mescla de Js e PHP.

Fiz um exemplo usando Lumine, para não ter que ficar digitando um monte de SQL.

Mas a lógica é a mesma, basta mudar onde eu uso o Lumine para usar PDO / MySQL direto.

 

Você pode baixar aqui clicando aqui.

 

Se for usar o exemplo que fiz direto:

- crie o banco de dados

- importe o database.sql

- ajuste as credenciais no arquivo "lumine-conf.php".

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, isso é uma mescla de Js e PHP.

Fiz um exemplo usando Lumine, para não ter que ficar digitando um monte de SQL.

Mas a lógica é a mesma, basta mudar onde eu uso o Lumine para usar PDO / MySQL direto.

 

Você pode baixar aqui clicando aqui.

 

Se for usar o exemplo que fiz direto:

- crie o banco de dados

- importe o database.sql

- ajuste as credenciais no arquivo "lumine-conf.php".

 

@braços e fique com Deus!

 

Nossa cara é quase isso, agora você você vai entende, sabe esse exemplo que você fez pra mim? tem um formulario em cima, e embaixo você fez com que as informações do banco de dados aparece em baixo certo? e do lado da informação você fez um botão de editar certo? e quando voce clica no botão 'Editar' as informações vão para o formulario para serem editados correto? Agora pense que o usuario tem 5 telefones,e no formulario em cima tenha 1 campo input de telefone , e quando você clicar no editar as informações vao subir e junto vao os telefones, MAS você tem apenas 1 CAMPO INPUT, como q eu vou fazer pra ele repetir esses campos inputs de acordo com a quantidade de usuario?! essa parte q você fez eu tb fiz, cara posso mandar os meus arquivos e meu banco de dados você você ver? passa seu email pra eu te manda?

Compartilhar este post


Link para o post
Compartilhar em outros sites
sabe esse exemplo que você fez pra mim? tem um formulario em cima, e embaixo você fez com que as informações do banco de dados aparece em baixo certo? e do lado da informação você fez um botão de editar certo? e quando voce clica no botão 'Editar' as informações vão para o formulario para serem editados correto?

Correto

 

Agora pense que o usuario tem 5 telefones,e no formulario em cima tenha 1 campo input de telefone

Incorreto. Se o usuário gravado no banco tiver 5 telefones, irão aparecer 5 campos inputs.

Se precisar de mais, basta clicar no link de "Adicionar Telefone".

 

e quando você clicar no editar as informações vao subir e junto vao os telefones, MAS você tem apenas 1 CAMPO INPUT

Porque? Se no exemplo que te mandei você pode adicionar quantos quiser?

Você quer colocar todos os telefones em um unico campo?

 

como q eu vou fazer pra ele repetir esses campos inputs de acordo com a quantidade de usuario?!

Ficou estranha esta frase, mas no exemplo que te mostrei, já faz um campo input para cada telefone desejado.

 

essa parte q você fez eu tb fiz

Putz, então realmente você não está conseguindo se explicar...

Ou eu estou com sérias dificuldades em entender você :)

 

cara posso mandar os meus arquivos e meu banco de dados você você ver? passa seu email pra eu te manda?

Veja, se quiser ajuda, vamos ajudar aqui no fórum, até mesmo para que outras pessoas tenham uma fonte de referência.

Coloque o link do seus arquivos aqui no tópico, como fiz com o exemplo para te ajudar.

Se você quiser que eu resolva o seu problema de forma particular, como todo profissional, teria que te cobrar para fazer. Afinal, ninguém gosta de trabalhar de graça, concorda?

Se for para te ajudar, como já estou fazendo, vai ser pelo fórum, para que não só você, mas outras pessoas que tenham a mesma dificuldade possam ser beneficiadas.

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Correto

 

 

Incorreto. Se o usuário gravado no banco tiver 5 telefones, irão aparecer 5 campos inputs.

Se precisar de mais, basta clicar no link de "Adicionar Telefone".

 

 

Porque? Se no exemplo que te mandei você pode adicionar quantos quiser?

Você quer colocar todos os telefones em um unico campo?

 

 

Ficou estranha esta frase, mas no exemplo que te mostrei, já faz um campo input para cada telefone desejado.

 

 

Putz, então realmente você não está conseguindo se explicar...

Ou eu estou com sérias dificuldades em entender você :)

 

 

Veja, se quiser ajuda, vamos ajudar aqui no fórum, até mesmo para que outras pessoas tenham uma fonte de referência.

Coloque o link do seus arquivos aqui no tópico, como fiz com o exemplo para te ajudar.

Se você quiser que eu resolva o seu problema de forma particular, como todo profissional, teria que te cobrar para fazer. Afinal, ninguém gosta de trabalhar de graça, concorda?

Se for para te ajudar, como já estou fazendo, vai ser pelo fórum, para que não só você, mas outras pessoas que tenham a mesma dificuldade possam ser beneficiadas.

 

@braços e fique com Deus!

 

 

Bom então, desisto de explicar, a minha duvida é apenas na hora de editar os telefones dos usuarios e todo mundo me explica como inserir, eu quero editar os telefones nao inserir. =] Obrigado pela atenção e pelo esforço de todos mas infelizmente ninguém conseguiu me ajudar em uma coisa que eu acredito que seja bem simples, mas como sou iniciante no php estou ralando, mas quando eu descobrir EU POSTO aqui pra vocês.! Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué, mas no exemplo que eu te mandei tem sim um exemplo de como editar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

claro que tem mano,

olha o print da tela aqui!

 

editando-hugo.png

 

Olha os campos de telefone aparecendo ali embaixo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué, mas no exemplo que eu te mandei tem sim um exemplo de como editar.

 

Sim cara, mas o exemplo que você me mandou, por eu ser iniciante no pHP nao entendi nada, eu gostaria de fazer a mesma coisa pelo codigo que estou fazendo assim eu estarei sabendo oque estou fazendo.!

 

claro que tem mano,

olha o print da tela aqui!

 

editando-hugo.png

 

Olha os campos de telefone aparecendo ali embaixo!

 

Eu fiz um agora mais simples pra vocês poderem entende:

 

Eu fiz uma tabela no banco de dados chamada tformulario que tem (Nome, Email)

e outra tabela chama ttelefone que tem (FormularioID, Telefone).

 

 

<?php 
function executar ($sql, $returnID = false)
{
   $con = mysql_connect("localhost", "root", "") or die ("Falha ao conectar o Servidor.");
   mysql_select_db("teste", $con) or die ("Falha ao conectar o banco de dados");
   $rs = mysql_query($sql, $con);
   if($returnID)
   {
       $rs = mysql_insert_id($con);
   }
   mysql_close($con);
   return $rs;
}

$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];
   }

}

/*
$res = executar("SELECT * FROM ttelefone WHERE id = '".$id."' ");
   if(mysql_num_rows($res) > 0)
   {
   	$arr = mysql_fetch_row($res);

   	$FormularioID = $arr[1];
   	$txtTelefone = $arr[2];
   }

*/
if($_POST)
{
   $txtNome     = $_POST["txtNome"];
   $txtEmail    = $_POST["txtEmail"];
   $txtTelefone = $_POST["txtTelefone"];

   $msg = array ();

   if(!$txtNome) array_push($msg, "Digite o Nome.");
   if(!$txtEmail) array_push($msg, "Digite o Email.");
   if(!$txtTelefone) array_push($msg, "Digite o Telefone.");

   if(count($msg) < 1)
   {
       if($id)
       {
           executar("UPDATE tformulario SET Nome = '$txtNome', Email = '$txtEmail' WHERE ID = '".$id."' ");

           executar("UPDATE ttelefone SET Telefone = '$txtTelefone' WHERE ID = '".$id."' ");
       }   
       else
       {
           $FormularioID = executar("INSERT INTO tformulario (Nome, Email) VALUES ('$txtNome', '$txtEmail')", true);

           foreach($txtTelefone as $telefone)
           {
               executar("INSERT INTO ttelefone (FormularioID, Telefone) VALUES ('$FormularioID', '$telefone')");
           }

       }
       header("Location: index.php"); exit();
   }
}

$remover = $_GET["remover"];
if($remover)
{
   executar("DELETE FROM tformulario WHERE id = '".$remover."' ");

  /*executar("DELETE tformulario.*, ttelefone.* FROM tformulario, ttelefone WHERE tformulario.ID = ttelefone.FormularioID AND id = '".$id."' ");*/
}

$where = "";
$nome = $_GET["nome"];
$fonte = $_GET["fone"];
if($nome)
{
   $where .= "AND tformulario.Nome LIKE '%".$nome."%' ";
}
if($fone)
{
   $where .= "AND ttelefone.Telefone LIKE '%".$fone."%' ";
}

$pagina = $_GET["pagina"];
if(!$pagina)
{
   $pagina = 1;
}

$limite = 2;

$inicio = ($pagina * $limite) - $limite;

$rs = executar("SELECT tformulario.*, ttelefone.* FROM tformulario, ttelefone WHERE 1=1 ".$where." LIMIT $inicio, $limite ");

/*$rs = executar("SELECT tformulario.* FROM tformulario INNER JOIN ttelefone ON tformulario.ID = ttelefone.FormularioID WHERE 1=1 ".$where." LIMIT $inicio, $limite ");*/
?>
<html>
<head>
   <title>Teste</title>
   <script src="jquery-1.7.1.min.js" type="text/javascript"></script>
   <script src="jquery.maskedinput-1.3.js" type="text/javascript"></script>
   <script type="text/javascript">
       $(function(){
           $(".mask-telefone").mask("(99) 9999-9999");
       });
   </script>
   <script type="text/javascript">
	$(function(){
	  $("#Add").click(function(){
			var input = $('<div class="itens"><li><label> Telefone:<br /><input type="text" class="mask-telefone" name="txtTelefone[]" maxlength="14" size="50" /></label></li><a href="#" class="Delete">Remover</a> </div>');
			 $(".campos").append(input);
			 $(".mask-telefone", input).mask("(99) 9999-9999");
			 return false;
		});

		$(".Delete").live('click', function(){
			$(this).parent().remove();

		});

	});
	</script>
       <script language="javascript">
   	function Confirmdelete (delUrl)
          if (confirm ("Tem certeza de que deseja Remover?")) 
       	{
       		document.location = delUrl;	
       	}
 	</script>
</head>
<body>
   <?php if(count($msg) > 0 ) { echo implode("<br />", $msg);} ?>
   <form method="post" action="">
       <ul>
           <li>
               <label>
                   Nome: <input type="text" name="txtNome" size="40" value="<?php echo $txtNome; ?>" />
               </label>
           </li>

           <li>
               <label>
                   Email: <input type="text" name="txtEmail" size="40" value="<?php echo $txtEmail; ?>" />
               </label>
           </li>

           <li>
               <?php/* foreach($txtTelefone as $telefone => $v) 
               {
                   for($i=1; $i < $telefone; $i++)
                   { */
               ?>
               <label>
                   Telefone: <input type="text" name="txtTelefone[]" class="mask-telefone" size="40" accept="<?php echo $txtTelefone; ?>" />
               </label>
               <?php 
                  /* }
               } */?>
               <a href="#" id="Add">Adicionar</a>
               <div class="campos"></div>
           </li>
               <input type="submit" value="Enviar" />
       </ul>
   </form>

   <form method="get" action="">
       <ul>
           <p><strong>Pesquisar:</strong></p>
           <li>
               <label>
                   Nome: <input type="text" name="nome" size="30" />
               </label>
           </li>

           <li>
               <label>
                   Telefone: <input type="text" name="fone" class="mask-telefone" size="30" />
               </label>
           </li>
               <input type="submit" value="Pesquisar" />
       </ul>
   </form>

   <table width="100%" border="1">
       <tr>
           <td><strong>Nome:</strong></td>
           <td><strong>Email:</strong></td>
           <td align="center"><strong>Opções:</strong></td>
       </tr>
       <?php while($row = mysql_fetch_array($rs)){ ?>
       <tr>
           <td><?php echo $row["Nome"]; ?></td>
           <td><?php echo $row["Email"]; ?></td>
           <td align="center"><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 
           }
           $consulta = executar("SELECT COUNT(ID) FROM tformulario"); 
           $total = intval(mysql_result($consulta, 0, 0));
           echo "<strong>Total de resultados: </strong>" .$total; 

           $TotalPaginas = ceil($total / $limite);

           echo " <strong>Paginas:</strong> ";
           for($i = 1; $i <= $TotalPaginas; $i++)
           {
               if($pagina == $i)
               {
                   echo " ".$i." ";
               }
               else
               {
                   echo '<a href="?pagina='.$i.'">'.$i.'<a/>';
               }
           }

           ?>
   </table>
</body>
</html>

 

se você pegar esse codigo, e criar um banco de dados com a tabela tformulario (Nome, Email)

e outra tabela ttelefone (FormularioID, Telefone), ae você vai estar na mesma situação que eu aqui, ai sim você irá entender.

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.