Ir para conteúdo

POWERED BY:

Arquivado

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

programax

[Resolvido] mysql

Recommended Posts

Bom ñ era bem assim...mas vamos sair desssas tabelas...vamos para as q realmente me inressao..

 

CREATE TABLE fornecedor
(
 id_fornecedor INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
 razao VARCHAR(100) NOT NULL,
 cnpj INT (100) NOT NULL,
 endereco VARCHAR(100) NOT NULL,
 telefone INT(50) NOT NULL,
 email VARCHAR (100) NOT NULL          

 ) ENGINE = INNODB;





CREATE TABLE contrato
 (
  id_contrato INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  objeto VARCHAR(100) NOT NULL,
  valor_anual DOUBLE NOT NULL, 
  valor_mensal DOUBLE NOT NULL,
  n_do_contrato INT(100) NOT NULL,
  data_inicial DATE NOT NULL,
  data_final DATE NOT NULL,
  chave_contrato_fk INT NOT NULL,
  FOREIGN KEY (chave_contrato_fk) REFERENCES fornecedor(id_fornecedor)
  ON DELETE CASCADE
  ON UPDATE CASCADE

 ) ENGINE = INNODB



CREATE TABLE aditivo
 (
  id_aditivo INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  inicio_do_processo DATE NOT NULL, 
  fim_do_processo DATE NOT NULL,
  numero_do_processo INT(100) NOT NULL,
  chave_adtivo_fk INT NOT NULL,
  FOREIGN KEY (chave_adtivo_fk) REFERENCES contrato (id_contrato)
  ON DELETE CASCADE
  ON UPDATE CASCADE

 ) ENGINE = INNODB

 

 

Bem o relacionamento e de UM para UM todo fornecedor tem UM contrato.. e o contrato tem UM aditivo ....

1-FORNECEDOR 1-CONTRATO -1 ADITIVO e de UM para UM...

 

mas eu tenho ali na tabela contrato a (chave_contrato_fk INT NOT NULL,) para mim relacionar com a tabela fornecedor...e na tabela aditivo tenho a (chave_adtivo_fk INT NOT NULL,) q e para mim relacionar com a tabela contrato.

 

 

quando eu preencho os dados da tabela fornecedor funciona direito,, mas quando eu vou para tabela contrato tem um campo q eu ñ quero preencher q e a chave secundaria (chave_contrato_fk INT NOT NULL,) eu quero q essa chave seja auto incrementada com o id_fornecedor...... e na tabela aditivo tem outro campo q eu tambem ñ quero preencher q e (chave_adtivo_fk INT NOT NULL,)eu quero q ela seja auto incrementada com o id_contrato ............. para aquele fornecedor pertencer aquele contrato e aquele aditivo pertença aquele contrato pelo id deles.

 

 

andei pesquisando sobre INNER JOIN mas ñ consigo fazer..

 

estive pesquisando e ouvir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não existem recursos automáticos de cadastros que "adivinhem" a qual registro estes estão vinculados. Esta "inteligência" deve ser implementada a nível de aplicação (Frontend), ou seja, durante o preenchimento dos formulários você vai programar os recursos possíveis para vincular as informações das diversas tabelas. Quando você desenvolver os procedimentos de consultas e relatórios você vai vincular estes campos e isto vai gerar um resultado único, desde que seus vínculos exitam.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo peso que tenha paciencia comigo porque sou novo em pragramação. bem o sistema ta asssim imagine que eu cadastrei 05 fornecedores e usei um SELECT para visualiza-los na pagina web. bem ai o sistema e o seguinte eu preciso linkar (na pagina web onde eu estou visualizando os fornecedores) o campo "razao" (onde fica o nome da empresa) da tabela fornecedor, para quando for clicado no nome da empresa leve o -id- daquele fornecedor para a tabela contrato onde eu preencherei os dados do contrato daquele fornecedor. para que aquele contrato seja daquele fornecedor.

 

você me entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua dúvida está bem confusa cara,

mas pelo que me parece o problema está na lógica do sistema e não no MySQL

 

Como está fazendo o sistema de cadastro?

que linguagem está usando?

 

Talvez de para fazer isso que você quer pelo MySQL com procedure

mas acho que seria mais complicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo eu estou usando o php e mysql...............

 

bem o sistema vai ser assim:

 

Vai ter 03 tabelas q sao: TB_FORNECEDOR.PHP , TB_CONTRATO.PHP e TB_ADITIVO.PHP

O relacionamento e de UM para UM ..............

 

cada fornecedor vai ter um contrato e cada contrato vai ter um aditivo....

sabendo que essas 03 tabelas ja estao prontas.

OBS: ( o fornecedor vai simplismente se cadastrar e mais nada.)

 

 

bom ai na pagina web eu insiro os dados do fornecedor e por exemplo.

ai eu criei um ( SELECT * FROM fornecedor; ) para visualizar os dados do fornecedor na pagina.

na tabela fornecedor tem os seguintes campos:

 

CREATE TABLE fornecedor
(
id_fornecedor INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
razao VARCHAR(100) NOT NULL,
cnpj INT (100) NOT NULL,
endereco VARCHAR(100) NOT NULL,
telefone INT(50) NOT NULL,
email VARCHAR (100) NOT NULL

) ENGINE = INNODB;

 

onde o campo "razao" que e onde vai armazenar o nome da empresa vai ficar linkado..

para quando eu clikar no nome da empresa ir para pagina de contrato..

 

 

CREATE TABLE contrato
(
id_contrato INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
objeto VARCHAR(100) NOT NULL,
valor_anual DOUBLE NOT NULL,
valor_mensal DOUBLE NOT NULL,
n_do_contrato INT(100) NOT NULL,
data_inicial DATE NOT NULL,
data_final DATE NOT NULL,
chave_contrato_fk INT NOT NULL,
FOREIGN KEY (chave_contrato_fk) REFERENCES fornecedor(id_fornecedor)
ON DELETE CASCADE
ON UPDATE CASCADE

) ENGINE = INNODB

bem ai eu quero que esse contrato seja daquele determinado fornecedor que eu acabei de clikar...

 

mas para fazer isso os ID'S das duas tabelas teem que ser iguais...

 

ai eu to tentando fazer assim:

 

$sql= "SELECT * FROM fornecedor"; 
	
	$query= mysql_query($sql); 

	
 while( $resultado = mysql_fetch_array($query) ) 

 
	{		
	
 print"
 
 <tr>
 <td> <a href=\"?pg=contrato&id=id_fornecedor\"> $resultado[razao]</a></td>
 <td> $resultado[endereco] </td>
 <td> $resultado[telefone] </td>
 <td> $resultado[email] </td>		
 </tr>
 
 ";
 
	 
 } 
 ?>

// ta vendo que ( pg=contrato ) bem ai eu criei uma pagina mascara para fazer isso:

<?php
include("conexao.php");
 
$pagina = $_GET['pg'];

 switch( $pagina)
 
 case: 'contrato';
 include"tb_contrato.php";
 break;
 
 
 ?>

 

bem se lenbra q na tabela contrato eu tenho o campo da chave estrangeira..

 

que e( chave_contrato_fk ) bem ai ai eu incluir na pagina mascara a tb_contrato.php

 

nessa tabela eu tenho alem dos outros campos :

 

<?php include ("conexao.php"); 

$pegid = $_GET['id']; // esse -id- e da chamada href....q corresponde ao fornecedor


?>

ai la no final da tabela eu tenho esse INPUT:

<td><input name="id" type="hidden" value="<?php print "$pegid"; ?>" /></td>

ai tem a logica para inserir no banco..

 

 

 

<?php 

include ("conexao.php");
 
 $objeto = $_POST['objeto']; 
 $valor_anual = $_POST['valor_anual']; 
 $valor_mensal = $_POST['valor_mensal']; 	
 $n_do_contrato = $_POST['n_do_contrato']; 	
 $data_inicial = $_POST['data_inicial']; 	
 $data_final = $_POST['data_final']; 	
 $id = $_POST['id'];
 


$sql=" INSERT INTO contrato (objeto, valor_anual, valor_mensal, n_do_contrato, data_inicial, data_final, chave_contrato_fk )
 
 VALUES('$objeto' , '$valor_anual' , '$valor_mensal' , '$n_do_contrato' , '$data_inicial' , '$data_final' , '$id' )";
			
$query = mysql_query($sql);

agora ai vem o erroo quando eu cliko no linke da empresa da um erro na index.php.
nessa logica que eu ja olhei umas 10 vezes e ñ acho o erro...

			<tr><a href="?link=1">Home</a></tr>
 <p><a href="?link=2"> 1-Cadastrar Fornecedor</a></p>
 <p><a href="?link=3"> Contratos</a></p>
	
	</div>
 
	<?php
	 include("conexao.php"); // nessa linha aqui da erroo!!
		
			$link = $_GET["link"];
			
			$pag[1]="home.php";
 $pag[2]="tb_fornecedor.php";
		
			$pag[3]="contratos.php";
			
				if(!empty($link))
				{
					if(file_exists ($pag[$link]))
					{
						include $pag[$link];
					
					}
					else
					{
				 print"pagina não encontrada";
					
					}
				
				
				}
			
	
			
			
	
	
	
	?>

obs: o mais intresante e que cada um desses link's que estao ai em cima funcionam ...

mas quando eu clico la no:

<td> <a href=\"?pg=contrato&id=id_fornecedor\"> $resultado[razao]</a></td>

da erro

 

POR FAVOR TENHA PACIENCIA PARA ME AJUDAR !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E qual é o erro que dá? :mellow:

 

da erro do index.php nessa linha aqui:

 

<html>
<head>
<title>ISSEC</title>
 <link rel="stylesheet" type="text/css" href="css.css"/>
</head>
<body bgcolor="silver">
<DIV id="tudo">
 <div id="topo">
	 <div id="topo">
		
			<h1>ISSEC</h1>
			
		</div>
	
	<div id="menu">
		<td>
			<tr><a href="index.php?link=1">Home</a></tr>
		</td>
	
		<p><a href="?link=2"> Cadastrar Fornecedor</a></p>
 <p><a href="?link=3"> Contratos</a></p>
	
	</div>
 
	<?php
	 include("conexao.php");
		
			$link = $_GET["link"]; /////////////// DA ERRO NESSA LINHA ///////////////////
			
			$pag[1]="home.php";
 $pag[2]="tb_fornecedor.php";
		
			$pag[3]="contratos.php";
			
				if(!empty($link))
				{
					if(file_exists ($pag[$link]))
					{
						include $pag[$link];
					
					}
					else
					{
				 print"pagina não encontrada";
					
					}
				
				
				}
			
	
			
			
	
	
	
	?>
</DIV>	
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você mostrou onde está o erro e não qual é.

 

Antes de eu mover para a área de PHP

poste o que diz o erro.

 

E poste o código que envia a variavel por GET

 

 

bem quando eu clico no nome da empresa onde esta lincado. para ir para pagina mascara onde eu incluir a TB_CONTRATO.PHP(tabela de contrato) para preencher os dados daquela determinada empresa q eu clikei da essse erro

aqui:

 

Notice: Undefined index: link in C:\Arquivos de programas\EasyPHP 2.0b1\www\ISSEC\index.php on line 30

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara pra não dár todo esse trabalho você pode apenas criar uma procedure e informar os dados do funcionário....

 

 

mostre um exemplo de como ficaria um cadastro de um funcionário....

 

por pra eu poder dizer como ficaria a procedure;...

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca por:

$link = isset( $_GET['link'] ) ? $_GET['link'] : '';

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca por:

$link = isset( $_GET['link'] ) ? $_GET['link'] : '';

 

aeeeeeeeeeeeeeeeeeee VALEU amigo ate q enfim aguem me entendeu..

so uma pergunda para q serve esse (isset)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

isset verifica se a variável está "setada" com algum valor ou está NULL.

 

 

 

beleza mais eesse foi so um dos problemas que foi resolvido!!

 

cara pra não dár todo esse trabalho você pode apenas criar uma procedure e informar os dados do funcionário....

 

 

mostre um exemplo de como ficaria um cadastro de um funcionário....

 

por pra eu poder dizer como ficaria a procedure;...

 

 

bem vou explicar mais uma vez de forma resumida como eu estou fazendo o sistema.........

 

bem eu tenho as tabelas fornecedores , contratos e aditivos..

O relacionamento e de UM para UM.. cada fornecedor tem um contrato e cada contrato tem um aditivo. Mas por enquanto vamos nos focar com fornecedor e contrato...

bem eu Fiz um SELECT para exiber na agina WEB todos os fornecedores..

os dados dos fornecedores sao:

print"

 

<tr>
	<td>  <a href=\"?pg=contrato&id=id_fornecedor\"> $resultado[razao]</a> </td>
	<td>  $resultado[cnpj]   	</td>
	<td>  $resultado[endereco]      </td>
	<td>  $resultado[telefone] 	</td>
	<td>  $resultado[email] 	</td>		
   </tr>
	   
	   ";

Veja bem que "razao"(o campo razao armazena o nome da empresa) esta Lincado onde: ( pg=contrato ) pois bem ai eu criei uma pagina MASCARA onde :

<?php

$pagina = $_GET['pg'];

	switch( $pagina)
		
		case: 'contrato';
			include"tb_contrato.php";
			break;
 ?>

veja que quando eu clicar naquela determinada empresa vai ser direcionada para a pagina MASCARA. onde eu usei um -include- incluindo a tabela do contrato na pagina mascara..

 

E na tabela de contrato no caso tb_contrato.php eu tenho um input assim:

 

<?php	
$pegid = $_GET['id'];

?>
        <td><input name="id" type="hidden"  value="<?php print "$pegid"; ?>" /></td>

se lembra q no link tinha -id=id_fornecedor - Pois bem eu to pegando o -id- da determinada empresa que eu clikei..

 

e eu vi da erro nessa parte q eu pego o -id - da empresa..

$pegid = $_GET['id'];

 

e ta tudo direito na parte de gravar os dados no banco da tabela contrato.

 

QUANDO EU CLICO NO LINK NÃO ACONTECE NADAAA ...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

está tudo, muito muito confuso.

 

com calma...

 

<tr>
        <td>  <a href=\"?pg=contrato&id=id_fornecedor\"> $resultado[razao]</a> </td>
poste o código acima disso, onde vocêcria a variavel $resultado

 

até aqui está okay ? o problema é qndo você entra na página contrato.php se for, poste o código dela !

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu vou Visualizar o $resultado[razao] na pagina home.php...ai quando eu clicar no link..vai para pagina MASCARA onde:

<?php

$pagina = $_GET['pg'];

	switch( $pagina)
		
		case: 'contrato';
			include"tb_contrato.php";
			break;
			
			?>
bem ate ai tudo bem mas na tabela ( tb_contrato.php ) eu tenho :

 

 

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ISSEC</title>
</head>

<body>
<?php    include ("conexao.php"); 

$pegid = $_GET['id'];


?>
<blockquote>
  <form  name="form1" method="POST" action="contrato_gravar.php">
    <center><table width="504" border="0">

      <tr>
        <td width="174">Objeto:</td>
        <td width="257"><label>
          <textarea name="objeto"  cols="40" rows="1"></textarea>
        </label></td>
      </tr>
      <tr>
        <td>Valor Anual:</td>
        <td><label>
          <input name="valor_anual" type="text"  size="40" />
        </label></td>
      </tr>
      <tr>
        <td>Valor Mensal:</td>
        <td><input name="valor_mensal" type="text"  size="40" /></td>
      </tr>
      <tr>
        <td>Nº do Contrato:</td>
        <td><input name="n_do_contrato" type="text"  size="40" /></td>
      </tr>
      <tr>
        <td>Data Inicial:</td>
        <td><input name="data_inicial" type="text"  size="40" /></td>
      </tr>
      <tr>
        <td>Data Final :</td>
        <td><input name="data_final" type="text"  size="40" /></td>
      </tr>
        <tr>
       
        <td><input name="id" type="hidden"  value="<?php print "$pegid"; ?>" /></td>
      </tr>
       <tr>
     
    </table>
        <input type= "submit" value="enviar"></center>
  </form>
</blockquote>
</body>
</html>

ta vendo que a variavel "$pegid" pega o -id- do fornecedor...

e tenho esse ultimo input <input name = "id" ..........etc>

ai ali no value eu passei o -id- do do fornecedor que no caso e (id_fornecedor)...

 

to tentando fazer assim para para mim saber que aquele fornecedor corresponde aquele contrato tipo:

 

fornecedor 1 correspode a contrato 1

fornecedor 2 correspode a contrato 2

fornecedor 3 correspode a contrato 3

 

sei que e meio dificil explicar esse sistema escrevendo.. mas qualquer coisa e so perguntar... Mas por favor tenha paciencia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o sistema em si, me parece bastante simples.

 

qual a tua dúvida com esse formulário ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que se trata de quando você clica no Link não acontecer nada?

 

Você deve passar o id do fornecedor no link, e então nesta pagina "mascara" você verifica o nome da pagina que você vai incluir nela!? Não éh!? Na pagina que você inclui você pode ter uma variável pegando o id deste usuário. Isso presumo que você já saiba.

 

Mas, Não dá pra entender o motivo de quando você clica no link não acontece nada.

 

Desenvolvo sistema e usei muito isso, funcionou perfeitamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que se trata de quando você clica no Link não acontecer nada?

 

Você deve passar o id do fornecedor no link, e então nesta pagina "mascara" você verifica o nome da pagina que você vai incluir nela!? Não éh!? Na pagina que você inclui você pode ter uma variável pegando o id deste usuário. Isso presumo que você já saiba.

 

Mas, Não dá pra entender o motivo de quando você clica no link não acontece nada.

 

Desenvolvo sistema e usei muito isso, funcionou perfeitamente.

 

 

Amigo eu não tenho duvida mas sim Um problema..quando eu clico no link ñ acontece nada..

 

mas se eu abrir somente a pagina de contrato da erro na recepçao do -id- do fornecedor... aqui:

<?php

$pegid = $_GET['id'];

?>

 

Mas o certo e q acontecesse assim: eu clico no link:

<td> <a href=\"?pg=contrato&id=id_fornecedor\"> $resultado[razao]</a></td>

 

vou para pagina MASCARA preencho o contrato do fornecedor soooo isso ..

mas para mim saber que aquele fornecedor corresponde aquele contrato.. eu preciso inserir o -id- do fornecedor na tabela do contrato.... no meu MYSQL: criei as tabelas assim:

 

CREATE TABLE fornecedor

(

id_fornecedor INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

razao VARCHAR(100) NOT NULL,

cnpj INT (100) NOT NULL,

endereco VARCHAR(100) NOT NULL,

telefone INT(50) NOT NULL,

email VARCHAR (100) NOT NULL

 

) ENGINE = INNODB;

 

CREATE TABLE contrato

(

id_contrato INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

objeto VARCHAR(100) NOT NULL,

valor_anual DOUBLE NOT NULL,

valor_mensal DOUBLE NOT NULL,

n_do_contrato INT(100) NOT NULL,

data_inicial DATE NOT NULL,

data_final DATE NOT NULL,

chave_contrato_fk INT NOT NULL,

FOREIGN KEY (chave_contrato_fk) REFERENCES fornecedor(id_fornecedor)

ON DELETE CASCADE

ON UPDATE CASCADE

 

) ENGINE = INNODB

 

ta vendo o campo ( chave_contrato_fk INT NOT NULL ) esse campo vai se preenchido com o -id- do fornecedor.....

para mim saber que aquele contrato e daquele fornecedor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Programax.

Poste o Código em que você seleciona o id do fornecedor.

Preciso vê-lo pra saber se está passando mesmo algo dentro de

id

<tr>
       <td><a href=\"?pg=contrato&id=id_fornecedor\">$resultado[razao]</a></td>

:mellow:

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.