Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, boa tarde.
Bem, aqui estou eu de novo em mais uma pergunta...
Tenho uma página chamada noticias.php e quatro combo box, sendo que o primeiro,é obrigatório ser selecionado uma opção.
Os outros três não são necessários, mas ao gravar em uma tabela de um banco MySQL, dá mensagem de erro, pois como o valor que vai para o banco é 0(zero) e os campos da tabela não aceitam os 0, pois eles quebram sua integridade(esses campos recebem as chaves estrangeiras), queria uma forma do select das combo box passarem valor NULL, ou uma outra solução qualquer.
Eis o código da tabela:
CREATE TABLE `Noticias` (
`no_id` INT(10) NOT NULL AUTO_INCREMENT,
`no_idgrupo` INT(10) DEFAULT NULL,
`no_iditem` INT(10) DEFAULT NULL,
`no_idsubitem` INT(10) DEFAULT NULL,
`no_idautor` INT(10) DEFAULT NULL,
`no_idcategoria` INT(10) DEFAULT NULL,
`no_dataNoticia` DATE DEFAULT NULL,
`no_horaNoticia` TIME DEFAULT NULL,
`no_manchete` VARCHAR(100) DEFAULT NULL,
`no_resumo` TEXT,
`no_conteudo` TEXT,
`no_destaque` VARCHAR(1) DEFAULT NULL,
`no_dataValidade` DATETIME DEFAULT NULL,
`no_idlogin` INT(10) DEFAULT NULL,
`no_datalogin` DATETIME DEFAULT NULL,
PRIMARY KEY (`no_id`),
KEY `FK_Noticias_Autores` (`no_idautor`),
KEY `FK_Noticias_Grupos` (`no_idgrupo`),
KEY `FK_Noticias_Itens` (`no_iditem`),
KEY `FK_Noticias_SubItens` (`no_idsubitem`),
KEY `FK_Noticias_categorias` (`no_idcategoria`),
CONSTRAINT `FK_Noticias_Autores` FOREIGN KEY (`no_idautor`) REFERENCES `Autores` (`au_id`),
CONSTRAINT `FK_Noticias_categorias` FOREIGN KEY (`no_idcategoria`) REFERENCES `Categorias` (`ca_id`),
CONSTRAINT `FK_Noticias_Grupos` FOREIGN KEY (`no_idgrupo`) REFERENCES `Grupos` (`gr_id`),
CONSTRAINT `FK_Noticias_Itens` FOREIGN KEY (`no_iditem`) REFERENCES `Itens` (`it_id`),
CONSTRAINT `FK_Noticias_SubItens` FOREIGN KEY (`no_idsubitem`) REFERENCES `SubItens` (`si_id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC
Notem que os campos no_idautor, no_idgrupo, no_iditem, no_idsubitem e no_idcategoria, são chaves estrangeiras que recebem valores das tabelas em sua respectiva ordem: Autores, Grupos, Itens, SubItens e Categorias.
Abaixo o código do noticias.php
<html>
<head>
<title>Notícias</title>
<meta http-equiv="Content-Type" content="text/html"; charset="iso-8859-1">
<script language="javascript">
<!--
function ValidaForm()
{
if(document.f.grupo.selectedIndex==0){
alert("Escolha um grupo!!!");
document.f.grupo.focus();
}
else if(document.f.data.value==""){
alert("Entre com a data da publicação da Notícia!!!");
document.f.data.focus();
}
else if(document.f.destaque.selectedIndex==0){
alert("Escolha se é destaque!!!");
document.f.destaque.focus();
}
else{
document.f.action='incluirnoticia.php';
document.f.method='post';
document.f.submit();
}}
//-->
</script>
<link href="../css/epg.css" rel="stylesheet" type="text/css"/>
<script language="JavaScript" src="../scripts/calendar1.js"></script>
</head>
<?
$idautor=24;
$date=date("H:i:s");
include "../conexao/conexao_total.php";
//include_once '../includes/autenticarlogin.php';
?>
<body onLoad="javascript:document.f.grupo.focus();">
<form name="f" method="POST">
<input type="hidden" name="autor" value="<? echo $idautor; ?>">
<table width="90%" align="center" border="0" cellpadding="0" cellspacing="0" class="texto">
<tr><td> </td></tr>
<tr>
<td class="texto" align="center" colspan="2"><strong>Menu de Notícias</strong></td>
</tr>
<tr><td> </td></tr>
<tr>
<td>Grupo :</td>
<td><select name="grupo" id="grupo" class="texto">
<option value='0'>Selecione o Grupo de Notícias</option>
<?
$sql = "SELECT * FROM Grupos ORDER BY gr_descricao";
$resh = mysql_query($sql) or die ("Erro ao fazer consulta no banco de dados(tabela Grupos)");
mysql_data_seek($resh, 0);
while ($row_h = mysql_fetch_array($resh))
{
echo "<option value='$row_h[gr_id]'";
/*if ($gr_id == $row_h['gr_id'])
{
echo " selected";
$tem_nome=$row_h['gr_descricao'];
}*/
echo " >";
echo $row_h['gr_descricao'];
echo "</option>";
}
?>
</select></td>
</tr>
<tr><td><br/></td></tr>
<td>Itens:</td>
<td><select name="itens" class="texto">
<option value='0'>Selecione os Itens</option>
<?
$sql = "SELECT * from Itens ORDER BY it_descricao";
$resh = mysql_query($sql) or die ("Erro ao fazer consulta no banco de dados(tabela Grupos/Itens)");
if($resh){
while ($row_h = mysql_fetch_array($resh))
{
echo "<option value='".$row_h['it_id']."'";
/*if (isset($row_h['it_id']))
{
echo " selected";
$tem_nome=$row_h['it_descricao'];
}*/
echo " >";
echo $row_h['it_descricao'];
echo "</option>";
}
}
?>
</select></td>
</tr>
<tr><td><br/></td></tr>
<tr> <td>Subitens:</td>
<td><select name="subitens" class="texto">
<option value='0'>Selecione os Subitens</option>
<?
$sql = "SELECT * FROM SubItens ORDER BY si_descricao";
$resh = mysql_query($sql) or die ("Erro ao fazer consulta no banco de dados(tabela Itens/Subitens)");
if($resh){
while ($row_h = mysql_fetch_array($resh))
{
echo "<option value='".$row_h['si_id']."'";
/*if ($tem_id == $row_h['si_id'])
{
echo " selected";
$tem_nome=$row_h['si_descricao'];
}*/
echo " >";
echo $row_h['si_descricao'];
echo "</option>";
}
}
?>
</select></td></tr>
<tr><td><br /></td></tr>
<tr> <td>Categoria:</td>
<td><select name="categoria" class="texto">
<option value='0'>Selecione as Categorias</option>
<?
$sql = "SELECT * FROM Categorias ORDER BY ca_descricao";
$resh = mysql_query($sql) or die ("Erro ao fazer consulta no banco de dados(tabela Categorias)");
if($resh){
while ($row_h = mysql_fetch_array($resh))
{
echo "<option value='".$row_h['ca_id']."'";
/*if ($tem_id == $row_h['si_id'])
{
echo " selected";
$tem_nome=$row_h['si_descricao'];
}*/
echo " >";
echo $row_h['ca_descricao'];
echo "</option>";
}
}
?>
</select></td></tr>
<tr><td><br /></td></tr>
<tr><td>Data:</td><td><input name="data" type="text" size="10" maxlength="10" value="" readonly>
<a href="javascript:cal1.popup();"><img src="../images/cal.gif" width="16" height="16" border="0" alt="Clique na figura e escolha a data"></a></td>
</tr>
<tr><td><br/></td></tr>
<? $time=explode(":",$date,3);?>
<tr><td width="20%">Hora:</td><td><select name="hora" >
<? for($i=1;$i<=24;$i++){?>
<option value="<? printf('%02s',$i); ?>"
<? if ($i==$time[0])
{ ?>
selected <? } ?>
<? echo(">");?><? printf('%02s',$i);?></option>
<? } ?>
</select><strong> : </strong><select name="minuto" >
<? for($i=1;$i<=60;$i++){?>
<option value="<? printf('%02s',$i); ?>"
<? if ($i==$time[1])
{ ?>
selected <? } ?>
<? echo(">");?><? printf('%02s',$i);?></option>
<? } ?>
</select></td></tr>
<tr><td>Manchete:</td><td><input type="text" id="manchete" name="manchete" maxlength="49" size="50"/></td></tr>
<tr><td>Resumo:</td><td><textarea name="resumo" cols="35" rows="2"></textarea></td></tr>
<tr><td>Destaque:</td><td><select name="destaque">
<option value="" selected></option>
<option value="s">SIM</option>
<option value="n">NÃO</option>
</select></td>
</tr>
<tr><td>Data de Validade:</td><td><input name="validade" type="text" size="10" maxlength="10" value="" readonly>
<a href="javascript:cal2.popup();"> <img src="../images/cal.gif" width="16" height="16" border="0" alt="Clique na figura e escolha a data"></a></td></tr><br/>
<tr><td>Conteúdo:</td><td><textarea name="conteudo" cols="45" rows="5"></textarea></td></tr>
<tr>
<td colspan="2">
<table align="center" class="texto">
<tr>
<td>
<input name="gravar" type="button" class="bt" onClick="javascript:ValidaForm()" value="Gravar"> </td>
<td>
<input name="voltar" type="button" class="bt" onClick="javascript:SubmitVoltar()" value="Voltar"> </td>
</tr>
</table></td>
</tr>
</table>
</form>
<script language="JavaScript">
<!-- // create calendar object(s) just after form tag closed
// specify form element as the only parameter (document.forms['formname'].elements['inputname']);
// note: you can have as many calendar objects as you need for your application
var cal1 = new calendar1(document.forms['f'].elements['data']);
cal1.year_scroll = true;
cal1.time_comp = false;
var cal2 = new calendar1(document.forms['f'].elements['validade']);
cal2.year_scroll = true;
cal2.time_comp = false;
//-->
</script>
<?php
include '../includes/rodape.html';
?>
</body>
</html>
Notem que o select Item, passa como valor inicial o value 0
<td><select name="itens" class="texto">
<option value='0'>Selecione os Itens</option>Como fazer para eu gravar NULL na tabela?Carregando comentários...