Foros del Web » Programando para Internet » PHP »

Recuperar datos y clasificarlos

Estas en el tema de Recuperar datos y clasificarlos en el foro de PHP en Foros del Web. Quizas el nombre del post no sea el mas ajustado a mi problema, pero os lo explicaré: Me conecto... Hago consulta: Código PHP: $m_consulta = ...
  #1 (permalink)  
Antiguo 16/07/2008, 09:11
 
Fecha de Ingreso: octubre-2007
Mensajes: 35
Antigüedad: 16 años, 6 meses
Puntos: 0
Recuperar datos y clasificarlos

Quizas el nombre del post no sea el mas ajustado a mi problema, pero os lo explicaré:

Me conecto... Hago consulta:
Código PHP:
$m_consulta="SELECT marca,gastos FROM pedidos WHERE destacado=1 ORDER BY marca asc";
$m_query=mysql_query($m_consulta);
$m_rows=mysql_num_rows($m_query);
    
mysql_close();

for (
$mi=0$mi<3$mi++) {
    
$linea=mysql_fetch_array($m_query);
    
$img="<img src='".$linea['marca']."/foto_peq1.jpg' border='1'>";
    
$ma_mo=$linea['marca']."<br>".$linea['gastos'];

Si pongo un echo $linea['marca'].$linea['gastos'] Me salen los 3 distintos,
hasta ahi bien, recupera solo 3 aunque hubiera más, eso funciona perfectamente, el problema esta aqui:

Código HTML:
<table border='0' cellspacing='0' width='140'>
<tr>
<td><?php echo $img ?></td>
</tr>
<tr>
<td><font size='1'><?php echo $ma_mo ?></font></td>
</tr>
<tr>
<td><?php echo $img ?></td>
</tr>
<tr>
<td><font size='1'><?php echo $ma_mo ?></font></td>
</tr>		
<tr>
<td><?php echo $img ?></td>
</tr>
<tr>
<td><font size='1'><?php echo $ma_mo ?></font></td>
</tr>
</table> 
Me salen los 3 iguales, yo queria que fuera en le primer TD lo obtenido primero, en el segundo el segundo y en el tercero el tercero.
  #2 (permalink)  
Antiguo 16/07/2008, 09:47
 
Fecha de Ingreso: octubre-2007
Mensajes: 35
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Recuperar datos y clasificarlos

PREGUNTA TONTA:

Código PHP:
conecta();

$m_consulta="SELECT marca,gastos FROM pedidos WHERE destacado=1 ORDER BY marca asc";
$m_query=mysql_query($m_consulta);
$m_rows=mysql_num_rows($m_query);


for (
$mi=0$mi<3$mi++) {
    
$linea=mysql_fetch_array($m_query);
    echo 
$linea['marca'];

Haciendo esto me mostraria las 3 marcas obtenidas de la consulta. Lo que no entiendo es porque muestra el echo de la linea 1 y linea 2 si no puse nada de [1] ni [2]

Es decir, el for ahi lo unico que haría es dejar de hacer el echo cuando llegase a 3, pero claro, $mi esta a 0 asique se cumple la funcion y hace el echo, luego $mi=1 se vuelve a cumplir y haria el echo, y luego $mi=2 se vuelve a cumplir y tb haría el echo, pero porque el echo no es igual en todos los casos si no hace ninguna comprobacion de lineas $num_rows ? No se si me he explicado bien, seguramente sea una pregunta tonta jaja
  #3 (permalink)  
Antiguo 16/07/2008, 09:52
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: Recuperar datos y clasificarlos

Hola multimedia007
El problema es que estas almacenando los datos en las mismas variables por eso siempre te va a mostrar el último registro de la selección; una de las maneras de correguir eso seria usando una matriz, asi:
Código PHP:
$m_consulta="SELECT marca,gastos FROM pedidos WHERE destacado=1 ORDER BY marca asc"
$m_query=mysql_query($m_consulta); 
$m_rows=mysql_num_rows($m_query); 

while(
$linea=mysql_fetch_array($m_query)){
    
$img[]="<img src='".$linea['marca']."/foto_peq1.jpg' border='1'>"
    
$ma_mo[]=$linea['marca']."<br>".$linea['gastos']; 

y luego para mostrarlos:
Código HTML:
<table border='0' cellspacing='0' width='140'>
<tr>
<td><?php echo $img[0] ?></td>
</tr>
<tr>
<td><font size='1'><?php echo $ma_mo[0] ?></font></td>
</tr>
<tr>
<td><?php echo $img[1] ?></td>
</tr>
<tr>
<td><font size='1'><?php echo $ma_mo[1] ?></font></td>
</tr>        
<tr>
<td><?php echo $img[2] ?></td>
</tr>
<tr>
<td><font size='1'><?php echo $ma_mo[2] ?></font></td>
</tr>
</table> 
Salud2
__________________


Última edición por gerson; 16/07/2008 a las 09:58
  #4 (permalink)  
Antiguo 16/07/2008, 10:04
 
Fecha de Ingreso: octubre-2007
Mensajes: 35
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Recuperar datos y clasificarlos

He arreglado un poco la cosa:

Código PHP:
for ($mi=0$mi<3$mi++) {
    
$linea=mysql_fetch_array($m_query);
    
$dato[$mi]=$linea['marca'];

}
    echo 
$dato[0];
    echo 
$dato[1];
    echo 
$dato[2]; 
Asi $dato[0] me coje la primera, dato 1 la segunda y asi sucesivamente, lo que sigo sin entender es lo de $dato[$mi] ya que el for metera siempre $linea['marca'] al $dato[0] al $dato[1] y al $dato[2] pero porque no mete siempre el mismo valor si es $linea['marca'] y no $linea[1]['marca']. No se si me explico
  #5 (permalink)  
Antiguo 16/07/2008, 10:16
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: Recuperar datos y clasificarlos

Es porque estas usando de forma incorrecta mysql_fecth_array
Código PHP:
for ($mi=0$mi<3$mi++) { 
    
$linea=mysql_fetch_array($m_query); 
    
$dato[$mi]=$linea['marca']; 


deberia ser
Código PHP:
while ($linea=mysql_fetch_array($m_query)){
    
$dato[]=$linea['marca']; 


Ahora si quieres controlar la cantidad de registros a mostrar pues usa LIMIT en tu sentencia SQL
Código PHP:
$m_consulta="SELECT marca,gastos FROM pedidos WHERE destacado=1 ORDER BY marca asc LIMIT 3"
__________________

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:24.