Foros del Web » Programando para Internet » PHP »

revision por favor

Estas en el tema de revision por favor en el foro de PHP en Foros del Web. holas a todos, tengo un error en este codigo y juro q lo he revisado mil veces y nada, podria alguien hecharle un ojito y ...
  #1 (permalink)  
Antiguo 14/06/2006, 10:51
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 1 mes
Puntos: 10
revision por favor

holas a todos,

tengo un error en este codigo y juro q lo he revisado mil veces y nada, podria alguien hecharle un ojito y ayudarme:

el query esta bien (lo pobre en el manejador),
cuando imprimo el query me sale todo bien
cuando imprimo $result me da su respectivo valor

pero $row esta enblanco y por eso no entra al if... peor no entiendo porq esta vacio si result tiene su respectivo valor... ya no se q hacer, no veo el error...

Código PHP:
<?
//Declaracion y optencion de vaiables

$contrato=$_POST['contrato'];
$fecha_del=$_POST['fecha_del'];
$fecha_al=$_POST['fecha_al'];

include(
"Conectarse1.php");
$conn=Conectarse1();

$query "SELECT cedula, fecha, SUM(horas) AS horastotales, contrato FROM maestro WHERE contrato = '$contrato' AND Fecha BETWEEN '$fecha_del' AND '$fecha_al' GROUP BY cedula, fecha, contrato";

$result=pg_Exec($conn,$query);


if (
$row=pg_fetch_array($result))

{

echo
"<TABLE width='700' BORDER=5 CELLPADDING=1 CELLSPACING=1 bordercolor='#003399'>";

echo
"  <tr><td><div align='center'><span class='style1'><strong>Cedula</strong></span></div></td><td><div align='center'><span class='style1'><strong>Horas</strong></span></div></td><td><div align='center'><span class='style1'><strong>Fecha</strong></span></div></td></tr>";

do
 {
 
printf("<tr><td><div align='center'><span class='style3'>%s</span></div></td><td><div align='center'><span class='style3'>%s</span></div></td><td><div align='center'><span class='style3'>%s</span></div></td></tr>",$row["cedula"], $row["horas"], $row["fecha"]); 

 }
 while(
$row=pg_fetch_array($result));
 
 echo
"  </TABLE>";
 }
 else 
{
echo 
"<div align='center'><h4 class='style5'>&iexcl; No se ha encontrado ning&uacute;n Contrato !</h4></div>"
}

pg_close($conn);


 
?>
gracias
__________________
.-._.-. [email protected]._.-.
  #2 (permalink)  
Antiguo 14/06/2006, 11:00
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Lo que podrias hacer es hacer uso de pg_num_rows() para verficar si tienes resultados
Código PHP:
<?
.
.
.
$query "SELECT cedula, fecha, SUM(horas) AS horastotales, contrato FROM maestro WHERE contrato = '$contrato' AND Fecha BETWEEN '$fecha_del' AND '$fecha_al' GROUP BY cedula, fecha, contrato"

$result=pg_Exec($conn,$query); 
$num pg_num_rows($result);

if(
$num >0)
{
.
.
.
?>
Saludillos.
  #3 (permalink)  
Antiguo 14/06/2006, 11:40
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 1 mes
Puntos: 10
no nada...
me estoy volviendo loca....
__________________
.-._.-. [email protected]._.-.
  #4 (permalink)  
Antiguo 14/06/2006, 11:47
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Lo que puedes haces es checar si no esta ocurriendo algun error conpg_last_error()

Código PHP:
<?
$query 
"SELECT cedula, fecha, SUM(horas) AS horastotales, contrato FROM maestro WHERE contrato = '$contrato' AND Fecha BETWEEN '$fecha_del' AND '$fecha_al' GROUP BY cedula, fecha, contrato";  

$result=pg_Exec($conn,$query);  

echo 
pg_last_error($conn );
?>
  #5 (permalink)  
Antiguo 14/06/2006, 11:55
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 1 mes
Puntos: 10
no me sale nada... no imprime nada
__________________
.-._.-. [email protected]._.-.
  #6 (permalink)  
Antiguo 14/06/2006, 12:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No deberías hacer esto:

Código PHP:
if ($row=pg_fetch_array($result)) 
para luego volver a usar pg_fethc_array($result)

Las funciones _fetch_ (sea de PostgreSQL o de Msyql o de lo que sea) lo que hacen es obtener el primero resultado (registro que se obtenga) y mover el puntero al siguiente resultado. Si tu tienes sólo un registro de resultado en esa consulta SQL no veras nada en tu while($row=pg_fetch_array($result)) pues ya estás en el 2° resultado (que no existe) .. o nunca veras el primero en caso de más resultados.

Como comenta mauled debes usar pg_num_rows() para contar el n° de registros de resultado que te podría arrojar tu consulta SQL y de ahí .. si es mayor que 0 (cero) .. ejecutar tu While($row=pg_fetch_array($result)) ..

Código PHP:
$num pg_num_rows($result); 

if(
$num >0

echo
"<TABLE width='700' BORDER=5 CELLPADDING=1 CELLSPACING=1 bordercolor='#003399'>"

echo
"  <tr><td><div align='center'><span class='style1'><strong>Cedula</strong></span></div></td><td><div align='center'><span class='style1'><strong>Horas</strong></span></div></td><td><div align='center'><span class='style1'><strong>Fecha</strong></span></div></td></tr>"

do 
 { 
 
printf("<tr><td><div align='center'><span class='style3'>%s</span></div></td><td><div align='center'><span class='style3'>%s</span></div></td><td><div align='center'><span class='style3'>%s</span></div></td></tr>",$row["cedula"], $row["horas"], $row["fecha"]);  

 } 
 while(
$row=pg_fetch_array($result)); 
  
 echo
"  </TABLE>"
 } 
 else  

echo 
"<div align='center'><h4 class='style5'>&iexcl; No se ha encontrado ning&uacute;n Contrato !</h4></div>";  

Puedes hacer un echo a $num y ver que tantos registros devuelve tu consulta SQL.

Por otro lado .. el uso que haces de printf() no es el mejor .. ¿por qué no usas un simple echo y vas concatenando?:

Código PHP:
echo "<htm.....> ......".$row['vaiable']."<mas tag html> ....".$row['variable']; 
O mejor todavía para que veas como te queda tu código HTML si usas un editor de HTML visual tipo Dreamweaver .. "abre" y "cierra" PHP donde lo uses sólo:

Código PHP:
?>
<html .....><? echo $row['variable'?><más html tag's> ..... <? echo $row['variable'?>
<?
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 14/06/2006, 12:55
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 19 años, 1 mes
Puntos: 10
bueno chicos gracias por su ayuda, y aunq no era nada de lo q me dijeron lo voy a tomar en cuenta... para mejorar mi codigo..

el problema lo tenia con las fechas (la estupides mas grande del mundo, pero bueno asi soy yo )...

estaba guardando las fecha asi 06/06/2006
y cuando hacia la consulta la estaba buscando asi: 6/6/2006, ya lo solucione y ya fuciona, gracias por todos los comentarios son muy utiles tambien... besos a todos...
__________________
.-._.-. [email protected]._.-.
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:32.