Foros del Web » Programando para Internet » PHP »

Problema con comparacion de datos

Estas en el tema de Problema con comparacion de datos en el foro de PHP en Foros del Web. Tengo el siguiente codigo que realiza una consulta a mi base de datos, el resultado de la misma se muestra en una tabla y el ...
  #1 (permalink)  
Antiguo 27/05/2003, 11:49
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Problema con comparacion de datos

Tengo el siguiente codigo que realiza una consulta a mi base de datos, el resultado de la misma se muestra en una tabla y el primer campo de cada fila tiene un <href que llama a otra pagina y guarda la informacion del campo en una variable de session y retorna a la primera pagina para realizar nuebamente la consulta y cambiar de color la fila seleccionada.
El problema es que no me funciona la comparacion de la variable al querer pintar de otro color la fila seleccionada.
Por ejemplo este es el codigo.

AdmTbl_tablas.php
Código PHP:
<?php
 session_start
();
 echo 
$num_cql;
?>
<html>
<head>
<?php
 $conn 
odbc_connect($_Server$_user$_passw); 
 
$query "select * from mibase.onl_$nom_tabla";     
 
 
$result odbc_exec($conn$query) or die('Select failed!');      
 
standard_table($result);

 Function 
standard_table($result,$class='') {
    if (
$class == '') {
       
$css_table ' border=1';
       
$css_tr '';
       
$css_th '';
       
$css_td ''
    }
    else {
       
$css_table ' class=\"$class\"';
       
$css_tr ' class=\"$class\"';
       
$css_th ' class=\"$class\"';
       
$css_td ' class=\"$class\"'
    }

    
$i 0
    
$fCount odbc_num_fields($result); 
    echo 
"<table $css_table width=100% align=center><tr>";
         
    while (
$i $fCount) { 
       
$i++; 
       
$fName odbc_field_name($result$i); 
       echo 
"<th bgcolor='#66FFFF'>$fName</th>"
    } 
    echo 
"</tr>";
    
$fCount odbc_num_fields($result); 
    
    while (
odbc_fetch_row($result)) {
?>
   <TR onmouseover="this.className='celda2'" onmouseout="this.className='celda1'" class="celda1">
<?

   $i 
0
   while (
$i $fCount) { 
      
$i++; 
      
$fName odbc_field_name($result$i); 

      
$recno_selected odbc_result($result1); 
      
$job[$fName] = odbc_result($result$i); 
      
      if( 
$fName == "CQL_RECNO" ) {    
// ok      if( $recno_selected == 352) {
        
if( $recno_selected == $_Tbl_recno) {
          echo 
"<td bgcolor='#66FFFF'><font size='1' face='Arial'><a href=admtbl_recno.php?cql_recno=$job[$fName]>$job[$fName]</A></td>"
         }
         else {
         echo 
"<td ><font size='1' face='Arial'><a href=admtbl_recno.php?cql_recno=$job[$fName]>$job[$fName]</A></td>"
          }
        }
        else {
        if( 
$recno_selected == $_Tbl_recno ) {
// ok      if( $recno_selected == 352) {
          
echo "<td bgcolor='#66FFFF'><font size='1' face='Arial'>$job[$fName]</td>"
         }
        else {
          echo 
"<td ><font size='1' face='Arial'>$job[$fName]</td>"
        }
       }
     }   
// Cierra el While del $fCount . . . . 
     
echo "</tr>";
     
$i 0
   }    
// Cierra el While del odbc_fetch_row . . . . 
   
echo "</table>";
 }      
// End Function standard_table . . . .

?>

</body>
<br>
Si utilizo if( $recno_selected == 352) { anda bien cambia de color la fila si utilizo una variable $_Tbl_recno en el lugar del numero no me cambia de color la fila.
Cabe decir que $_Tbl_recno es el cql_recno (id) de la base de datos que es un integer.

admtbl_recno.php
Código PHP:
<?php

  session_start
();
  
$_Tbl_recno $cql_recno;

echo 
"<script language = 'javascript'>location.href='http://$_Server_Web/$_AppsPath/PaneldeControl/MenuAdmin/AdmTbl/AdmTbl_tablas.php';</script>";

?>
Desde ya muchas gracias y saludos a todos.
  #2 (permalink)  
Antiguo 27/05/2003, 13:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Se supone que en:
admtbl_recno.php .. estas guardando en la sesión activa la variable?

Si es así .. NO estas registrando nada en la sesión ..

O usa session_register("nombre de tu variable") para registrarla o mejor aún usa $_SESSION para registrar y leer las variables de sesión .. pues por ejemplo así es un lío ver tu código y no saber que variabels son de Sesión .. o cuales le entran por "GET o POST" o si usases cookies con respecto a las própias variables locales del script ..

Hechale un vistazo a las FAQ's de este foro . .ahí se habla de todos estos temas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 27/05/2003, 13:44
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias Cluster
Pero queria comentarte que la variable $_Tbl_recno ya esta registrada en la session, en una pagina anterior en la cual el usuario ingresa,
y esta registrada con valor 0

Por ejemplo
logonadm.php
Código PHP:
<?
. . . 
$_Tbl_recno 0;
session_register("_Tbl_recno");
. . .
. . .
?>
cuando llega a AdmTbl_tablas.php por primera vez la variable tiene valor = 0

AdmTbl_tablas.php 
<?
. . . 
echo 
$_Tbl_recno // la primera vez vale 0(cero)
. . . 
echo 
"<td bgcolor='#66FFFF'><font size='1' face='Arial'><a href=admtbl_recno.php?cql_recno=$job[$fName]>$job[$fName]</A></td>"
// cuando llama a esta pagina cambia el valor de la variable por  el valor seleccionado y retorna a AdmTbl_tablas.php 
. . . 
?>
AdmTbl_recno.php 

<?php
  session_start
();
  
$_Tbl_recno $cql_recno;

echo 
"<script language = 'javascript'>location.href='http://$_Server_Web/$_AppsPath/PaneldeControl/MenuAdmin/AdmTbl/AdmTbl_tablas.php';</script>";
?>
AdmTbl_tablas.php 
<?
. . . 
echo 
$_Tbl_recno // al retornar a este punto el valor de la variable cambio. 
?>
Pero el tema es que no me funciona la comparacion.
Si utilizo if( $recno_selected == 352) { anda bien cambia de color la fila si utilizo una variable $_Tbl_recno en el lugar del numero no me cambia de color la fila.
Cabe decir que $_Tbl_recno es el cql_recno (id) de la base de datos que es un integer.

Bueno desde ya muchas gracias y un saludo
  #4 (permalink)  
Antiguo 27/05/2003, 13:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Entonces .. la variable de sesión te llega correctamente al script donde la usas con su nuevo valor cuando lo modificas?


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 27/05/2003, 14:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El problema esta en que te encuentras dentro de una funcion. Dentro de una funcion solo puedes hacer referencia a las variables declaradas dentro de la funcion. Las variables de sesion estan declaradas a nivel global, que, apesar del nombre, no son accesibles desde dentro de una funcion. Para poder acceder a una variable global desde dentro de una funcion debes declararla dentro de la funcion con el constructor global. En tu caso seria algo como:
Código PHP:
 Function standard_table($result,$class='') {
global 
$_Tbl_recno
Mas sobre el ambito de las variables http://www.php.net/manual/en/languag...bles.scope.php

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 27/05/2003, 16:54
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Gracias josemi funciono perfectamente, igualmente gracias a cluster saludos
  #7 (permalink)  
Antiguo 27/05/2003, 21:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, .. no me percaté del detalle de que estaba en una función ...

Si usaeses $_SESSION para leer y registrar las variables de sesión te evitarías hacer global $variablesesion .. pues ese tipo de arrays ya son "super-globales" ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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:06.