Foros del Web » Programando para Internet » PHP »

error en codigo php

Estas en el tema de error en codigo php en el foro de PHP en Foros del Web. Hola a todos, espero que me puedan ayudar en este error que me cruze, estoy creando una especie de muro simple para interactuar entre usuarios.. ...
  #1 (permalink)  
Antiguo 04/06/2011, 19:56
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
error en codigo php

Hola a todos,
espero que me puedan ayudar en este error que me cruze, estoy creando una especie de muro simple para interactuar entre usuarios.. el tema me surgio al responder los mensajes, como yo me manejo con php y es lo que mas entiendo pero aca no entiendo como hacerlo.. el error esta en el codigo:

Código HTML:
Ver original
  1. <form name="loco" method="post" action="muro.php?name=<?=$name;?>">
  2. <textarea name="msg" wrap="off" style="width:480px; height: 20px;"  onkeypress="iSubmitEnter(event, document.guardar)"></textarea></form>

el codigo esta bien, pero cuando lo inserto dentro del

Código PHP:
Ver original
  1. while($row = mysql_fetch_array($q3)){

para que me aparesca el textarea en cada uno de los mensajes, al escribir el mensaje para responder salta error, este es la parte donde guarda el mensaje (esta incompleto porque es de prueba).

Código PHP:
Ver original
  1. if(isset($_POST['msg'])){
  2.  
  3. if($_POST['msg'] != ''){
  4. $name=$_SESSION['nick'];
  5. $mensaje=$_POST['msg'];
  6. $insert = mysql_query("INSERT INTO comentario(name,fecha,mensaje)
  7. values('$name',NOW(),'$mensaje')");
  8. }
  9. else {
  10. echo "error";
  11. }
  12. }

Pero si yo al textarea lo saco fuera del while me funciona.

Este es el codigo casi completo (por las dudas que pidan mas para solucionar bien el problema)

Código PHP:
Ver original
  1. <?
  2. require('conexion.php');
  3. user_login();
  4.  
  5. $name = $_GET['name'];
  6. if(!$name)
  7. {
  8.       $var="ERROR: El usuario no existe. Compruebe que la mayusculas o minisculas del usuario esten correctas.";
  9. echo "<script>alert('$var')</script>";
  10. echo "<SCRIPT LANGUAGE=javascript>window.history.go(-1)</SCRIPT>";
  11. }
  12. if(!isset($_GET['name']))
  13. {
  14.       $var="ERROR: El usuario no existe.";
  15. echo "<script>alert('$var')</script>";
  16. echo "<SCRIPT LANGUAGE=javascript> window.history.go(-1)</SCRIPT>";
  17. }else{  
  18.         $q = mysql_query("SELECT * FROM usuarios WHERE nick='".$name."'");
  19. $test = mysql_fetch_assoc($q);
  20. $id2 = $test['nick'];
  21. $id3 = $test['id'];
  22.  
  23. }
  24. if($name != $id2)
  25. {
  26.       $var="ERROR: El usuario no existe. Compruebe que la mayusculas o minisculas del usuario esten correctas.";
  27. echo "<script>alert('$var')</script>";
  28. echo "<SCRIPT LANGUAGE=javascript>window.history.go(-1)</SCRIPT>";
  29. }else{
  30. $q1 = mysql_query("SELECT * FROM comentario WHERE name='".$name."' ORDER BY id desc LIMIT 0, 10");
  31. $row = mysql_fetch_assoc($q1);
  32.  
  33. }
  34. if(isset($_POST['msg'])){
  35.  
  36. if($_POST['msg'] != ''){
  37. $name=$_SESSION['nick'];
  38. $mensaje=$_POST['msg'];
  39. $insert = mysql_query("INSERT INTO comentario(name,fecha,mensaje)
  40. values('$name',NOW(),'$mensaje')");
  41. }
  42. else {
  43. echo "error";
  44. }
  45. }
  46.  
  47. ?>
  48. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  49. <html>
  50. <head>
  51. <title>Instituto Almafuerte de Pilar</title>
  52. <meta content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
  53. </head>
  54. Hora:
  55. <script>
  56. miFecha = new Date()
  57. document.write(miFecha.getHours() + ":" + miFecha.getMinutes() + ":" + miFecha.getSeconds())
  58. </script>
  59.  
  60. <script language="javascript">
  61. function iSubmitEnter(oEvento, oFormulario){
  62.      var iAscii;
  63.  
  64.      if (oEvento.keyCode)
  65.          iAscii = oEvento.keyCode;
  66.      else if (oEvento.which)
  67.          iAscii = oEvento.which;
  68.      else
  69.          return false;
  70.  
  71.      if (iAscii == 13) oFormulario.submit();
  72.  
  73.      return true;
  74. }
  75. //-->
  76. </script>
  77. </head>
  78. <td width="90%" class="TitleColor">
  79.  <div id="contenido1">
  80. <form name="guardar" method="post" action="muro.php?name=<?=$name?>">
  81. Comparte tu estado:<br>
  82. <textarea name="comentario" wrap="off" style="width:573px; height: 50px;"  onkeypress="iSubmitEnter(event, document.guardar)"></textarea>
  83. </form>
  84. <?
  85.  
  86.  
  87. if(isset($_POST['comentario'])){
  88.  
  89. if($_POST['comentario'] != ''){
  90. $name=$_SESSION['nick'];
  91. $mensaje=$_POST['comentario'];
  92. $insert = mysql_query("INSERT INTO comentario(name,fecha,mensaje)
  93. values('$name',NOW(),'$mensaje')");
  94. }
  95. else {
  96. echo "error";
  97. }
  98. }
  99.  
  100. ?>
  101. <div align="center">
  102. <br>
  103. <hr width="200" noshade="noshade" color="#666666" />
  104. </div>
  105. <?php
  106. $q3 = mysql_query("SELECT * FROM comentario WHERE name='".$name."' ORDER BY id desc LIMIT 0, 10");
  107. while($row = mysql_fetch_array($q3)){
  108. ?>
  109. <table width="550"  border="0" cellpadding="0" cellspacing="0">
  110.   <tr>
  111.     <th width="70" align="center" scope="row" valign="top"><span class="TitleColor"><img src="/imagen_mostrar.php?idfoto=<?php
  112. $nombre = $row['name']; /* Aquedes obtener el nombre de cualquier modo */
  113. $consulta = "Select * from usuarios, tabla WHERE tabla.nombre = '$nombre' AND usuarios.nick = tabla.nombre"; /* Traducido seleccionar todos los campos de la tabla Usuarios y la tabla Foros, siempre y cuando el campo Nombre de la tabla foros tenga el valor de la variable nombre, y que el Campo Nombre de la tabla usuarios sea igual a el campo Nombre de la tabla Foro */
  114. $handler = mysql_query($consulta) or die("Error: <br>" . mysql_error()); /* Realizo la consulta y en caso de error muestro su descripci */
  115. if($handler){
  116.  $cantidad = mysql_fetch_object($handler); /* Mysql_Fetch_Object guarda en un arreglo los resultados (siempre y cuando se le especifique el campo) de la consulta que le hemos pasado por el primer parro */
  117.   if($cantidad->idfoto == null) { echo "1"; } else { echo "$cantidad->idfoto"; }
  118. }?>" height="50" width="50" /></span></th>
  119.     <td width="469" valign="top"> <strong><font color="blue"><? echo $row['name']; ?></font></strong><?  echo "<br />";  echo wordwrap($row['mensaje'], 30, "\n", 1);echo "</br>";?><font color="#CCCCCC" size="2px" ><div align="right"><? echo $row['fecha'];?>'<div id="ver_on1" style="display: block;"><a onclick="mostrar1('bloque<? echo $row['id']; ?>')" href="#">Comentar</a></div></div></font>
  120. </td>
  121.   </tr>
  122.   <tr>
  123.     <th width="70" scope="row"></th>
  124.     <td>
  125. <? $q2 = mysql_query("SELECT * FROM comentario WHERE indicador='".$row['id']."' ORDER BY id desc LIMIT 0, 10");
  126. while($exibir = mysql_fetch_array($q2)){?>
  127. <table  bgcolor="#33CC66">
  128. <tr>
  129. <th width="30" valign="top" scope="row"><img src="/imagen_mostrar.php?idfoto=<?php
  130. $nombre = $exibir['name']; /* Aquedes obtener el nombre de cualquier modo */
  131. $consulta = "Select * from usuarios, tabla WHERE tabla.nombre = '$nombre' AND usuarios.nick = tabla.nombre"; /* Traducido seleccionar todos los campos de la tabla Usuarios y la tabla Foros, siempre y cuando el campo Nombre de la tabla foros tenga el valor de la variable nombre, y que el Campo Nombre de la tabla usuarios sea igual a el campo Nombre de la tabla Foro */
  132. $handler = mysql_query($consulta) or die("Error: <br>" . mysql_error()); /* Realizo la consulta y en caso de error muestro su descripci */
  133. if($handler){
  134.  $cantidad = mysql_fetch_object($handler); /* Mysql_Fetch_Object guarda en un arreglo los resultados (siempre y cuando se le especifique el campo) de la consulta que le hemos pasado por el primer parro */
  135.   if($cantidad->idfoto == null) { echo "1"; } else { echo "$cantidad->idfoto"; }
  136. }?>" height="30" width="30" /></th>
  137. <td width="450" valign="top">
  138. <strong><font color="blue"><? echo $exibir['name']; ?></font></strong><? echo  $exibir['mensaje'];echo "</br>";?><font color="#CCCCCC" size="2px" ><div align="right"><? echo $exibir['fecha'];?></div></font>
  139. </td>
  140. </tr>
  141. </table>
  142. <?
  143. }
  144. ?>
  145. <form name="loco" method="post" action="muro.php?name=<?=$name;?>">
  146. <textarea name="msg" wrap="off" style="width:480px; height: 20px;"  onkeypress="iSubmitEnter(event, document.guardar)"></textarea>
  147. </td>
  148. </tr>
  149. </table>
  150. <hr width="550" align="left" noshade="noshade" color="#666666" />
  151. <?
  152.  
  153. }
  154.  
  155. ?>
  156. </script>
  157.  
  158. </html>


Espero que me ayuden, se los agradecere!!
  #2 (permalink)  
Antiguo 04/06/2011, 21:15
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: error en codigo php

Bueno pues no lei el codigo por flojera XD pero por lo que lei, piensas colocar en cada respuesta un textarea, si es asi cuando hayan muchos mensajes se vera feito.

yo que tu trabajara con ajax.

primero por cada respuesta que haya (me imagino que guardadas en una base de dato con id) realizas un

<div id="<?php echo $var; ?>"> </div>

y un link que diga Responder, en este link colocas una función que llame el ajax y este contendrá el textarea que se cargara en el div según su id, luego otra funcion que cargue la respuesta.

espero que entiendas este enredo jejeje yo estaba empezando a hacer uno parecido pero me aburri y no hice nada fijate http://prueba.centerhipico.com/comentario.php
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 04/06/2011, 21:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: error en codigo php

si lo se, ya se que queda feito igual ya tengo un el codigo javascript para que al apretar "comentar" salte de bajo el textarea, pero esa no es la cuestion ahora, lo que yo quiero es que me envie el mensaje, cual es el error que hay en el guion???
  #4 (permalink)  
Antiguo 05/06/2011, 12:23
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: error en codigo php

encontre la solucion, me envia el mensaje pero sucede que cuando lo envia me saltra 9 veces la palabra "error" seguido... el codigo quedo asi:

Código PHP:
Ver original
  1. if(isset($_POST['msg'])){
  2. foreach($_POST['msg'] AS $valor){
  3. if($valor != ''){
  4. $name=$_SESSION['nick'];
  5. $mensaje=$valor;
  6. $insert = mysql_query("INSERT INTO zf_wco_comments(name,fecha,mensaje)
  7. values('$name',NOW(),'$mensaje')");
  8. }
  9. else {
  10. echo "error";
  11. }
  12. }
  13. }

porque me toma 9 veces la palabra error aun asi enviando el mensaje??
  #5 (permalink)  
Antiguo 05/06/2011, 12:35
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: error en codigo php

tienes un bucle
Código PHP:
Ver original
  1. foreach($_POST['msg'] AS $valor){
no has revisado si haces un count sobre este que numero te da??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 05/06/2011, 12:48
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: error en codigo php

y cada textarea tiene asignado un nombre distinto?
y cuando le das a enviar la respuesta sabes de que textarea esta saliendo?

sino es asi por alli va la cosa
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #7 (permalink)  
Antiguo 05/06/2011, 13:30
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: error en codigo php

bueno ya lo solucionare, el problema es ahora que cuando envio la respuesta a un mensaje me la multiplica y aparece en todos los mensajes y no en el mensaje correspondiente, el tema es que esta basado en ids y dentro de un while, osea el codigo es asi:

Código PHP:
Ver original
  1. $indicador=$row['id'];
  2.  
  3. if(isset($_POST['msg'])){
  4. foreach($_POST['msg'] AS $valor){
  5.  
  6. if($valor != ''){
  7. $name=$_SESSION['nick'];
  8. $mensaje=$valor;
  9. $id=$indicador;
  10. $insert = mysql_query("INSERT INTO mensajes (name,fecha,mensaje,indicador)
  11. values('$name',NOW(),'$mensaje','$id')");
  12. }
  13. else {
  14. if($valor == ''){
  15. echo "error2";
  16. echo $valor;
  17. }
  18. }
  19. }
  20. }

Esta todo dentro de un while, pero no se como hacer para que tome el resultado de la id de ese mensaje y lo guarde en la respuesta. Fijais arriba de todo esta el codigo del cuerpo donde esta el while, capas entendeis mejor... como hago para tomar esa id y guardala en la DB?

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:27.