elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] mostrar mas de un registro de base de datos mysql en textarea
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] mostrar mas de un registro de base de datos mysql en textarea  (Leído 3,436 veces)
demonstrator

Desconectado Desconectado

Mensajes: 19


Ver Perfil
[Resuelto] mostrar mas de un registro de base de datos mysql en textarea
« en: 7 Abril 2015, 18:18 pm »

Saludos googleando y buscando por todos lados no he podido dar con el clavo respecto al problema que aparece cuando trato de mostrar los registros resultados de una consulta a una bd mysql, lo que sucede que trato de mostrar los registros en un textarea pero solo aparece 1 ya revise la consulta y en realidad si saca mas de un registro pero por alguna razon solo muestra 1 les pongo el codigo con la situacion aqui descrita:

primero tengo unos registros  en base de datos asi:

material   fecha                    usuario   cantidad         vence
pluma   23/03/2015 10:55   luis             0               23/03/2015 10:55
pluma   26/03/2015 09:35   angel           1               26/03/2015 09:35
pluma   26/03/2015 09:43   jaime           1               26/03/2015 09:43
pluma   27/03/2015 08:23   martin          1               27/03/2015 08:25
lapiz   28/03/2015 11:52   jaime              1               28/03/2015 11:52
lapiz   31/03/2015 15:37   angel            1               31/03/2015 25:37

con las siguientes inustrucciones en javascript me traigo los valores en un array de otro php llamado checkitemdetailsx.php en realidad solo me traigo 1 ya que estoy haciendo pruebas con ese campo en especifico y le asigno ese valor a una variable llamada mode:

Código
  1. $("#item").blur(function()
  2. {
  3. $.post('checkitemdetailsx.php', {material1: $(this).val() },
  4. function(data){
  5.  
  6. $('#mode').val(data.mode);
  7. }, 'json');
  8. });
  9. mode=document.getElementById('mode').value;

Este es el php del cual saco el campo con el codigo javascript, aqui realizo una consulta a mysql y paso los datos, bueno el array con la columna completa de valores del campo "usuario":

Código
  1. <?php
  2. include_once("init.php");
  3.  
  4. $sql="SELECT *  FROM salidas WHERE material='".$_POST['material1']."'  ";
  5. $result = mysql_query($sql);
  6. while($row = mysql_fetch_array($result))
  7. {
  8. $nombreusuario=$row['usuario'];
  9.  
  10. }
  11.  
  12. if($nombreusuario!=NULL)
  13. {
  14.  
  15. $arr = array ( "mode"=>$nombreusuario);
  16. echo json_encode($arr);
  17.  
  18. }
  19. else
  20. {
  21. $arr1 = array ("no"=>"no");
  22. echo json_encode($arr1);
  23.  
  24. }
  25. ?>
Y aqui esta la parte del html que consta de un input text que al escribirle el nombre de un articulo y desseleccionar dicho input ejecuta el proceso de consulta y asignacion de valores a la variable mode y con el id de mode asignado a un textarea paso ese valor a dicho textarea:
Código
  1. <td><input name=""  type="text" id="item"  maxlength="200"  class="round default-width-input " style="width: 150px"   /></td>
  2. <td><textarea name=""  id="mode" readonly="readonly"   class="round  my_with ac_input" style="width:100px;height:100px;"  /></textarea></td>

Hasta aqui todo funciona de maravilla el problema es que cuando yo hago la consulta manualmente en mysql el resultado son varios registros no 1 solo, y eso precisamente (1 solo registro) es lo que me esta mostrando el textarea en este punto ya he hecho muchas pruebas y no he dado con la solucion asi que les pido amablemente su ayuda no soy muy diestro con esto del javascrypt que es donde sospecho pudiera estar el problema en la parte de la asignacion de la variable mode, o en ultima instancia que el textarea no tenga la posibilidad de mostrar mas de un registro por que cuando ejecuto el php en el navegador reemplazando la variable de entrada del input text item por un valor fijo este se ejecuta y muestra todos los registros mediante un echo correctamente asi que en el php no podria ser el problema como sea quedo en atencion a sus comentarios


« Última modificación: 8 Abril 2015, 17:08 pm por #!drvy » En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: mostrar mas de un registro de base de datos mysql en textarea
« Respuesta #1 en: 7 Abril 2015, 18:34 pm »

Estás seguro de que ejecutando el php te devuelve todos los registros?
Según esto:
Código
  1. while($row = mysql_fetch_array($result))
  2. {
  3. $nombreusuario=$row['usuario'];
  4.  
  5. }
Solo tendría que mostrar el último usuario que cumple el query.


« Última modificación: 7 Abril 2015, 18:55 pm por T. Collins » En línea

demonstrator

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: mostrar mas de un registro de base de datos mysql en textarea
« Respuesta #2 en: 7 Abril 2015, 19:34 pm »

Estás seguro de que ejecutando el php te devuelve todos los registros?
Según esto:
Código
  1. while($row = mysql_fetch_array($result))
  2. {
  3. $nombreusuario=$row['usuario'];
  4.  
  5. }
Solo tendría que mostrar el último usuario que cumple el query.

Saludos y gracias por tu atencion, ya habia verificado esta parte y si en efecto solo pasa el ultimo valor se me paso mencionar eso pero al hacer el listado de dichos valores en el while debo incluir dentro del while el guardado de los valores en el array y asi al ejecutar el php checkitemdetailsx.php en el navegador si muestra todos los registros pero en el text area ya no aparece nada. Cuando hago la prueba con el valor insertado desde el input text cambié la parte del while asi por ejemplo:

Código
  1. <?php
  2. include_once("init.php");
  3.  
  4. $sql="SELECT *  FROM salidas WHERE material='".$_POST['material1']."'  ";
  5. $result = mysql_query($sql);
  6. while($row = mysql_fetch_array($result))
  7. {
  8. $nombreusuario=$row['usuario'];
  9.  
  10.  
  11.  
  12. if($nombreusuario!=NULL)
  13. {
  14.  
  15. $arr = array ( "mode"=>$nombreusuario);
  16. echo json_encode($arr);
  17.  
  18. }
  19. else
  20. {
  21. $arr1 = array ("no"=>"no");
  22. echo json_encode($arr1);
  23.  
  24. }}//aqui le cambie el cerrado de llave al bucle while
  25. ?>

en pantalla esto muestra:
Código
  1. {"mode":"luis"}{"mode":"angel"}{"mode":"jaime"}{"mode":"martin"}
pero en el textarea no aparece nada cual podria ser la falla?
« Última modificación: 7 Abril 2015, 19:41 pm por demonstrator » En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: mostrar mas de un registro de base de datos mysql en textarea
« Respuesta #3 en: 7 Abril 2015, 19:49 pm »

Ese JSON no es válido porque tienes más de un objeto.

Puedes arreglarlo así:
Código
  1. while($row = mysql_fetch_array($result))
  2. {
  3. $nombreusuario .= $row['usuario'];
  4. }

Para que mode sea un string con todos los usuarios.

O así para que sea un array:
Código
  1. while($row = mysql_fetch_array($result))
  2. {
  3. $nombreusuario[] = $row['usuario'];
  4. }

Para este último tienes que cambiar el javascript:
Código
  1. $('#mode').val(data.mode[0]);

Ese sería el primer elemento del array, puedes poner un for para imprimirlos todos.
« Última modificación: 7 Abril 2015, 19:51 pm por T. Collins » En línea

demonstrator

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: mostrar mas de un registro de base de datos mysql en textarea
« Respuesta #4 en: 7 Abril 2015, 22:13 pm »

Ese JSON no es válido porque tienes más de un objeto.

Puedes arreglarlo así:
Código
  1. while($row = mysql_fetch_array($result))
  2. {
  3. $nombreusuario .= $row['usuario'];
  4. }

Para que mode sea un string con todos los usuarios.

O así para que sea un array:
Código
  1. while($row = mysql_fetch_array($result))
  2. {
  3. $nombreusuario[] = $row['usuario'];
  4. }

Para este último tienes que cambiar el javascript:
Código
  1. $('#mode').val(data.mode[0]);

Ese sería el primer elemento del array, puedes poner un for para imprimirlos todos.

Ok funciono perfecto nada mas en la parte de pasarlo como un array me dio un problema en la parte de:
Código
  1. $('#mode').val(data.mode[0]);
lo deje como:
Código
  1. $('#mode').val(data.mode);
y sin el for igual cargo los registros pero igual gracias con esto ya puedo continuar dandole
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Registro de usuarios sin base de datos MYSQL « 1 2 3 »
PHP
neopuerta360 26 22,695 Último mensaje 22 Mayo 2021, 01:11 am
por jacarvy
Problema Al Mostrar Datos De Base De Datos
Java
ZedGe 2 1,893 Último mensaje 31 Julio 2012, 21:23 pm
por reylagarto19
popup!, mostrar datos, guardados en la base de datos!
Desarrollo Web
01munrra 4 4,857 Último mensaje 22 Septiembre 2012, 00:56 am
por 01munrra
Conectar base de datos MySql y mostrar consultas
Programación Visual Basic
sergio98 2 1,421 Último mensaje 6 Julio 2014, 02:06 am
por jopela
[AYUDA][RESUELTO] Base de datos ASN de ips
Desarrollo Web
LaThortilla (Effort) 0 963 Último mensaje 14 Marzo 2015, 17:52 pm
por LaThortilla (Effort)
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines