Jump to content


Photo

Sql Acusa De Campo Em Branco, Porém Php Não Diz Que Há Um Campo Em Bra


  • Faça o login para participar
6 replies to this topic

#1 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 05/08/2007, 19:33

A coisa está braba. Tenho que concluir um arquivo urgente, porém, o mysql acusa de campo em branco e quando imprimo tudo, o PHP não mostra nenhum campo em branco.

Código da parte do problema:
$id = $_POST['id'];

$grupo = $_POST['grupo'];

$assunto = $_POST['assunto'];

$mensagem = nl2br($_POST['mensagem']);

$data = date('Y/m/d H:i:s');

if($grupo == 1){

$sql = mysql_query("SELECT * FROM login WHERE rank='1'") or die(mysql_error());
}
elseif($grupo == 3){
$sql = mysql_query("SELECT * FROM login WHERE rank='3'") or die(mysql_error());
}
elseif($grupo == 4){
$sql = mysql_query("SELECT * FROM login WHERE rank='4'") or die(mysql_error());
}
elseif($grupo == 5){
$sql = mysql_query("SELECT * FROM login WHERE rank='5'") or die(mysql_error());
}
elseif($grupo == 6){
$sql = mysql_query("SELECT * FROM login") or die(mysql_error());
} else {
$sql = mysql_query("SELECT * FROM login WHERE rank='1'") or die(mysql_error());
}
echo "<br />";
print_r($_POST);
echo "<br />";
if(mysql_num_rows($sql)){

while($r = mysql_fetch_array($sql)){
echo $r['id'];
echo "<br />";
$query = mysql_query("INSERT INTO `mp_entrada` (datahora, mem_env, mem_rec, conteudo, lida, assunto) VALUES ('$data', '$id', '{$r['id']}', '$mensagem', 0, '$assunto'") or die (mysql_error());

if($query){

echo "Mensagem enviada com sucesso!";

} else {

echo "Houve um erro ao enviar a mensagem. ";

}

}

} else {
$sql_array = mysql_fetch_array($sql);
echo $sql_array['id'];
echo "<br />";
$query = mysql_query("INSERT INTO `mp_entrada` (datahora, mem_env, mem_rec, conteudo, lida, assunto) VALUES ('$data', '$id', '{$sql_array['id']}', '$mensagem', 0, '$assunto'") or die (mysql_error());

if($query){

echo "Mensagem enviada com sucesso!";

} else {

echo "Houve um erro ao enviar a mensagem. ";

}
}

Código total:


O que pode estar ocorrendo?
Obrigado,

#2 danilo4139

danilo4139

    Novato no fórum

  • Usuários
  • 18 posts
  • Sexo:Não informado

Posted 05/08/2007, 20:54

Vai no phpMyAdmin , e veja se o bd ta vazio mesmo... ;)
posta ae se ta ou n
Procurando fazer fama? Anuncie no maior e melhor catálogo de links: http://www.dicasweb.com

Procurando notícias de tecnologia? Visite o blog Guia Webmaster! http://www.guiawm.com

;)

#3 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 06/08/2007, 10:03

Eu não sou muito fã de usar coisas como "{$r['id']}" no meio de minhas strings, sou mais a favor da concatenação.

$SQL = "SELECT blablabla WHERE id = " . $r['id];

Algum campo de um insert está como NOT NULL por isso está dando esse erro

Recomendo você imprimir na tela, valor por valor das coisas e ver.

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#4 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 06/08/2007, 18:37

Somente pra auxiliar a melhora do script
Você poderia remover isso
if($grupo == 1){

$sql = mysql_query("SELECT * FROM login WHERE rank='1'") or die(mysql_error());
}
elseif($grupo == 3){
$sql = mysql_query("SELECT * FROM login WHERE rank='3'") or die(mysql_error());
}
elseif($grupo == 4){
$sql = mysql_query("SELECT * FROM login WHERE rank='4'") or die(mysql_error());
}
elseif($grupo == 5){
$sql = mysql_query("SELECT * FROM login WHERE rank='5'") or die(mysql_error());
}
elseif($grupo == 6){
$sql = mysql_query("SELECT * FROM login") or die(mysql_error());
} else {
$sql = mysql_query("SELECT * FROM login WHERE rank='1'") or die(mysql_error());
}
e colocar isso
if( empty( $grupo ) )
{

// Não entendi por que no caso de ser vazio ter que buscar o rank 1, mas...
$sql = mysql_query("SELECT * FROM login WHERE rank='1'") or die(mysql_error());

}else{

$sql = mysql_query("SELECT * FROM login WHERE rank=". $grupo ."") or die(mysql_error());
}

Falopa!

#5 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 12/08/2007, 16:51

Fiz o que me sugeriu hostdesigner, porém, o problema continua.
Ele imprime agora:

Array ( [id] => 1 [grupo] => 5 [assunto] => Teste xD [mensagem] => testando essa budega aqui. =P espero que funcione ó_ò [submit] => Enviar )
1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


E o código:

Quando ao fato de ser em branco, eu tinha me enganado quanto ao conteúdo do } else {. ;P
O que pode estar havendo?

#6 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 12/08/2007, 16:58

Bom este erro é no MySQL e não no PHP então você precisa saber qual das consultas está gerando o erro, verifique ai, eu não tenho certeza, mas, acho que seja aquela em que você colocou
rank = ". $sua_variavel ."
O valor desta váriavel é uma string ou um integer?

Falopa!

#7 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 12/08/2007, 22:13

integer.
aliás, eu acho que é problema ao adicionar, sei lá né... Mas se o rank for igual a administrador, tem dois registros.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq