Foros del Web » Programando para Internet » PHP »

solo un select mySQL

Estas en el tema de solo un select mySQL en el foro de PHP en Foros del Web. Hola, tengo una tabla, y en cada <tr> hago un select con un while, para que me saque la lista.... Como lo podria hacer para ...
  #1 (permalink)  
Antiguo 12/06/2009, 02:33
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 7 meses
Puntos: 1
solo un select mySQL

Hola, tengo una tabla, y en cada <tr> hago un select con un while, para que me saque la lista....

Como lo podria hacer para que me ponga solo un select con un while...

He probadoa ponerle
Código PHP:
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd"$link);
while(
$listabd_1=mysql_fetch_array($listabd)){
$nombre_servidor_bd=$listabd_1['nombre_servidor'];
$bd_en_bd=listabd_1['bd_en'];
$nombre_bd_bd=listabd_1['nombre_bd'];

Pero claro, asi s olo me coge el ultimo campo de cada uno de ellos, no me muestra todos.

Hos enseño parte del codigo ya que es muy largo.
Código PHP:
echo'<table border=1 cellpadding=0 cellspacing=0>
    <tr bgcolor=#FFFFFF>
    </tr><tr><td bgcolor=#FFFFFF><strong>&nbsp;Descripción de B.D.&nbsp;&nbsp;</td>'
;
    
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd"$link);
    while(
$listabd_1=mysql_fetch_array($listabd)){
$color_a="bgcolor=#d8fc80";
if(
$color==$color_a)
$color="bgcolor=#ffec6e"; }
else
$color="bgcolor=#d8fc80"; }
    echo 
'<td ',$color,'>&nbsp;'.$listabd_1['descripcion_bd'],'&nbsp;</td>';
     }       
echo
'</tr><tr><td bgcolor=#FFFFFF><strong>&nbsp;Nombre Servidor&nbsp;</td>';
    
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd"$link);
    while(
$listabd_1=mysql_fetch_array($listabd)){
$color_a1="bgcolor=#d8fc80";
if(
$color1==$color_a1)
$color1="bgcolor=#ffec6e"; }
else
$color1="bgcolor=#d8fc80"; }
    echo 
'<td ',$color1,'>&nbsp;'.$listabd_1['nombre_servidor'],'&nbsp;</td>';
     }
echo
'</tr><tr><td bgcolor=#FFFFFF><strong>&nbsp;B.D en&nbsp;</td>';
    
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd"$link);
    while(
$listabd_1=mysql_fetch_array($listabd)){
$color_a2="bgcolor=#d8fc80";
if(
$color2==$color_a2)
$color2="bgcolor=#ffec6e"; }
else
$color2="bgcolor=#d8fc80"; }
    echo 
'<td ',$color2,'>&nbsp;'.$listabd_1['bd_en'],'&nbsp;</td>';
     }
echo
'</tr><tr><td bgcolor=#FFFFFF><strong>&nbsp;Nombre B.D.&nbsp;</td>';
    
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd"$link);
    while(
$listabd_1=mysql_fetch_array($listabd)){
$color_a3="bgcolor=#d8fc80";
if(
$color3==$color_a3)
$color3="bgcolor=#ffec6e"; }
else
$color3="bgcolor=#d8fc80"; }
    echo 
'<td ',$color3,'>&nbsp;'.$listabd_1['nombre_bd'],'&nbsp;</td>';
     }
echo
'</tr>'

Última edición por davicito; 12/06/2009 a las 06:15
  #2 (permalink)  
Antiguo 12/06/2009, 06:49
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 3 meses
Puntos: 139
Respuesta: solo un select mySQL

A ver si entendi.

Código Php / html:
Ver original
  1. <?php
  2. $listabd = mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd", $link)
  3. or die(mysql_error());
  4. $color = true;
  5. ?>
  6. <table cellpadding="0" cellspacing="0" border="0">
  7. <tbody>
  8.  
  9.  
  10.  <?php while($listabd_1 = mysql_fetch_array($listabd)){
  11.  if($color)
  12.  {
  13.  $color2 = "#ffec6e";
  14.  $color = false;
  15.  }
  16.  else
  17.  {
  18.  $color2 = "#d8fc80";
  19.  $color = true;
  20.  }
  21.  
  22.   ?>
  23.  
  24. <tr>
  25. <td bgcolor="<?php echo $color2; ?>"><?php echo $listabd_1["bd_en"]; ?></td>
  26. <td bgcolor="<?php echo $color2; ?>"><?php echo $listabd_1["descripcion_bd"]; ?></td>
  27. <td bgcolor="<?php echo $color2; ?>"><?php echo $listabd_1["nombre_servidor"]; ?></td>
  28. <td bgcolor="<?php echo $color2; ?>"><?php echo $listabd_1["nombre_servidor"]; ?></td>
  29. </tr>
  30.  
  31. <?php } ?>
  32.  
  33.  
  34. </tbody>
  35. </table>
  #3 (permalink)  
Antiguo 12/06/2009, 07:14
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: solo un select mySQL

Perdonad si soy un poco antipatico, pero, por lo visto, davicito, tiene un pequeño problema a la hora de entender los ciclos (while, for...) ya que espera que en cada ciclo while, se 'sume' a la variable todos los resultados.

Yo, en estos casos, antes de dar el codigo mascadito, intentaria explicarle el fallo. Ojo, no digo que este bien o mal el codigo que ha puesto gjx2, sino, que lo suyo, seria explicar primero por que no funciona, y luego, en todo caso, dar el codigo.

davicito, el fallo que tienes es sencillo, dentro del ciclo while, estas sobreescribiendo el valor de las variables con los resultados de la consulta, el codigo, esta bien, pero es un fallo de diseño, ya que no imprimes el resultado de la consulta de cada registro, sino que lo asignas a una variable, por eso siempre te sale el ultimo registro de la consulta, si dentro del while, en lugar de hacer la asignacion, haces un echo (un print o lo que sea, es decir, muestras el dato del registro) entonces te mostrara todos los registros, y no solo el ultimo.

Espero que entiendas donde tenias el fallo, antes de copiar/pegar el codigo, que repito, no lo he mirado y no se si estara bien o mal.


Saludos y perdon por lo extenso del post.
  #4 (permalink)  
Antiguo 12/06/2009, 07:47
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: solo un select mySQL

Ya ya, eso ya lo se... Un ejemplo...


<table>
<tr><td>Fecha</td><td
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd", $link);
while($listabd_1=mysql_fetch_array($listabd)){
$nombre_servidor_bd=$listabd_1['nombre_servidor'];
}
</td></tr>
<tr><td>Nombre</td><td>
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd", $link);
while($listabd_1=mysql_fetch_array($listabd)){
echo $listabd_1['nombre_BD];
}
</td></tr>
</table>

No queiro hacer 2 select con 2 while...
Lo qeu me gustaria es acerlo en uno.... por eso lo de la variable y leugo mandarla a otro lado. pero siempr eme coge el ultimo valor...

Última edición por davicito; 12/06/2009 a las 07:57
  #5 (permalink)  
Antiguo 12/06/2009, 08:25
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: solo un select mySQL

Cita:
Iniciado por davicito Ver Mensaje
Ya ya, eso ya lo se... Un ejemplo...


<table>
<tr><td>Fecha</td><td
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd", $link);
while($listabd_1=mysql_fetch_array($listabd)){
$nombre_servidor_bd=$listabd_1['nombre_servidor'];
}
</td></tr>
<tr><td>Nombre</td><td>
$listabd=mysql_query("select * from soft_bd WHERE codigo_empresa like '$codigo' order by nombre_bd", $link);
while($listabd_1=mysql_fetch_array($listabd)){
echo $listabd_1['nombre_BD];
}
</td></tr>
</table>

No queiro hacer 2 select con 2 while...
Lo qeu me gustaria es acerlo en uno.... por eso lo de la variable y leugo mandarla a otro lado. pero siempr eme coge el ultimo valor...
es que no es necesario dos while, simplemente cierras la etiqueta php, escribes el </td>..... y donde pones el segundo while, abres de nuevo el tag php y escribes solamente lo de echo $listabd_1['nombre_BD'];

espero que lo entiendas....



PD: No contesto MP para este tipo de cosas.
  #6 (permalink)  
Antiguo 12/06/2009, 08:30
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: solo un select mySQL

asi lo que hago es repetir <tr><td>Nombre</td><td> tantas veces que el select de la base de datos...
  #7 (permalink)  
Antiguo 12/06/2009, 09:08
 
Fecha de Ingreso: mayo-2006
Mensajes: 58
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: solo un select mySQL

El query lo haces una vez, y el while también lo haces una vez, después en cada <td> escribes la variable $listabd_1 cambiando el nombre del campo según lo vayas ocupando:

Código:
<tr>
<td>Nombre</td>
<td>Fecha</td>
</tr>
<?php
$query = mysql_query("select * tabla where...");
while($listabd_1 = mysql_fetch_array($query)){
?>
<tr>
<td><?php echo $listabd_1['nombre']; ?> </td>
<td><?php echo $listabd_1['fecha']; ?></td>
</tr>
}
Es solo el ejemplo, pero creo que como dijo DooBie, debes poner atención en la forma en que manejas los ciclos, o la forma de utilizarlos.

Salu2
  #8 (permalink)  
Antiguo 06/08/2009, 11:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: solo un select mySQL

¿Probaste el codigo que te indico fagos08?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 21:25.