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: 271
Sexo: Masculino

ANCORAS ENTRE COMENTARIO E RESPOSTA

06-07-2016 14:29

WEB, estou criando um sistema de comentarios com resposta.
Registo os comentarios e mostro-os...!
Insiro as respostas para cada comentario...até aqui tudo bem , de facto cada resposta fica correspondendo ao comentario previamente exposto...

PROBLEMA:QUANDO INSIRO A RESPOSTA NÃO CONSIGO FAZER COM QUE A ANCORA ME LEVE DIRETAMENTE AO COMENTARIO...TENHO QUE SER EU A ROLAR A PAGINA MANUALMENTE PARA CHEGAR LA...
SEI QUE ISTO É FEITO COM ANCORAS...POREM AINDA NAO CONSEGUI RESOLVER COMO FAZER...CONSEGUE DESCOBRIR ONDE ESTOU FAZENDO MAL AS ANCORAS?

P.S: QUANDO SUBMETO A RESPOSTA , NA URL NÃO VEJO O NUMERO DO ID_COMENTARIO ...


SO ME APARECE ASSIM... ;(
http://localhost/SITE/untitled2.php?#$id_comentario




<?php //inserir respostas

//session_start(); //sessão já foi iniciada lá em cima...

if(isset($_REQUEST['responder']))//se clicar no botao 'responder'...
{
//abrir ligação a base de dados
require 'Ligar BaseDados/Ligacao_BaseDados.php';


//defino as variaveis a capturar os valores dos campos...
$id_comentario = $_POST['id_comentario'];//<input type="hidden" name="id_comentario" value="<?php echo $id_comentario
$resposta = $_POST['resposta']; // campo textarea 'resposta'

//erros


//query
$inserir_resposta = $ligacao->query("INSERT INTO forum_respostas ( id_comentario , id_utilizador , resposta , data_resposta ) VALUES ( '$id_comentario' , '".$_SESSION['id']."' , '$resposta' , NOW() ) ") or die(mysqli_error() );

$buscar_respostas = $ligacao->query('SELECT * FROM forum_respostas');
while($mostrar = mysqli_fetch_array($buscar_respostas))
{
$id_resposta = $mostrar['id_resposta'];
}
header('Location: untitled2.php?#$id_comentario');

}
?>



<body>


...

<!--aqui insiro os comentarios...-->
<form name="form_comentario" id="form_comentario" action="?" method="post">
<textarea name="comentario" rows="3" cols="60" placeholder="Digite o seu comentario"></textarea> <br>
<input type="submit" name="comentar" value="Comentar" />
</form>


<?php
//abrir ligação a base de dados
require 'Ligar BaseDados/Ligacao_BaseDados.php';

//buscar comentarios
$buscar_comentarios = $ligacao->query("SELECT * FROM forum_comentarios ORDER BY id_comentario DESC"); //DESC = mostra ultimo comentario!

//para ver se há comentarios
$resultado = mysqli_num_rows($buscar_comentarios);
if($resultado == 0)//se não houver , mostra o aciso de que não há...
{
echo 'Ainda não ha comentarios registados, seja o primeiro!';
}

//se houver , mostra todos os comentarios!
while($mostrar = mysqli_fetch_array($buscar_comentarios))//CRUD R=read
{ //inicio da chaveta MOSTRAR COMENTARIOS
$id_comentario = $mostrar['id_comentario'];

$comentario = $mostrar['comentario'];
$data_comentario = $mostrar['data_comentario'];
$id_utilizador = $mostrar['id_utilizador'];
?>

<div id="comentarios"><!--inicio CLASS comentarios-->
<p>nome: <?php echo $id_utilizador ?></p>
<p>comentario: <?php echo $comentario ?></p>
<p>data: <?php echo $data_comentario ?></p>



<?php //buscar respostas

require 'Ligar BaseDados/Ligacao_BaseDados.php';

$buscar_respostas = $ligacao->query("SELECT * FROM forum_respostas WHERE id_comentario = '$id_comentario' ORDER BY id_resposta ASC ");//'WHERE id_comentario = '$id_comentario'' -> assim aparecem as respostas nos respectivas comentarios!
while($mostrar = mysqli_fetch_array($buscar_respostas))
{
$id_comentario = $mostrar['id_comentario'];//IMPORTANTE PARA PODER PEGAR O ID_COMENTARIO!

$id_utilizador = $mostrar['id_utilizador'];
$resposta = $mostrar['resposta'];
$data_resposta = $mostrar['data_resposta'];


?>



<div id="resposta" id="<?php echo $id_comentario ?>"><!--inicio da ID resposta-->

<p>nome:<?php echo $id_utilizador ?></p>
<p>resposta:<?php echo $resposta ?></p>
<p>data:<?php echo $data_resposta ?></p>



</div><!--fim da ID resposta-->
<?php } ?>


<span class="mostra_form_resposta">Responder</span>

<form name="form_resposta" id="form_resposta" action="?" method="post">
<textarea name="resposta" rows="3" cols="60" placeholder="Digite a sua resposta"></textarea>
<input type="hidden" name="id_comentario" value="<?php echo $id_comentario ?>"> <br> <!--pegar o valor do id_comentario a que a resposta corresponde-->
<input type="submit" name="responder" value="Responder" />
</form>




</div><!--fim CLASS comentarios-->
<?php } //FIM da chaveta MOSTRAR COMENTARIOS ?>
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

06-07-2016 14:45

Para navegar entre âncoras você deve ter 2 itens:

<!-- ÂNCORA //--> <a href="#ancora">âncora</a> <!-- ALVO //--> <a name="ancora">alvo</a>

No seu caso ali no header você deve concatenar o id para que a âncora funcione.

header('Location: untitled2.php?#'.$id_comentario.'');

Ai você vai precisar ter o mesmo $id_comentario em um a name para que a âncora ache.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

06-07-2016 15:26

mas o meu header não esta bem?

header('Location: untitled2.php?id_comentario=$id_comentario#$id_resposta');

eu quero ser direcionado para a resposta que dei ao comentario, daí ter no fim $id_resposta'


e esse a name coloco em que parte no meu codigo?no form resposta?

mas ja la tenho um input:

<input type="hidden" name="id_comentario" value="<?php echo $id_comentario ?>">
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

06-07-2016 16:23

Você precisa substituir o seu header por esse

header('Location: untitled2.php?id_comentario='.$id_comentario.'#'.$id_resposta.'');

A concatenação '..' é para que os valores das variáveis sejam impressas e passadas pelo link.

Quanto ao input alvo, você pode adicionar o seguinte antes dele:

<a name="<?php echo $id_resposta; ?>"></a>

Eu usei o $id_resposta porque é ele que você passa no link #..
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 12:51

mas eu estou me baseando num video tutorial e nao usa essa tag:
<a name="<?php echo $id_resposta; ?>"></a>

o header direciona consoante o valor do id e da div...



nao é como voce faz quando eu por exemplo recebo a notificação de que voce me respondeu pelo email...

viewtopic.php?p=33157&sid=c46627e78ffe99cb34a701af31082dc6#p33157
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 13:18

ponto da situação:

eu registo um comentario e na url ja apare os valores

header
header("Location: untitled2.php?id_comentario=$id_comentario#$id_comentario");

url
http://localhost/site/untitled2.php?[b] ... ario=72#72[/b]

problema
a pagina nao roda para o comentario introduzido....
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 14:06

Você precisa ter um name com o mesmo id passado no link, nesse caso:

<a name="72">aqui</a>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 14:48

BOM PELO MENOS FIZ COMO VOCE DISSE E FUNCIONA, OU SEJA , AO COMENTAR A PAGINA ROLA PARA O COMENTARIO FEITO :)

NO HEADER TENHO ASSIM:
header("Location: untitled2.php?#$id_comentario");

NO CODIGO PUZ O TAL <A NAME=""></A>

<a name="<?php echo $id_comentario ?>"><div id="comentario" id="<?php echo $id_comentario ?>"></a>

UMA ETAPA JA TA GANHA :)

POREM AO REPONDER AO COMENTARIO ELA NAO ROLA...

MEU HEADER:
header("Location: untitled2.php?id_comentario=$id_comentario#$id_resposta");

NO CODIGO TB PUA A TAL TAG <A NAME... </A>

<a name=" <?php echo $id_resposta ?> "> <div id="resposta" id="<?php echo $id_resposta ?>"> </a>

AQUI CERTAMENTE NAO PUZ BEM PODE ME AJUDAR WEB?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 14:58

O name é só referência. Não precisa ter conteúdo dentro.

<a name="<?php echo $id_comentario ?>"></a> <div id="comentario" id="<?php echo $id_comentario ?>"></div>

Eu não sei o método que você usa para responder. Mas você vai ter que fazer o mesmo esquema. Armazenar o id name do alvo, ou seja, da pergunta. E passar pelo link esse id para o link, no header.

Veja por exemplo o fórum aqui, para você ir para uma reposta específica usa
viewtopic.php?f=1&t=9875&p=33162#p33162
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 15:17

so referencia e nao precisa ter conteudo dentro como assim? agora me baralhou...
entao nao tenho que meter dentro do name o valor da variavel ?? como me respondeu anteriormente?

mudei o meu header de
header("Location: untitled2.php?id_comentario=$id_comentario#$id_resposta");

para
header("Location: untitled2.php?id_resposta#$id_resposta");
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 15:20

olha o meu codigo todo aqui:


<?php //inserir comentarios session_start(); if(isset($_REQUEST['comentar']))//se clicar no botao 'comentar'... { //abrir ligação a base de dados require 'Ligar BaseDados/Ligacao_BaseDados.php'; //defino as variaveis a capturar os valores dos campos... //$id_comentario = $_POST['id_comentario']; $comentario = $_POST['comentario']; // campo textarea 'comentario' //erros //query $inserir_comentario = $ligacao->query("INSERT INTO forum_comentarios ( id_utilizador , comentario , data_comentario ) VALUES ( '".$_SESSION['id']."' , '$comentario' , NOW() ) ") or die(mysqli_error() ); $buscar_comentarios = $ligacao->query('SELECT * FROM forum_comentarios'); while($mostrar = mysqli_fetch_array($buscar_comentarios)) { $id_comentario = $mostrar["id_comentario"]; } header("Location: untitled2.php?#$id_comentario"); } ?> <?php //inserir respostas //session_start(); //sessão já foi iniciada lá em cima... if(isset($_REQUEST['responder']))//se clicar no botao 'responder'... { //abrir ligação a base de dados require 'Ligar BaseDados/Ligacao_BaseDados.php'; //defino as variaveis a capturar os valores dos campos... $id_comentario = $_POST['id_comentario'];//<input type="hidden" name="id_comentario" value="<?php echo $id_comentario $resposta = $_POST['resposta']; // campo textarea 'resposta' //erros //query $inserir_resposta = $ligacao->query("INSERT INTO forum_respostas ( id_comentario , id_utilizador , resposta , data_resposta ) VALUES ( '$id_comentario' , '".$_SESSION['id']."' , '$resposta' , NOW() ) ") or die(mysqli_error() ); $buscar_respostas = $ligacao->query('SELECT * FROM forum_respostas'); while($mostrar = mysqli_fetch_array($buscar_respostas)) { $id_resposta = $mostrar['id_resposta']; } header("Location: untitled2.php?id_resposta#$id_resposta"); } ?> <!DOCTYPE html> ... </head> <body> <form name="form_comentario" id="form_comentario" action="?" method="post"> <textarea name="comentario" rows="3" cols="60" placeholder="Digite o seu comentario"></textarea><br> <input type="submit" name="comentar" value="Comentar" /> </form> <?php //abrir ligação a base de dados require 'Ligar BaseDados/Ligacao_BaseDados.php'; //buscar comentarios $buscar_comentarios = $ligacao->query("SELECT * FROM forum_comentarios"); //DESC = mostra ultimo comentario! //para ver se há comentarios $resultado = mysqli_num_rows($buscar_comentarios); if($resultado == 0)//se não houver , mostra o aciso de que não há... { echo 'Ainda não ha comentarios registados, seja o primeiro!'; } //se houver , mostra todos os comentarios! while($mostrar = mysqli_fetch_array($buscar_comentarios))//CRUD R=read { //inicio da chaveta MOSTRAR COMENTARIOS $id_comentario = $mostrar['id_comentario']; $comentario = $mostrar['comentario']; $data_comentario = $mostrar['data_comentario']; $id_utilizador = $mostrar['id_utilizador']; ?> <a name="<?php echo $id_comentario ?>"><div id="comentario" id="<?php echo $id_comentario ?>"></a><!--inicio ID comentario--> <p>nome: <?php echo $id_utilizador ?></p> <p>comentario: <?php echo $comentario ?></p> <p>data: <?php echo $data_comentario ?></p> <p># <?php echo $id_comentario ?></p> <?php //buscar respostas require 'Ligar BaseDados/Ligacao_BaseDados.php'; $buscar_respostas = $ligacao->query("SELECT * FROM forum_respostas WHERE id_comentario = '$id_comentario' ORDER BY id_resposta ASC ");//'WHERE id_comentario = '$id_comentario'' -> assim aparecem as respostas nos respectivas comentarios! while($mostrar = mysqli_fetch_array($buscar_respostas)) { $id_comentario = $mostrar['id_comentario'];//IMPORTANTE PARA PODER PEGAR O ID_COMENTARIO! $id_resposta = $mostrar['id_resposta']; $id_utilizador = $mostrar['id_utilizador']; $resposta = $mostrar['resposta']; $data_resposta = $mostrar['data_resposta']; ?> <a name="<?php echo $id_resposta ?>"><div id="resposta" id="<?php echo $id_resposta ?>"></a><!--inicio da ID resposta--> <p>nome:<?php echo $id_utilizador ?></p> <p>resposta:<?php echo $resposta ?></p> <p>data:<?php echo $data_resposta ?></p> </div><!--fim da ID resposta--> <?php } ?> <span class="mostra_form_resposta">Responder</span> <form name="form_resposta" id="form_resposta" action="?" method="post"> <textarea name="resposta" rows="3" cols="60" placeholder="Digite a sua resposta"></textarea> <input type="hidden" name="id_comentario" value="<?php echo $id_comentario ?>"> <br> <!--pegar o valor do id_comentario a que a resposta corresponde--> <input type="submit" name="responder" value="Responder" /> </form> </div><!--fim ID comentario--> <?php } //FIM da chaveta MOSTRAR COMENTARIOS ?> </body> </html>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA  #resolvido

07-07-2016 15:45

O importante é o value do name, e a tag pode ficar só com um texto de referência.

<a name="IMPORTANTE">algo..</a>

Então o bloco da resposta deve começar assim:

<a name="<?php echo $id_resposta ?>"></a> <div id="resposta" id="<?php echo $id_resposta ?>"><!--inicio da ID resposta-->

Lembrando que o a name não é suportado no HTML 5.

Se quiser mais detalhes sobre âncora, dá uma olhada nesse vídeo
1
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 18:20

ta obrigado,ja agora como posso tambem obter este editor de texto que voÇe usa ? :)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

07-07-2016 20:23

Esse vídeo não foi eu que postei. O editor que é usado no vídeo acho que é o DreamWeaver.

O editor que uso para códigos é o Notepad++
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

08-07-2016 12:21

web compreendi o meu erro, eu tinha assim:

<div id="resposta" id="<?php echo $id_resposta ?>">


corrigindo assim, funciona,tinha 2 id !!!!
<div class="resposta" id="<?php echo $id_resposta ?>">


ufa. demorei ,quebrei a cabeça para compreender isto....!!!

quanto ao editor que me estava a referir é este editor de texto em que estou postando estes codigos ,por a negrito, cores etc....pois eu quero fazer publicações gravadas numa base de dados que quando nós as chamar-mos para serem vistas apareçam ja formatadas com negritos cores etc....pensava que ao formatar um texto e depois inserir numa base de dados e depois chamar para visualizar o texto ja nao vinha formatado como de original.....eu reparei que quando te envio as mensagens algumas formatadas com cores etc, elas certamente ficam gravadas numa base dados certo? e depois vejo-as aqui , e voce certamnete com toda a formatação...entendeu?
queria saber o nome do editor que permite isso, formatar o texto numa textarea, inserir numa base dados e depois como while para chamar as variaveis para mostrar as coisas , elas apareçem formatadas...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

08-07-2016 13:38

Ah sim. Um dos editores mais usados é o CKEditor
http://ckeditor.com
1
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 271
Sexo: Masculino

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

28-07-2016 20:37

web, eu ja tinha isto funcionando bem, mas nao sei o que aconteceu....;o que eu queria era ter o valaor do id na url....mso me aparece na url:

forum.php?


o valor do id que eu puxo nao aparece para eu poder funcionar a ancora...porem eu ja fiz um echo do $id_comentario e esse valor aparece na pagina SÓ QUE NÃO APARECE JUNTO DA URL COMO EU PRETENDIA...PORQUE É QUE ELA NÃO FICA AGREGADO, ja que testei com echo e ele existe???? :(



if(isset($_REQUEST['comentar']))
{

require_once 'Ligar BaseDados/Ligacao_BaseDados.php';



$comentario = $_POST['comentario']; // campo textarea 'comentario'



$inserir_comentario = $ligacao->query("INSERT INTO forum_comentarios ( id_utilizador , comentario , mostrar_comentario , gosto , nao_gosto ,data_comentario ) VALUES ( '".$_SESSION['id']."' , '$comentario' , 'SIM' , '0' , '0' , NOW() ) ") or die(mysqli_error() );




$buscar_comentarios = $ligacao->query('SELECT * FROM forum_comentarios');

while($mostrar = mysqli_fetch_array($buscar_comentarios))
{
$id_comentario = $mostrar['id_comentario'];
}


header('Location: forum.php#'.$id_comentario.' ');

}


?>
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: ANCORAS ENTRE COMENTARIO E RESPOSTA

28-07-2016 20:48

Não está fazendo sentido a parte da consulta para capturar o id.
Sua consulta pode retornar n resultados. Quando você faz o while, essa linha que cria $id_comentario pode se repetir diversas vezes.

O ideal seria armazenar o id que vai ser usado no redirecionamento em um input no formulário que você tem, passar esse id por $_POST, e usar esse valor para o redirecionamento.

Segue uma base

<form action="teste.php" method="post"> <input type="hidden" name="id" value="1" /> <input type="submit" name="submit" /> </form> <?php if(isset($_POST['submit'])) { // UPDATE, ETC... header("Location: teste.php#".$_POST['id']); } ?>

1
A melhor hospedagem para o seu site HostGator!

Quem está online

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