Ir para conteúdo
Fórum Script Brasil
  • 0

Relacionando tabelas


William Afonso

Pergunta

Fala pessoal da Scritp Brasil sempre venho ao site para apreder, aprendi muito mais to com uma duvida que ano to conseguindo resolver sozin ho preciso de ajuda o lance é o seguinte

tenho uma tabela chamada Cliente com os seguinte campos

id_cliente

nome

cnpj

inscricao

cidade

estado

site

email

telefone

obs

Certo? cada cliente cadastrado vai ter dua obra cadastrada, (obs: um cliente pode ter mais de uma obra cadastrada)

toda essa parte cliente tanto a parte de cadastro vizualizacao exlusao, e ediçao já fiz

fiz agora a tabela de obra com os seguintes campos:

id_obra

id_cliente

descricao

obra

obs

o que eu quero fazer é que quando cadastrar o cliente clicar no link aonde vai cadastrar as obras e associar o cliente

o que seria associar os ids de obras cadastradas com id do cliente, por faor me ajudem nessa se precisarem envio os codigos da tabelas e da funçoes ajudam por favor valeu t+

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

é facil wiliam afonso:

você primeiro cria um form, e lista todas as obras para a sua tabela na base de dados.

depois você cria um outro form de clientes , onde você vai resgatar as obras através de uma combobox, ai você consegue registar e associar os clientes a obras.

Link para o comentário
Compartilhar em outros sites

  • 0

cara to entendo como é o processo mais to apanhando um pouco vo colcoar os codigos aki você ve aonde eu to errando certo valeu

***************************************

codigo que passa o id para o formulario

***************************************

<td align="center"><a href="cadastro_obra.php?&id_cliente=<? echo $id_cliente ?>">Cadastrar</a></td>
*************************************** o id ta pasasndo certinho pela url *************************************** codigo do formulario ***************************************
<? 
include "conexao.php"; 

$id_cliente = $_GET['id_cliente']; 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<form id="form1" name="form1" method="post" action="funcoes.php?funcao=cadastra_obra&id_cliente<? echo $id_cliente; ?>"> 
<table width="620" border="0" cellpadding="3" cellspacing="3"> 
<tr> 
<td width="55">Descrição:</td> 
<td width="287"><label> 
<input name="descricao" type="text" id="descricao" size="40" /> 
</label></td> 
<td width="248"><a href="altera_cliente.php">Visualizar todos clientes</a></td> 
</tr> 
<tr> 
<td>Obra:</td> 
<td><input name="obra" type="text" id="obra" size="40" /></td> 
<td>&nbsp;</td> 
</tr> 
<tr> 
<td>Obeservaçao</td> 
<td><input name="obs" type="text" id="obs" size="40" /></td> 
<td>&nbsp;</td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td><input type="submit" name="button2" id="button2" value="Cadastrar" /></td> 
<td>&nbsp;</td> 
</tr> 

</table> 
</form> 
<body> 
</body> 
</html> 

*************************************** 
codigo da função 
*************************************** 


$grava_obra_descricao = $_POST['descricao']; 
$grava_obra_obra = $_POST['obra']; 
$grava_obra_obs = $_POST['obs']; 

if($_GET['funcao'] == "cadastra_obra"){ 
$id_cliente = $_GET['id_cliente']; 

$sql_gravar_obra = mysql_query("INSERT INTO obra (id_cliente, descricao, obra, obs) values ('$id_cliente','$grava_obra_descricao','$grava_obra_obra','$grava_obra_obs')") or die("Erro ao executar intrução> " . mysql_error()); 

} 

?>

tem como me ajudar ve se eu to esquecendo de alguma coisa ou algo assim amigo, desde já agradeço, ahh lembrando o cadastro da funcionando dos campos mais o id do cliente não ta indo entende

Link para o comentário
Compartilhar em outros sites

  • 0

ok ai vamos então

1º inser_cliente.php

<?

if (isset($_REQUEST['submit'])) 
{ 
$sql = "INSERT INTO cliente (nome, cnpj, inscricao, cidade, estado, site, email, telefone, obsa) VALUES ('".$_POST['nome']."','".$_POST['cnpj']."','".$_POST['inscricao']."','".$_POST['cidade']."','".$_POST['estado']."','".$_POST['site']."','".$_POST['email']."','".$_POST['telefone']."','".$_POST['obsa']."')";
$sql = mysql_query($sql)
or die ("Houve erro na gravação dos dados.");
echo "<meta http-equiv='refresh' content='0;URL=(pagina para onde queres ir apos fazer a inserção dos dados)'>";
} 
?>
<form action="" name=""  method="">
<table width="600" border="0" cellspacing="6" cellpadding="0">
  <tr>
    <td width="51">Nome</td>
    <td width="228"><input type="text" name="nome" id="nome"></td>
    <td width="68">inscricao</td>
    <td width="223"><input type="text" name="inscricao" id="inscricao"></td>
  </tr>
  <tr>
    <td>cnpj<br></td>
    <td><input type="text" name="cnpj" id="cnpj"></td>
    <td>cidade</td>
    <td><input type="text" name="cidade" id="cidade"></td>
  </tr>
  <tr>
    <td>estado</td>
    <td><input type="text" name="estado" id="estado"></td>
    <td>email</td>
    <td><input type="text" name="email" id="email"></td>
  </tr>
  <tr>
    <td>telefone </td>
    <td><input type="text" name="telefone" id="telefone"></td>
    <td>obs</td>
    <td><input type="text" name="obs" id="obs"></td>
  </tr>
  <tr>
    <td>site</td>
    <td><input type="text" name="site" id="site"></td>
    <td>&nbsp;</td>
    <td><input name="submit" type="submit" class="button" id="submit" value="enviar" /></td>
  </tr>
</table>


</form>

com este formulário tu listas os clientes para a base de dados clientes , insere 3 ou 4 para veres o efeito, a seguir vamos atribuir as obras os clientes ok?

Editado por biza
Link para o comentário
Compartilhar em outros sites

  • 0

2º inserir_obras.php.

<?

if (isset($_REQUEST['submit'])) 
{ 
$sql = "INSERT INTO obra (id_cliente, descricao, obra, obs) VALUES ('".$_POST['cliente']."','".$_POST['descricao']."','".$_POST['obra']."','".$_POST['obs']."')";
$sql = mysql_query($sql)
or die ("Houve erro na gravação dos dados.");
echo "<meta http-equiv='refresh' content='0;URL=(pagina para onde queres ir apos fazer a inserção dos dados)'>";
} 
?>
<form action="" name=""  method="">
<table width="600" border="0" cellspacing="6" cellpadding="0">
  <tr>
    <td width="51">Cliente</td>
    <td width="228"><?
    
    $result = mysql_query("SELECT id_cliente, nome FROM clientes");
    echo'<select name="cliente">
    <option value="0" size="35">Seleccione a Categoria</option>';    
    while( $row = mysql_fetch_array($result)){
            echo'<option value="'.$row[0].'" size="35">'.$row[1].'</option>    ';
        }
        mysql_free_result( $result );    
        echo'</select>';
        ?></td>
    <td width="68">Descrição</td>
    <td width="223"><input type="text" name="inscricao" id="inscricao"></td>
  </tr>
  <tr>
    <td>Obra<br></td>
    <td><input type="text" name="cnpj" id="cnpj"></td>
    <td>Obs</td>
    <td><input type="text" name="cidade" id="cidade"></td>
  </tr>
  <tr>
    <td colspan="4">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><input name="submit" type="submit" class="button" id="submit" value="enviar" /></td>
  </tr>
</table>
</form>

agora você constroi uma terceira tabela com a finalidade de por os dados provenientes das duas , e resgatas os dados atraves de um select juntando as duas tabelas

Link para o comentário
Compartilhar em outros sites

  • 0

nossa ficou muitooo bommm mesmo, obrigado vale wmesmo seguitne só que no form do obra.php, o select name não esta pegando o nome do cliente agora to dando uma estudada pra ver se resolvo isso e faço esse passo que você falou.... na terceira tabela, para exibir a informação do nome do cliente e todoas as obras relacionadas a ele vo tentando aki qualquer coisa posto aki uss brigadao mesmo fico muito bom seu codigo a semantica um dia eu xego la valewwww rsrsr

ahhh lembrando que testando aki o script de obras que você passou não esta cadastrando as obras, as informaçoes do campo fica assim no bd

id_obra| id_cliente descricao cidade obs

9 | 0

8 | 0

Editado por William Afonso
Link para o comentário
Compartilhar em outros sites

  • 0

primeiro você cadastra os clientes e so depois ao abrir as obras você associa o cliente a obra que você esta a a cadastrar

qualquer problem voce manda.

Não esta pegando o cliente , pois o nome da base de dados é cliente não clientes . Substitui ai por isso o combobox.

<?
    
    $result = mysql_query("SELECT id_cliente, nome FROM cliente");
    echo'<select name="cliente">
    <option value="0" size="35">Seleccione o Cliente</option>';    
    while( $row = mysql_fetch_array($result)){
            echo'<option value="'.$row[0].'" size="35">'.$row[1].'</option>    ';
        }
        mysql_free_result( $result );    
        echo'</select>';
        ?>

Editado por *FIT*
Adicionar as tags [code] *FIT*
Link para o comentário
Compartilhar em outros sites

  • 0

fala bizaaa nossa deu certinho agora em relação a criar uma terceira tabela. você não axa mais facil usar inner join para renotar o valor das duas tabela. tipo só o nome do cliente depois todos as obras cadastadas relacionada pelo id?

algo tipo assim

to tentando fazer algo assim

$id_cliente = $_GET['id_cliente']; 
$rs = mysql_query("SELECT obra.*, cliente.nome FROM obra INNER JOIN cliente ON cliente.id_cliente = obra.id_cliente WHERE cliente.id_cliente = '$id_cliente'"); 

$rw = mysql_fetch_array($rs)){ 

print_r($rw); 

}
mai não to conseguindo pode me da mais uma ajuda valeeww cara você é fods.. manja muito atualizando testei assim também e não deu
</head>
<?
include "conexao.php";
?>
<body>
<?

$id_cliente = $_GET['id_cliente']; 
$sql_update = mysql_query("SELECT c.nome, c.id_cliente, o.* FROM cliente c, obra o WHERE c.id_cliente="5" AND c.id_cliente=o.id_cliente LIMIT 1")

$rw = mysql_fetch_array($sql_update)){ 
echo'<pre>';
print_r($rw); 
echo'</pre>';
}

?>

Editado por *FIT*
Adicionar as tags [code] *FIT*
Link para o comentário
Compartilhar em outros sites

  • 0

sim você pode fazer dessa maneira ai vai algo que possa ajudar você

<table width="700">
                            
                            <thead>
                                <tr>
                                   <th width="20"><input class="check-all" type="checkbox" /></th>
                                   <th width="150">Cliente</th>
                                   <th>Descrição</th>
                                   <th width="50">Obra</th>
                                   <th>Obs</th>
                                   <th width="40">Op&ccedil;&otilde;es</th>
                                </tr>
                                
                            </thead>                                
                            </tfoot>
                         
                            <tbody>
<?

$sql="SELECT clientes.id, clientes.nome, obra.decricao, obra.id_obra, obra.obra, obra.obs FROM clientes JOIN obra ON clientes.id = obra.id_cliente ORDER BY clientes.nome";
mysql_query($sql)or die ('Erro na query '.mysql_error());

            $sql_query = mysql_query($sql);
            $count=@mysql_num_rows($sql_query);
            while($linha = mysql_fetch_array($sql_query)){

                            echo'<form method="post" action="">
                            <tr>
                                    <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="'.$linha["id_obra"].'"/></td>
                                    <td>'.$linha["cliente"].'</td>
                                    <td>'.$linha["descricao"].'</td>
                                    <td>'.$linha["obra"].'</td>
                                    <td>'.$linha["obs"].'</td>
                                    <td>
                                        <!-- Icons -->
                                         <a href="index2.php?pag=ed_via&id='.$linha["id_obra"].'" title="Edit"><img src="resources/images/icons/pencil.png" alt="Editar" /></a>
                                    <a href="index2.php?pag=del_via&id='.$linha["id_obra"].'" title="Delete"><img src="resources/images/icons/cross.png" alt="Eliminar" /></a></td>
                                </tr>';}
                                    echo'<tr>
                                    <td colspan="7">
                                    <input name="delete" type="submit" class="button" id="delete" value="Eliminar os Seleccionados">
                                    </td>
                                </tr>';
            

if(isset($_REQUEST['delete']))
{

$checkbox=@$_POST['checkbox'];
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];

$sql = "DELETE FROM obras WHERE id_obra='$del_id'";
$result = mysql_query($sql);

}


if($result){
echo "<meta http-equiv='refresh' content='0;URL=(pagina para onde voce quer ir )'>";
}
}


echo'</table>
</form>';
?>
                        </tbody>
                        </div>
                        </table>

Link para o comentário
Compartilhar em outros sites

  • 0

fala amigo bizxa show o sistema que tu feiz to lendo aki fico muito bom porem axei um erro que não to conseguinte encontrar aonde ta.... na pafgina aprece assim

Erro na query Unknown column 'cliente.id' in 'field list'

arrumei a syntax que tava com uns erro agora ta aparecendo isso aki

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\sistema_teste\exibe_cliente_obra.php on line 33

AHH LEMBRANDO SE PRICISAR DE ALGO.. EM LAYOUT CSS MANDA AI valeu

opa já arrumei porem ta dando um erro não ta exibindo nem o nome do cliente nem o campo obra vo postar as modificaçoes que eu fiz

<? include "conexao.php"; ?>

<table width="700">

<thead>

<tr>

<th width="20"><input class="check-all" type="checkbox" /></th>

<th width="150">Cliente</th>

<th>Descrição</th>

<th width="50">Obra</th>

<th>Obs</th>

<th width="40">Op&ccedil;&otilde;es</th>

</tr>

</thead>

</tfoot>

<tbody>

<?

$sql="SELECT c.id_cliente, c.nome, o.descricao, o.id_obra, o.obs FROM cliente c JOIN obra o ON c.id_cliente = o.id_cliente ORDER BY c.nome";

mysql_query($sql)or die ('Erro na query '.mysql_error());

$sql_query = mysql_query($sql);

$count=@mysql_num_rows($sql_query);

while($linha = mysql_fetch_array($sql_query)){

echo'<form method="post" action="">

<tr>

<td><input name="checkbox[]" type=checkbox" id="checkbox[]" value="'.$linha["id_obra].'"/></td>

<td>'.$linha["cliente"].'</td>

<td>'.$linha["descricao"].'</td>

<td>'.$linha["obra"].'</td>

<td>'.$linha["obs"].'</td>

<td>

<!-- Icons -->

<a href=index2.php?pag=ed_via&id='.$linha["id_obra].'" title="Edit"><img src="resources/images/icons/pencil.png" alt="Editar" /></a>

<a href="index2.php?pag=del_via&id='.$linha["id_obra"].'" title=Delete"><img src="resources/images/icons/cross.png" alt="Eliminar" /></a></td>

</tr>';}

echo'<tr>

<td colspan="7">

<input name="delete" type="submit" class="button" id="delete" value="Eliminar os Seleccionados">

</td>

</tr>';

if(isset($_REQUEST['delete]))

{

$checkbox=@$_POST['checkbox'];

for($i=0;$i<$count;$i++){

$del_id = $checkbox[$i];

$sql = "DELETE FROM obras WHERE id_obra='$del_id'";

$result = mysql_query($sql);

}

if($result){

echo "<meta http-equiv='refresh' content='0;URL=(pagina para onde voce quer ir )'>";

}

}

echo'</table>

</form>';

?>

</tbody>

</div>

</table>

Editado por William Afonso
Link para o comentário
Compartilhar em outros sites

  • 0

biza poderia me mandar esses codigos? referente a essas paginas?

<a href="index2.php?pag=ed_via&id='.$linha["id_obra"].'" title=Edit"><img src="resources/images/icons/pencil.png" alt="Editar" /></a>

<a href="index2.php?pag=del_via&id='.$linha["id_obra].'" title="Delete"><img src="resources/images/icons/cross.png" alt="Eliminar" /></a></td>

Link para o comentário
Compartilhar em outros sites

  • 0

ai william esses códigos são referente as se quiseres fazer os uma pagina tipo index2.php.

apos isso montas na página uma div e crias um switch a partir dai as paginas carregam dentro da pagina index ma com a variavel que tu lhe deres por exemplo: ed_via

assim ele assume index2.php?pag=ed_via(aqui associas o id) &id=(ao id da tabela que pretendes adquirir a consulta ou o delete );

qualquer coisa manda .

o primeiro erro é ou deve se o nome da tabela (é cliente ou clientes, se for clientes tens de por clientes.id).

há quanto ao erro manda-me a pagina como a tens para eu poder ver a linha em que esta o erro , mas possivelmente são aspas .

mas logo você se liga pela net e a gente arruma ai tudo direitinho

Editado por biza
Link para o comentário
Compartilhar em outros sites

  • 0

fala amigo biza seguinte fiz +/- assim mais não deu muito certo esperava que iria da certo

quando clicace m editar ele ia pra essa pagina altera_obra.php

e dentro dess pagina ta assim

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<?
 include "conexao.php";

?>

<?
if($_GET['funcao'] == "editar"){
$id = $_GET['id_obra'];
$sql_update = mysql_query("SELECT * FROM obra WHERE id_obra = '$id_obra'");
while($linha = mysql_fetch_array($sql_update)){
    $descricao = $linha['descricao'];
    $obra = $linha['obra'];
    $obs = $linha['obs'];
}
?>
<form id="form1" name="form1" method="post" action="funcoes.php?funcao=editar_obra&id_obra=<? echo $id_obra ?>">
  <table width="362" border="0" cellpadding="3" cellspacing="3">
    <tr>
      <td width="80">Nome:</td>
      <td width="283"><label>
        <input name="descricao" type="text" id="descricao" size="40" value="<? echo $descricao ?>" />
      </label></td>
    </tr>
    <tr>
      <td>CNPJ:</td>
      <td><input name="obra" type="text" id="obra" value="<? echo $obra ?>" size="40" /></td>
    </tr>
    <tr>
      <td>Inscricao:</td>
      <td><input name="obs" type="text" id="obs" size="40" value="<? echo $obs ?>" /></td>
    </tr>
       <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="button" id="button" value="Alterar" /></td>
    </tr>
   
  </table>
</form>
<?
}
?>


</table>
<body>
</body>
</html>
porem nem aparece o form e dento de funçoes ta assim
<? 
include "conexao.php"; 

$grava_descricao = $_POST['descricao']; 
$grava_obra = $_POST['obra']; 
$grava_obs = $_POST['obs']; 

if($_GET['funcao'] == "editar_obra"){ 
$id = $_GET['id_cliente']; 
$sql_alterar = mysql_query("UPDATE obra SET descricao='$grava_descricao', obra='$grava_obra', obs='$grava_obs' WHERE id_obra = '$id_obra'"); 

header('Location:form.php'); 

}

poderia ver aonde to errando amigo? to no aguardo

Link para o comentário
Compartilhar em outros sites

  • 0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<?php 
include "conexao.php";
$sql = "SELECT * FROM obra  WHERE id_obra = ".$_GET['id_obra'];
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta.");

$linha=mysql_fetch_array($resultado);

?>
<body>
<?
if (isset($_REQUEST['submit'])) 
{ 

$sql = "UPDATE obra SET descricao='".$_POST['descricao']."', obra='".$_POST['obra']."', obs='".$_POST['obs']."' WHERE id_obra = ".$_GET['id_obra'];
//campos foto removidos desta query
}
?>

<form id="form1" name="form1" method="post" action="">
  <table width="362" border="0" cellpadding="3" cellspacing="3">
    <tr>
      <td width="80">Nome:</td>
      <td width="283"><label>
        <input name="descricao" type="text" id="descricao" size="40" value="<? echo $linha['descricao'] ?>" />
      </label></td>
    </tr>
    <tr>
      <td>CNPJ:</td>
      <td><input name="obra" type="text" id="obra" value="<? echo $linha['obra'] ?>" size="40" /></td>
    </tr>
    <tr>
      <td>Inscricao:</td>
      <td><input name="obs" type="text" id="obs" size="40" value="<? echo $linha['obs'] ?>" /></td>
    </tr>
       <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="button" id="button" value="Alterar" /></td>
    </tr>
   
  </table>
</form>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...