Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

28-06-2012 23:27

tenho 5 chaves estrangeiras em uma tabela onde 4 delas sao NUlas, oque acontece quando uso o phpmyadmim ele aceita eu deixa-las em branco so que se eu usar o php para gravar e no comando insert tiver la a variavel exe: $cod_ser2 ela e igual a $cod_ser == "";
ela for vazia da erro ao gravar. pergunta para eu gravar usando insert como eu faço para deixa uma varial estrangeira nula?? pelo php myadmim da e pelo php como faço?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

03-07-2012 10:35

Passa a estrutura da sua tabela.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

03-07-2012 17:10

banco:
-- -- Estrutura da tabela `ordem` -- CREATE TABLE IF NOT EXISTS `ordem` ( `cod_ord` int(11) NOT NULL AUTO_INCREMENT, `cod_cli` int(11) NOT NULL, `cod_ser` int(11) NOT NULL, `cod_ser2` int(11) DEFAULT NULL, `cod_ser3` int(11) DEFAULT NULL, `cod_ser4` int(11) DEFAULT NULL, `cod_ser5` int(11) DEFAULT NULL, `ord_quant` varchar(3) NOT NULL, `ord_quant2` varchar(3) DEFAULT NULL, `ord_quant3` varchar(3) DEFAULT NULL, `ord_quant4` varchar(3) DEFAULT NULL, `ord_quant5` varchar(3) DEFAULT NULL, `ord_subtot` varchar(12) NOT NULL, `ord_subtot2` varchar(12) DEFAULT NULL, `ord_subtot3` varchar(12) DEFAULT NULL, `ord_subtot4` varchar(12) DEFAULT NULL, `ord_subtot5` varchar(12) DEFAULT NULL, `ord_tot` varchar(12) NOT NULL, `ord_des` varchar(20) NOT NULL COMMENT 'desconto', `ord_esp` varchar(50) NOT NULL COMMENT 'espesificacao', PRIMARY KEY (`cod_ord`), KEY `FK_ordem_ser` (`cod_ser`), KEY `FK_ordem_ser2` (`cod_ser2`), KEY `FK_ordem_ser3` (`cod_ser3`), KEY `FK_ordem_ser4` (`cod_ser4`), KEY `FK_ordem_ser5` (`cod_ser5`), KEY `FK_ordem_cli` (`cod_cli`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Estrutura da tabela `servicos` -- CREATE TABLE IF NOT EXISTS `servicos` ( `cod_ser` int(11) NOT NULL AUTO_INCREMENT, `ser_nom` varchar(50) NOT NULL, `ser_pre` varchar(50) NOT NULL, PRIMARY KEY (`cod_ser`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; -- -- Restrições para as tabelas dumpadas -- -- -- Restrições para a tabela `ordem` -- ALTER TABLE `ordem` ADD CONSTRAINT `FK_ordem_ser` FOREIGN KEY (`cod_ser`) REFERENCES `servicos` (`cod_ser`), ADD CONSTRAINT `FK_ordem_ser2` FOREIGN KEY (`cod_ser2`) REFERENCES `servicos` (`cod_ser`), ADD CONSTRAINT `FK_ordem_ser3` FOREIGN KEY (`cod_ser3`) REFERENCES `servicos` (`cod_ser`), ADD CONSTRAINT `FK_ordem_ser4` FOREIGN KEY (`cod_ser4`) REFERENCES `servicos` (`cod_ser`), ADD CONSTRAINT `FK_ordem_ser5` FOREIGN KEY (`cod_ser5`) REFERENCES `servicos` (`cod_ser`)

cod_ser 2 3 4 5 elas sao nulas ai eu quero que quando eu gravar algo no site e ela ficar em branco ele deixei null pq pelo phpmyadmim quando eu gravo e deixo em branco ele aparece NULL vou so posta o insert aki para voce ter uma ideia

if($insert = mysql_query("INSERT INTO ordem (cod_cli, cod_ser, cod_ser2, cod_ser3, cod_ser4, cod_ser5, ord_quant, ord_quant2, ord_quant3, ord_quant4, ord_quant5, ord_subtot, ord_subtot2, ord_subtot3, ord_subtot4, ord_subtot5, ord_tot, ord_des, ord_esp) VALUES ('$cod_cli', '$cod_ser1', '$cod_ser2_gra', '$cod_ser3_gra', '$cod_ser4_gra', '$cod_ser5_gra', '$quant1', '$quant2', '$quant3', '$quant4', '$quant5', '$sub1', '$sub2', '$sub3', '$sub4', '$sub5', '$total', '$desconto', '$obs')")){ echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php'> <script type=\"text/javascript\"> alert(\"Ordem de Serviço Gerada Com sucesso! \"); </script>"; exit; } else{ echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php'> <script type=\"text/javascript\"> alert(\"Erro ao Gerar Ordem de Serviço! \"); </script>"; exit; }

os codigos nem sempre serao preenchidos entao resumindo quando eu deixo em branco um deles ele nao grava da um erro e eu quero que quando o input referente a ele tiver vazio ele grave igual!

tem uma ideia ou algum codigo de ocmo fazer isso ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

03-07-2012 21:51

O que você pode estar fazendo é setar a variável como NULL se ela vier vazia. Veja esse exemplo.

<?php $var = ''; if($var=='') $var=NULL; echo var_dump(is_null($var)); ?>

No resultado mostrado na tela, mostrará:

bool(true) quando a variável for NULL ou bool(false) quando a variável não for nula.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

03-07-2012 23:32

nao deu certo montei um exemplo pratico vamos ver aki segue o banco....
-- phpMyAdmin SQL Dump -- version 3.4.5 -- http://www.phpmyadmin.net -- -- Servidor: localhost -- Tempo de Geração: 04/07/2012 às 04h27min -- Versão do Servidor: 5.5.16 -- Versão do PHP: 5.3.8 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; -- -- Banco de Dados: `teste` -- CREATE DATABASE `teste` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `teste`; -- -------------------------------------------------------- -- -- Estrutura da tabela `principal` -- CREATE TABLE IF NOT EXISTS `principal` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cod_sec` int(11) DEFAULT NULL, `nome` varchar(50) NOT NULL, PRIMARY KEY (`id`), KEY `FK_principal` (`cod_sec`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; -- -- Extraindo dados da tabela `principal` -- INSERT INTO `principal` (`id`, `cod_sec`, `nome`) VALUES (1, 1, 'joao'), (3, NULL, 'joaotestefunciona'); -- -------------------------------------------------------- -- -- Estrutura da tabela `secundaria` -- CREATE TABLE IF NOT EXISTS `secundaria` ( `cod_sec` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(50) NOT NULL, PRIMARY KEY (`cod_sec`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; -- -- Extraindo dados da tabela `secundaria` -- INSERT INTO `secundaria` (`cod_sec`, `nome`) VALUES (1, 'teste'), (2, 'test2'), (3, 'teste3'); -- -- Restrições para as tabelas dumpadas -- -- -- Restrições para a tabela `principal` -- ALTER TABLE `principal` ADD CONSTRAINT `FK_principal` FOREIGN KEY (`cod_sec`) REFERENCES `secundaria` (`cod_sec`);

pode ver no banco que tem um que foi inserido pela pagina do phpmyadmin ele esta com o NULL e inseriu corretamente so que pelo php nao vai ai montei o seguinte formulario

<form enctype="multipart/form-data" method="post"> exemplo:<br /> cod (Opcional)<input id="1" name="1" type="text" /><br /> nome (Obrigatorio)<input id="2" name="2" type="text" /><br /> <input type="submit" name="submit" value="GRAVAR" /> </form> <?php $servidor = "localhost"; $usuario = "root"; $senha = ""; $banco = "teste"; $conexao = @mysql_connect($servidor,$usuario,$senha); $conecta_banco = mysql_select_db($banco,$conexao); if(isset($_POST['submit'])){ if($_POST['1'] == ""){ //ele criara uma variavel NULL $te1 = "nulo";}else{ $te1 = $_POST['1'];} $te2 = $_POST['2']; $insert = mysql_query("INSERT INTO principal(cod_sec, nome) VALUES ('$te1','$te2')"); if($insert){ echo "ok"; } else{ echo "nao"; } } ?>

se tu olhar oque tem no banco vamos supor o cod_sec do teste e igual a 1 e voce preencher no formulario acima no codigo colocar 1 e o nome qualquer coisa e grava ele grava e se voce deixa-lo em branco o codigo e so preencher o outro ele da erro.. eu presiso que essa chave estrangeira tenha a opçao de ficar null se eu a deixa em branco fica null caso contrario ele preenche o que vir do banco. sera que tem alguma forma de fazer o mesmo ????
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

04-07-2012 15:57

Testa assim:

INPUTS

cod (Opcional)<input id="1" name="i1" value="" type="text" /><br /> nome (Obrigatorio)<input id="2" name="i2" value="" type="text" /><br />

Após o if do submit, coloca o seguinte

extract($_POST); if($i1=="") { $te1 = 'NULL'; } else { $te1 = $i1; } $te2 = $_POST['i2'];

O insert fica assim:

$insert = mysql_query("INSERT INTO principal(cod_sec, nome) VALUES ($te1,'$te2')");

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

04-07-2012 17:28

da mesma maneira nao grava, sera que tem algum codigo diferente que possa fazer isso funcionar ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

04-07-2012 18:59

Gravou normal aqui. Que valores tentou?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

04-07-2012 21:10

sim se eu colocar nos dois campos ele grava normal. mas oque eu quero e que grave deixando o campo cod em branco voce add algun dado na tabela secundaria? pois enquanto la nao tiver nada ele grava depois que tu coloca algo la ele noa grava mais !!!! do mesmo jeito que ta ai eu coloquei aki e digitei no campo nome qualquer nome e ele nao grava eu quero que grave quando o campo codigo estiver em branco... tem algum jeito ?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

04-07-2012 22:04

Você havia falado sobre deixar a variável nula. Se quer deixar aceitar campo em branco, terá que tirar o null do campo.

Quanto aos valores gravado na tabela principal, ele permite gravar os 2 inputs, se o número do primeiro input já está na tabela secundaria. Ou, gravar somente o segundo campo. Ai o primeiro campo fica como null.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

05-07-2012 10:12

olha eu nao entendi muito bem sua resposta, so que acho que nao estamos entendendo oque o outro quer ^^ rsrsr.
a minha pergunta e o seguinte, tenho dados na tabela secundaria correto. ai o campo da tabela primaria na hora de add no phpmyadmim ele aparece em menu list se eu deixa sem add nd pelo phpmyadmin ele funciona normalmente ele add e aparece no campo onde vizializo NULL se eu clicar em alterar ele aparece vazio o campo. ja pelo php se eu deixalo em branco o campo ele nao grava da erro se eu colocar null ele da erro php o menu list do banco noa permiti vazio pelo php pois tem que aver algum codigo de permisao para isso ja que a estrutura da tabela e nula. deve aver algum codigo que eu coloque que faça com que o insert mande para o banco disendo que akele determinado campo iria ficar null e o banco faz a verificaçao se ele tem opçao de ser nullo e responde ao php dizendo que pode mandar os dados algo do tipo entende...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

05-07-2012 10:57

Foi o que quis dizer no código que mandei, se você por exemplo coloca manualmente assim

...VALUES('NULL',..... no insert, vai cadastrar como null normalmente. Testa o script que indiquei.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

05-07-2012 14:26

tu diz fazer assim ?
$insert = mysql_query("INSERT INTO principal(cod_sec, nome) VALUES ('NULL','$te2')");

tambem nao funcionou to pensando em fazer uma gambiara, tem algum codigo que eu coloco no select tipo uma select que busque tudo menos o codigo tal ? ai eu crio na outra tabela o codigo 1 e coloco na select que nao busca a 1 como um valor null tem algo???
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

05-07-2012 16:02

Como assim tudo menos o código tal?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

07-07-2012 00:30

tipo assim tenho uma tabela onde tem por exemplo a tabela principal onde tem 125 ID cadastradas, onde eu quero que na hora do select

$select = mysql_query("SELECT * FROM principal");

na hora de procurar ela vai procurar e vai encontrar 125 ID so que eu quero que desas 125 ele nao procure a ID de numero 1 por exemplo.

ai a select so vai encontrar 124 ID.

entende?
ai oque vou fazer na tabela secundaria vou criar no codigo 1 o registro chamado NULL ai sempre que na hora do cadastro da tabela principal eu quiser deixar null ele vai cadastrar no banco o ID 1 e na hora de vizualizar ele nao ira buscar oque tiver com ID 1. e isso resolve meu problema.

tem algo que faça isso ?
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

07-07-2012 01:09

Prontinhu resolvi o problema era so uma coisa muito simples depois de levar varios topicos e quebrar a cabeça descobri oque era no comando insert onde for a variavel VALUES(NULL, '$teste')...
o nul ele noa pode conter '' aspas pois se nao ele noa e gravado entao oque eu fiz onde eu gravei gerei o codigo o null tem que ficar com aspas duplas e no comando insert sem segue o exemplo funcionando!

if(isset($_POST['submit'])){ if($_POST['i1'] == "") { $te1 = "NULL"; } else { $te1 = $_POST['i1']; } $te2 = $_POST['i2']; $insert = mysql_query("INSERT INTO principal(cod_sec, nome) VALUES ($te1,'$te2')"); if($insert){ echo "ok"; } else{ echo "nao"; } }

pode ver ali no $insert depois de values ta assim ($te1, '$te2')");...
Obrigado Web...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

07-07-2012 08:34

Eu tentei isso também. Mas funcionou aqui com aspas. :)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 396
Nome: João Paulo
Descrição do site: Site de Ofertas de Produtos da cidade
Sexo: Masculino
Localização: Bahia Luis Eduardo Magalhães

Chave estrangeira

07-07-2012 17:04

deve variar de versao de xampp para xampp ou do programa de que a pessoa usa ^^. ;)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17548
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Chave estrangeira

07-07-2012 17:14

Sim. Não tenho atualizado o meu faz tempo. :rofl:
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado