ZeCarlos Posted May 22, 2014 at 11:33 AM Report #556615 Posted May 22, 2014 at 11:33 AM (edited) Boas, tenho este codigo de comentarios que esta a adicionar comentarios em branco sempre que entro dentro da pagina da noticia alguém me consegue dizer onde ta o erro ? tambem diz na pagina da noticia estes erros Notice: Undefined index: autor in Notice: Undefined index: comentario in Notice: Undefined index: email in Alguém me pode ajudar ? // Faz conexão com o Banco de Dados include('conectar.php'); // Seleciona o id da noticia $id = $_GET['id']; // Adiciona +1 de Visualizações a cada pessoa que acessar a noticia $views_db = mysql_query("SELECT * FROM news WHERE id = '$id'"); $row = mysql_fetch_array($views_db); $view = $row['views']; $views = $view + 1; $views_db = mysql_query("UPDATE news SET views = '$views' WHERE id = '$id'"); // Seleciona a noticia pelo id da página $selecionar_db = "SELECT * FROM news WHERE id = '$id'"; $final = mysql_query($selecionar_db); // Pega os valores da noticia while ($new=mysql_fetch_array($final)) { $id = $new["id"]; $foto_not=$new["foto_not"]; $titulo = $new["titulo"]; $categoria_id = $new["categoria"]; $autor = $new["autor"]; $views = $new["views"]; $texto = $new["texto"]; $date = $new["date"]; // Altera o Formato da data da noticia $date_news = strtotime($date); $data = date('d/m/Y', $date_news); $hora = date('H:i', $date_news); // Pega o número de Comentários que a noticia possui $comentarios_db = "SELECT * FROM comentarios WHERE noticia_id='$id'"; $comentarios_db = mysql_query($comentarios_db); $comentarios = mysql_num_rows($comentarios_db); // Faz a seleção da Categoria $categoria_db = "SELECT * FROM categorias WHERE id='$categoria_id'"; $categoria_resultado = mysql_query($categoria_db); $categoria_final = mysql_fetch_assoc($categoria_resultado); $categoria = $categoria_final['categoria']; echo "<img src='".$foto_not."' height=350px />" ; echo "<title>$titulo</title>"; echo "<title>$texto</title>"; echo "<h1>$titulo</h1><p><p>$texto</p>Postado por <b>$autor</b> em <b>$data</b> ás <b>$hora</b> - <b>$views</b> Visualizações | <b>$comentarios</b> Comentários</br>"; echo "<p class='red'>______________________________________________________________________________________________________________________________________________________________________</b></p>"; echo "<h3>$comentarios Comentários:</h3>"; } ?> <?php // Faz conexão com a tabela Comentários $id = $_GET['id']; $selecionar_db_comentarios = "SELECT * FROM comentarios WHERE noticia_id = '$id' ORDER BY id DESC"; $selecionar_db_comentarios_final = mysql_query($selecionar_db_comentarios); // Pega os valores da tabela 'comentarios' while ($comentario_db=mysql_fetch_array($selecionar_db_comentarios_final)) { $id = $comentario_db["id"]; $autor = $comentario_db["autor"]; $comentario = $comentario_db["comentario"]; $date = $comentario_db["date"]; echo "<b>$autor</b> em <b>$date</b> comentou:<p>$comentario</p>"; } ?> ______________________________________________________________________________________________________________________________________________________________________ <h3>Comentar:</h3> <form name="input" action="noticia.php?id=<?php echo $_GET['id']; ?>" method="post"> <label>Seu nome:</label> <input name="autor" class="text" /> <br> <label>Seu Email:</label> <input name="email" class="text" /> <br> <label>Comentário:</label> <br> <textarea name="comentario" rows="5" cols="50"></textarea> <br> <input type="submit" value="Enviar Comentário"> <?php // Mensagem caso os campos estejam vazios if (!empty($_POST) AND (empty($_POST['autor']) OR empty($_POST['email']) OR empty($_POST['comentario']) )) { echo "<font color=\"#ff0000\">Por Favor Preencha os campos Vazios</font>"; } else { if(isset($_POST["autor"])) { $autor = $_POST["autor"]; $comentario = $_POST["comentario"]; $email = $_POST["email"]; } if($autor == "" && $email == "" && $comentario == ""){} else { // Adiciona o Comentário na Noticia $comentario_add = "INSERT INTO comentarios (noticia_id, ip, autor, comentario,date,email) VALUES ('".addslashes(mysql_real_escape_string($_GET["id"]))."', '".addslashes(mysql_real_escape_string($_SERVER['REMOTE_ADDR']))."', '".addslashes(mysql_real_escape_string(strip_tags($_POST['autor'])))."', '".addslashes(mysql_real_escape_string(strip_tags($_POST['comentario'])))."', NOW(), '".addslashes(mysql_real_escape_string(strip_tags($_POST['email'])))."')"; $comentario_add = mysql_query($comentario_add) or die ("Erro ao Adicionar Comentário."); echo "Comentário Adicionado com sucesso | <a href=\"noticia.php?id=".$_GET['id']."\">Atualizar Página para ver seu comentário</a>"; } } ?> Cumps Edited May 22, 2014 at 11:35 AM by ZeCarlos
HappyHippyHippo Posted May 22, 2014 at 11:38 AM Report #556619 Posted May 22, 2014 at 11:38 AM // se if( $autor == "" // $autor for vazio && $email == "" // e $email for vazio && $comentario == "") { // e $comentário for vazio // não faz nada } else { // caso contrário // insere na BD } por outras palavras : para não fazer nada terás de ter os 3 elementos como vazios ... 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
odnav Posted May 22, 2014 at 11:44 AM Report #556623 Posted May 22, 2014 at 11:44 AM Não comeces um if se não lhe vais dar nada para fazer, para isso fazes if($autor != "" && $email != "" && $comentario != ""){// Adiciona o Comentário na Noticia $comentario_add = "INSERT INTO comentarios (noticia_id, ip, autor, comentario,date,email) VALUES ('".addslashes(mysql_real_escape_string($_GET["id"]))."', '".addslashes(mysql_real_escape_string($_SERVER['REMOTE_ADDR']))."', '".addslashes(mysql_real_escape_string(strip_tags($_POST['autor'])))."', '".addslashes(mysql_real_escape_string(strip_tags($_POST['comentario'])))."', NOW(), '".addslashes(mysql_real_escape_string(strip_tags($_POST['email'])))."')"; $comentario_add = mysql_query($comentario_add) or die ("Erro ao Adicionar Comentário."); echo "Comentário Adicionado com sucesso | <a href=\"noticia.php?id=".$_GET['id']."\">Atualizar Página para ver seu comentário</a>";}
ZeCarlos Posted May 22, 2014 at 11:51 AM Author Report #556625 Posted May 22, 2014 at 11:51 AM // se if( $autor == "" // $autor for vazio && $email == "" // e $email for vazio && $comentario == "") { // e $comentário for vazio // não faz nada } else { // caso contrário // insere na BD } por outras palavras : para não fazer nada terás de ter os 3 elementos como vazios ... esse é o codigo que tenho, desculpa mas nao percebi a ideia, esta errado ou esta certo ? Não comeces um if se não lhe vais dar nada para fazer, para isso fazes if($autor != "" && $email != "" && $comentario != ""){// Adiciona o Comentário na Noticia $comentario_add = "INSERT INTO comentarios (noticia_id, ip, autor, comentario,date,email) VALUES ('".addslashes(mysql_real_escape_string($_GET["id"]))."', '".addslashes(mysql_real_escape_string($_SERVER['REMOTE_ADDR']))."', '".addslashes(mysql_real_escape_string(strip_tags($_POST['autor'])))."', '".addslashes(mysql_real_escape_string(strip_tags($_POST['comentario'])))."', NOW(), '".addslashes(mysql_real_escape_string(strip_tags($_POST['email'])))."')"; $comentario_add = mysql_query($comentario_add) or die ("Erro ao Adicionar Comentário."); echo "Comentário Adicionado com sucesso | <a href=\"noticia.php?id=".$_GET['id']."\">Atualizar Página para ver seu comentário</a>";} Obrigado os comentarios já nao estão a adicionar em branco agora apenas aparece que o "email" nao esta definido quando ao que vejo ele esta, algo de errado para aparecer isso ?
HappyHippyHippo Posted May 22, 2014 at 12:00 PM Report #556632 Posted May 22, 2014 at 12:00 PM esse é o codigo que tenho, desculpa mas nao percebi a ideia, esta errado ou esta certo ? claro que é o código que tens !!! eu estava a explicar o que estava a acontecer !!! basta um dos elementos não for uma string vazia para inserir na BD 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now