Chamando uma caixa de texto para vários elementos!

24/11/2014

0

PHP

Boa tarde!
estou com alguma dúvida se alguém poder ajudar-me agradeceria bastante
é o seguinte:
tenho várias consultas do meu banco e coloquei um link, que quando clicado chama
uma caixa de texto e um botão! o problema está que só chama para o primeiro registro.
O link aparece para todos os registros mais quando clicado só aparece a caixa no
primeiro registro estou passando o código quem poder ajudar-me agradecerei bastante

Este trecho de código é que chama a caixa de texto e adiciona na div com id=caixa
obs:Será que é por chamar a caixa de texto na div com id=caixa? mas está dentro de um While!
por favor me ajudem!
  <!--    <a id='<?php $row->id_comentarios ?>' onclick=" var id=(this.id);document.getElementById('caixa').innerHTML='<form action=resposta.php  method=POST> <textarea cols=80 rows=5 name=msg > <?php echo $row->id_comentarios ?> </textarea><button type=submit name=enviar>Responder</button> </form>'">responder</a>        -->  


<?php
while($row = mysqli_fetch_object($SQL)):

 echo "Postado:"; echo $row->data_publicacao; echo'</br>'; 
 echo "Por:"; echo  $row->nome." ". $row->sobrenome;
 echo "<div class='box_usuario'><img width='70px' height='60x' src='Database_image_user/".$row->imagem."' alt='Foto_do_usuario'/>
  </div>"; 
 echo " ";
 
//Exibição
echo '<p>';
 echo  sprintf(' <p style="background-color:#9FC;border-radius:12px;"> %s  </p>',$row->texto_comentario); 
 ?>
<a id='<?php $row->id_comentarios ?>' onclick=" var id=(this.id);document.getElementById('caixa').innerHTML='<form action=resposta.php  method=POST> <textarea cols=80 rows=5 name=msg > <?php echo $row->id_comentarios ?> </textarea><button type=submit name=enviar>Responder</button> </form>'">responder</a> 
 </p>
  <a href="#">Respostas()</a>
<?php
echo"<div id='caixa'> </div>"; //Adiciona a caixa de texto nesta div
 endwhile;
?>


Israel Bango

Israel Bango

Responder

Posts

24/11/2014

Ronaldo Lanhellas

Bom, você não pode ter vários id 'caixa' na mesma página, o seu while está fazendo com que vários "<div id=caixa>" sejam criados, o que está errado. Você tem que de alguma forma diferenciar o id de cada item, tente assim:

$i = 1;
while($row = mysqli_fetch_object($SQL)):
 
 echo "Postado:"; echo $row->data_publicacao; echo'</br>'; 
 echo "Por:"; echo  $row->nome." ". $row->sobrenome;
 echo "<div class='box_usuario'><img width='70px' height='60x' src='Database_image_user/".$row->imagem."' alt='Foto_do_usuario'/>
  </div>"; 
 echo " ";
  
//Exibição
echo '<p>';
 echo  sprintf(' <p style="background-color:#9FC;border-radius:12px;"> %s  </p>',$row->texto_comentario); 
 ?>
<a id='<?php $row->id_comentarios ?>' onclick=" var id=(this.id);document.getElementById('caixa_$i').innerHTML='<form action=resposta.php  method=POST> <textarea cols=80 rows=5 name=msg > <?php echo $row->id_comentarios ?> </textarea><button type=submit name=enviar>Responder</button> </form>'">responder</a> 
 </p>
  <a href="#">Respostas()</a>
<?php
echo"<div id='caixa_$i'> </div>"; //Adiciona a caixa de texto nesta div
$i++;
 endwhile;
?>

Responder

24/11/2014

Israel Bango

Obrigado Ronaldo Lanhellas! funcionou! tive simplesmente que adicionar as tags de inicializaçao do php no nome do id que é referenciado dentro do getElementById
ficou assim getElementById(caixa_<?php echo $i ?>).

Tens me ajudando muito, obrigado! Deus o abençoe!
Responder

25/11/2014

Ronaldo Lanhellas

Obrigado Ronaldo Lanhellas! funcionou! tive simplesmente que adicionar as tags de inicializaçao do php no nome do id que é referenciado dentro do getElementById
ficou assim getElementById(caixa_<?php echo $i ?>).

Tens me ajudando muito, obrigado! Deus o abençoe!


Isso mesmo. Agradeço, desejo o mesmo pra você.
Responder

25/11/2014

Israel Bango

Obrigado!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar