Foros del Web » Programando para Internet » PHP »

error en consulta!!

Estas en el tema de error en consulta!! en el foro de PHP en Foros del Web. Buenas noches, Les cuento que aun no me ha salido lo que ya he estado preguntando, el tema es que no puedo agarrar la id ...
  #1 (permalink)  
Antiguo 10/06/2011, 23:14
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
error en consulta!!

Buenas noches,
Les cuento que aun no me ha salido lo que ya he estado preguntando, el tema es que no puedo agarrar la id dentro del while y guardarla en la base de datos, el codigo es el siguiente, lo he resumido para que no se haga largo:


Aca esta el while, donde aparecen los mensajes de las personas que publican en un libro de notas puse que me de solo la id para abreviar...

Código PHP:
Ver original
  1. $SQL = mysql_query("SELECT * FROM mensajes WHERE name='".$name."' AND indicador=0 ORDER BY id desc LIMIT 0, 10");
  2.  
  3. while($row = mysql_fetch_array($SQL)) {
  4.    echo $row['id'];
  5.    $id = $row['id'];
  6. }

Luego tengo el codigo donde hago una respuesta:

Código HTML:
Ver original
  1. <form name="form1" method="post" action="notas.php?name=<?=$name;?>">
  2.       <textarea name="msg[]" style="width:480px; height: 20px;" onkeypress="iSubmitEnter(event, document.form1);">
  3. </form>

y por ultimo el codigo que al apretar ENTER (para enviar) se realize la consulta:

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

Pero al guardarse en la base de datos la id me la toma como el primer numero de toda la lista de los mensajes, yo quiero saber como se hace, cual es el codigo, si puede ser mejor en PHP (por que me manejo mejor en PHP) para que me tome la id del mensaje al que respondo. El textarea aparece en cada uno de los comentarios.

Desde ya gracias a los que me puedan ayudar!!
  #2 (permalink)  
Antiguo 10/06/2011, 23:18
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 9 meses
Puntos: 641
Respuesta: error en consulta!!

no puedes hacerlo así, tienes que tomar el id de cuando imprimes los comentarios, te lo habia explicado antes y sigues con lo mismo U.U
  #3 (permalink)  
Antiguo 11/06/2011, 08:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: error en consulta!!

pues lo tomo del while, porque de otra forma no puedo, le hago una variable pero me toma siempre el ultimo numero, tambien hise un echo para probar y me da ese resultado... los comentarios aparecen como deben pero en la respuesta me toma la ultima id de los comentarios en la lista intente hacer lo que me habias dicho pero no me salio.
  #4 (permalink)  
Antiguo 11/06/2011, 09:22
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 9 meses
Puntos: 641
Respuesta: error en consulta!!

a ver seré tu guia en esto :)

cuando tu imprimes tus comentarios en tu noticia ¿como lo haces?

¿lo haces con un ciclo que te muestre todos los comentarios que correspondan al id de la noticia?


dberia ser algo así

Código PHP:
Ver original
  1. <?php
  2. //seleccionamos todos los comentario que tengan el id de la noticia tal
  3. $sql = 'SELECT * FROM comentarios WHERE id_noticia = $id_noticia';
  4. $res = mysql_query($sql,$con);
  5.  
  6. //recorro con un while los resultados por ser vario
  7. while($reg = mysql_fetch_array($res)){
  8. //el texto del comentario
  9.     echo $reg['texto_comentario'];
  10. //el id lo imprimes aqui, puedes ocultarlo o ponerlo en el link de respuesta
  11.     echo $reg['id_comentario'];
  12. //asi sería en un link donde ponemos el id del comentario a responder
  13.     echo "<a href=\"responder.php?id=".$reg['id_comentario'].">responder este comentario</a>";
  14. }?>

de ahi con esos datos del link puedes mandar a un form o de ahi mismo con javascript para generar un miniform con textarea y el hidden con el id del comentario.

ya en responder.php

deberia ser un simple

Código PHP:
Ver original
  1. <?php
  2. //recibes por post los valores
  3. $texto = $_POST['valor'];
  4. $id = $_POST['valor2'];
  5. $sql = 'INSERT INTO `tu_bd`.`resp_comentarios` (`id`, `texto`, `id_coment`, `usuario`) VALUES (NULL, '.$texto.', '.$id.', "Helmfrid")';
  6. $res = mysql_query($sql, $con);
  7. ?>

a ver si te aclaro algo

notesé que use una tabla para los comentarios y otra para las respuestas de estos.
  #5 (permalink)  
Antiguo 11/06/2011, 10:56
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: error en consulta!!

Entiendo lo que decis, de esa forma la se pero el formulario y el while esta todo en una pagina, yo quiero que este en la misma, tengo un boton donde apreto comentar y salta debajo el textarea mediante javascript, pero todo en una sola pagina lo tengo y lo quiero.

Tambien intente hacer un GET para tomar la id al enviarse el formulario del enlace pero como tengo un GET aparte que toma otra cosa entonces no me agarra, porque es "notas.php?name=helmfrid".

Espero que me entiendas un poco a que me refiero.
  #6 (permalink)  
Antiguo 11/06/2011, 11:06
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 9 meses
Puntos: 641
Respuesta: error en consulta!!

lo unico que te estoy diciendo es como tomar el dichoso id de tu comentario, si pones esos dos códigos que te di en archivos diferentes o en uno mismo es cuestión tuya, pero para conseguir el id del comentario es simplemente de la misma consulta con la que imprimes el texto.

solo respondete esto:

¿para que haces un ciclo que inserta una sola consulta?

¿por que el name del textarea es msg[]?

¿es un array? no lo creo, eso se suele utilizar en los checkbox
  #7 (permalink)  
Antiguo 11/06/2011, 11:12
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: error en consulta!!

y lo del GET también se puede hacer si lo haces así:

notas.php?name=helmfrid&id=$variablequellevaelid

y la tomas por get

$id = $_GET['variablequellevaelid'];
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #8 (permalink)  
Antiguo 11/06/2011, 12:53
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: error en consulta!!

Cita:
Iniciado por memoadian Ver Mensaje
¿por que el name del textarea es msg[]?

¿es un array? no lo creo, eso se suele utilizar en los checkbox
Bueno el tema es que si no pongo msg[] no me toma el mensaje no me lo guarda, en cambio si lo pongo si pero menos la id, lo que me toma mal en todo es la id, menos cuando muestra los mensajes.


Tambien me toma 1 al poner action="notas.php?name=<?=$name;?>&var=<?=$id;?>" la variable $id proviene de $id=$row['id'];


No se porque me toma 1, aun asi me toma 1

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 07:11.