Foros del Web » Programando para Internet » PHP »

Socorro! No me aclaro con while

Estas en el tema de Socorro! No me aclaro con while en el foro de PHP en Foros del Web. Hola, soy nuevo por aquí y tambien soy nuevo en php (vamos que casi me suena a chino). Tengo el siguiente problema: Necesito hacer una ...
  #1 (permalink)  
Antiguo 22/02/2008, 18:05
 
Fecha de Ingreso: febrero-2008
Mensajes: 35
Antigüedad: 16 años, 2 meses
Puntos: 0
Socorro! No me aclaro con while

Hola, soy nuevo por aquí y tambien soy nuevo en php (vamos que casi me suena a chino).
Tengo el siguiente problema:
Necesito hacer una consulta a una bd a un valor con tres estados posibles (tres fechas, fecha1, fecha2, fecha3) y extraer e imprimir siempre el ultimo valor (fecha3). La cuestión es que mirando codigo y tal, he conseguido mediante una consulta y un bucle imprimir (en un pdf) las fechas, pero las imprime las tres una sobre otra, while recorre todos los estados posibles y al imprimir lo que tengo es un "borrón"; no se como hacer para que solo se imprima la ultima fecha y ya estoy desesperado, mas que nada por la urgencia que tengo de solucionar esto.

No quiero ser mas pesado, os estaría agradecido si me decís como puedo solucionar esto. Seguido pongo el código que tengo:
Código PHP:
    $statuses_query tep_db_query("select os.orders_status_name, osh.date_added, osh.comments from " TABLE_ORDERS_STATUS " os, " TABLE_ORDERS_STATUS_HISTORY " osh where osh.orders_id = '" . (int)$HTTP_GET_VARS['order_id'] . "' and osh.orders_status_id = os.orders_status_id and os.language_id = '" . (int)$languages_id "' order by osh.date_added"); 
    while (
$statuses tep_db_fetch_array($statuses_query)) { 
    
$pdf->Text(60,118tep_html_entity_decode(PRINT_DATE1) . tep_date_short($statuses['date_added'])); 

Gracias de antemano y un saludo.
  #2 (permalink)  
Antiguo 22/02/2008, 21:10
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Socorro! No me aclaro con while

Pues no uses while...
Código PHP:
$statuses tep_db_fetch_array($statuses_query);
echo 
$statuses['campo_fecha_3']; 
Con eso bastaria, segun lo que entendi...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #3 (permalink)  
Antiguo 24/02/2008, 13:05
 
Fecha de Ingreso: febrero-2008
Mensajes: 35
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Socorro! No me aclaro con while

Cita:
Iniciado por Bellenger Ver Mensaje
Pues no uses while...
Código PHP:
$statuses tep_db_fetch_array($statuses_query);
echo 
$statuses['campo_fecha_3']; 
Con eso bastaria, segun lo que entendi...
campo_fecha_3? no se el nombre de campo_fecha_3; como dije antes soy casi nulo en php.
Intentaré explicarlo de otra forma.
codigo:
Código PHP:
<?php
  $statuses_query 
tep_db_query("select os.orders_status_name, osh.date_added, osh.comments from " TABLE_ORDERS_STATUS " os, " " osh where osh.orders_id = '" . (int)$HTTP_GET_VARS['order_id'] . "' and osh.orders_status_id = os.orders_status_id and os.language_id = '" . (int)$languages_id "' order by osh.date_added");
  while (
$statuses tep_db_fetch_array($statuses_query)) {
    echo 
'              <tr>' "\n" .
         
'                <td class="main" valign="top" width="70">' tep_date_short($statuses['date_added']) . '</td>' "\n" .
         
'                <td class="main" valign="top" width="70">' $statuses['orders_status_name'] . '</td>' "\n" .
         
'                <td class="main" valign="top">' . (empty($statuses['comments']) ? '&nbsp;' nl2br(tep_output_string_protected($statuses['comments']))) . '</td>' "\n" .
         
'              </tr>' "\n";
  }
?>
Bien, este codigo lo he copiado de un archivo que tengo en otro sitio y lo que hace es que saca los estados posibles del orders y los muestra con sus nombres y fecha correspondiente a cada uno. Lo que yo quiero es pasar esto mismo a un pdf que tengo, pero poniendo solamente la fecha (sin nombre ni nada) correspondiente al ultimo estado.
Hasta ahora, con el codigo que he puesto en el primer post, lo unico que he conseguido es poner las fechas correspondientes a todos los estados sobreescritas una sobre la otra; pero ese codigo es una deducción muy simple partiendo de este ultimo y yo no se ir mas allá, de hecho hoy estoy ya "emborrachao" y "empanao" de php sin consguir nada.

No se tampoco si está suficientemente explicado, pero como dije antes toda ayuda será bien recibida.

Un saludo.
  #4 (permalink)  
Antiguo 24/02/2008, 14:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 35
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Socorro! No me aclaro con while (Asunto Resuelto)

Eureka!!!!!!
Pues así es Bellenger por ahí andaba la solución, era cuestión de exprimir un poco la materia grís y no perderse en un código que no conoces, casi siempre las cosas son más fáciles de lo que parecen.

Solución:
Código PHP:
        $delivered_query tep_db_query("select last_modified from " TABLE_ORDERS " where orders_id='" . (int)$_GET['order_id'] . "' and orders_status='3'");
        
$delivered_status tep_db_fetch_array($delivered_query);
        if (!
tep_db_num_rows($delivered_query)){
        } else {
    
$pdf->Text(60,118tep_html_entity_decode(PRINT_INVOICE_DATE1) . tep_date_short($delivered_status['last_modified']));      

Gracias por tu ayuda Bellenger.

Saludos.
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 20:35.