Foros del Web » Programando para Internet » PHP »

Como evitar hacer la consulta dos veces...

Estas en el tema de Como evitar hacer la consulta dos veces... en el foro de PHP en Foros del Web. Hola gente tengo el siguiente problema Código PHP: $consultatv = $administrador -> getCanalesTV ();      $mostrar = true ;     while( $row  =  mysql_fetch_array ( $consultatv ...
  #1 (permalink)  
Antiguo 17/05/2009, 13:02
 
Fecha de Ingreso: junio-2008
Mensajes: 119
Antigüedad: 15 años, 10 meses
Puntos: 1
Como evitar hacer la consulta dos veces...

Hola gente tengo el siguiente problema

Código PHP:
$consultatv=$administrador->getCanalesTV();
    
$mostrar=true;
    while(
$row mysql_fetch_array($consultatv))
    {
        if (
$_GET['canal']==$row['nombre'])
        {
            
$mostrar=false;
            break;
        }
    }
    if (
$mostrar==true)
    {
        echo 
$comun->recuadro('Inicio');
        echo 
"<h2>error al buscar canal</h2>";
        echo 
$comun->recuadro('Final');
    }
    else
    {
        while(
$row mysql_fetch_array($consultatv))
        {
            switch(
$_GET['canal'])
            {
                case 
$row['nombre']:
                echo 
$comun->recuadro('Inicio');
                echo 
'<h2>'.$row["nombreCabezera"].'</h2>';
                echo 
$varclass->opcion($row['code'],$row['embeb'],5);
                echo 
$comun->recuadro('Final');
                break;

             } 
El problema es que al llegar al segundo while, no me genera nada, Se limpia la variable $consultatv o que onda??...
La unica solucion que encontre es hacer dos consultas pero es medio ineficiente por que es la misma

Código PHP:
$consultatv=$administrador->getCanalesTV();
$consultatv2=$administrador->getCanalesTV();
    
$mostrar=true;
    while(
$row mysql_fetch_array($consultatv))
    {
        if (
$_GET['canal']==$row['nombre'])
        {
            
$mostrar=false;
            break;
        }
    }
    if (
$mostrar==true)
    {
        echo 
$comun->recuadro('Inicio');
        echo 
"<h2>error al buscar canal</h2>";
        echo 
$comun->recuadro('Final');
    }
    else
    {
        while(
$row mysql_fetch_array($consultatv2))
        {
            switch(
$_GET['canal'])
            {
                case 
$row['nombre']:
                echo 
$comun->recuadro('Inicio');
                echo 
'<h2>'.$row["nombreCabezera"].'</h2>';
                echo 
$varclass->opcion($row['code'],$row['embeb'],5);
                echo 
$comun->recuadro('Final');
                break;

             } 
Algun experto a estas horas de la siesta el domingo???
  #2 (permalink)  
Antiguo 17/05/2009, 13:04
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Como evitar hacer la consulta dos veces...

Haz revisado que en realidad el codigo entra a la condicion, haz un echo justo despues del else, antes del while.
  #3 (permalink)  
Antiguo 17/05/2009, 13:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Como evitar hacer la consulta dos veces...

no es que se "limpie" la consulta, ese es el comportamiento de mysql_fetch_*

ya que va moviendo el puntero, si deseas recuperar el puntero... debes usar las funciones de seeking para reiniciar el puntero del query
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 17/05/2009, 13:19
 
Fecha de Ingreso: junio-2008
Mensajes: 119
Antigüedad: 15 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Como evitar hacer la consulta dos veces...

Cita:
Iniciado por pateketrueke Ver Mensaje
no es que se "limpie" la consulta, ese es el comportamiento de mysql_fetch_*

ya que va moviendo el puntero, si deseas recuperar el puntero... debes usar las funciones de seeking para reiniciar el puntero del query
mmmm... mucho quilombo, pero igual es un select con 20 tuplas como mucho... Pero gracias por la info...
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 14:36.