Foros del Web » Programando para Internet » PHP »

como utilizar bien el while?

Estas en el tema de como utilizar bien el while? en el foro de PHP en Foros del Web. Buenas tardes, pues el problema es el siguiente, mediante un script y checo algunos datos en una BD,mientras existen datos con la sentencia while hago ...
  #1 (permalink)  
Antiguo 14/04/2009, 12:43
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
como utilizar bien el while?

Buenas tardes, pues el problema es el siguiente, mediante un script y checo algunos datos en una BD,mientras existen datos con la sentencia while hago que vaya imprimiendo los datos, de manera local sale bien, solo muestra los resultados reales.
Sin embargo al subirlo ya al servidor y checar este proceso, el while me imprime de 2 a tres veces cada registro de la BD, y no se a que se deba.

Ya intente poner algunos parametros para evitar la repeticion de los valores, sin embargo cuando realizo esto no me iomprime ningun valor .
Código PHP:
<?php
session_start
();
$_SESSION['usuario'];
$_SESSION['nivel'];
$_SESSION['nickname'];
$con=pg_connect("host=127.0.0.1 port=5432 user=japones password=j4p0n35 dbname=japones");
    if (!
$con)
    {
        echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Error al conectarse a la Base de datos.</p>
                        </body>
                    </html>"
;
    }
    else
    {
        if (isset(
$_POST['cuenta']))
        {
            if (empty(
$_POST['cuenta']))
            {
                echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Debe llenar el campo de Número de cuenta.</p>
                        </body>
                    </html>"
;
            }
            else
            {
                
$cuenta=$_POST['cuenta'];
                
$sql="SELECT usuario, calificacion, usuario FROM renshu1 WHERE usuario='$cuenta'";
                
$query=pg_query($sql);
                
$detalle=pg_query($sql);// **uso de otro query
                
$show=pg_fetch_array($query);
                
                if (
pg_num_rows($query)!=0)
                {
                    if (
$show!=0)
                    {
                    echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Calificaciones de la Unidad 1.</p>
                            <center>
                            <table class='table'>
                                <tr>
                                    <td class='table1'>
                                    <p class='ejemplo1'>Numero de cuenta:</p>
                                    </td>
                                            <td class='table1'>
                                                <p class='ejemplo1'>Calificación</p>
                                            </td>
                                </tr>"
;
                                while (
$show=pg_fetch_array($detalle)<= $show['calificacion'])//al poner esta restriccion no me aparece ningun dato
                                
{
                                echo 
"
                                    <tr>
                                        <td class='table1'>
                                            <p class='notas1'>"
.$show['usuario']."</p>
                                        </td>
                                                <td class='table1'>
                                                    <p class='notas1'>"
.$show['calificacion']."</p>
                                                </td>
                                    </tr>"
;
                                }
                            echo 
"    
                            </table>
                            </center>
                        </body>
                    </html>"
;
                    exit;
                    }
                    else
                    {
                    echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>El alumno aun no tiene calificación.</p>
                        </body>
                    </html>"
;
                    }
                }    
                else
                {
                    echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>El alumno no existe en el sistema.</p>
                        </body>
                    </html>"
;
                }
                
                
            }
        }
    }
?>
Bueno el uso de otro query para checar los datos en la bd hasta a mi se me hace algo malo, sin embargo si utilizo el query 'original' ($query) NO me muestra el primer registro de la BD, y al dejarlo con otro query SI muestra todos los datos.
Bueno, pues espero me puedan decir en que estoy equivocado, de antemando gracias.
Salu2!
__________________
海賊王 に なろ!

Última edición por kurokishi; 14/04/2009 a las 12:44 Razón: explicacion
  #2 (permalink)  
Antiguo 14/04/2009, 12:49
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 utilizar bien el while?

Cita:
while ($show=pg_fetch_array($detalle)<= $show['calificacion'])//al poner esta restriccion no me aparece ningun dato
primero, esa no es una "restricción" es un error de sintaxis... ya que no se permite hacer eso!!

Cita:
$query=pg_query($sql);

// todo esto esta mal!!
//
// $detalle=pg_query($sql);// **uso de otro query
// $show=pg_fetch_array($query);
// hasta aca

if (pg_num_rows($query)!=0)
{

// esto esta mal...
// if ($show!=0)
// {
//
// hasta aca....
segundo, no es necesario hacer dos query.... de veras, con una sola basta....


es muy simple todo esto, mira...

Código PHP:
$result x_query($sql);

if (
x_num_rows($result) > 0)
{
  while (
$row x_fetch_array($result))
  {
    
// ...
  
}


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/04/2009, 12:51
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 utilizar bien el while?

No entiendo lo que tratas de hacer con esto:
$show=pg_fetch_array($detalle)<= $show['calificacion']
  #4 (permalink)  
Antiguo 14/04/2009, 15:46
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: como utilizar bien el while?

Hola, pues ya hice los ajustes que me recomendarosn, y nuevamente en el servidor 'local' aparece bien los datos que se llaman de la BD, pero al momento de subirlos al servidor en el que ira de manera definitiva, los registros s er epiten 3 o 4 veces, no se a que se deba esto , si me pudieran decir a que se debe y si se puede arreglar se los agradezco, les dejo el script para que lo chequen y me digan si se puede corregir. Gracias
Código PHP:
<?php
session_start
();
$_SESSION['usuario'];
$_SESSION['nivel'];
$_SESSION['nickname'];
$con=pg_connect("host=127.0.0.1 port=5432 user=japones password=j4p0n35 dbname=japones");
    if (!
$con)
    {
        echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Error al conectarse a la Base de datos.</p>
                        </body>
                    </html>"
;
    }
    else
    {
        if (isset(
$_POST['cuenta']))
        {
            if (empty(
$_POST['cuenta']))
            {
                echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Debe llenar el campo de Número de cuenta.</p>
                        </body>
                    </html>"
;
            }
            else
            {
                
$cuenta=$_POST['cuenta'];
                
$sql="SELECT usuario, calificacion, usuario FROM renshu3 WHERE usuario='$cuenta'";
                
$query=pg_query($sql);
                    if (
pg_num_rows($query) !=0)
                    {
                    echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>Calificaciones de la Unidad 3.</p>
                            <center>
                            <table class='table'>
                                <tr>
                                    <td class='table1'>
                                    <p class='ejemplo1'>Numero de cuenta:</p>
                                    </td>
                                            <td class='table1'>
                                                <p class='ejemplo1'>Calificación</p>
                                            </td>
                                </tr>"
;
                                while (
$show=pg_fetch_array($query))
                                {
                                echo 
"
                                    <tr>
                                        <td class='table1'>
                                            <p class='notas1'>"
.$show['usuario']."</p>
                                        </td>
                                                <td class='table1'>
                                                    <p class='notas1'>"
.$show['calificacion']."</p>
                                                </td>
                                    </tr>"
;
                                }
                            echo 
"    
                            </table>
                            </center>
                        </body>
                    </html>"
;
                    exit;
                    }
                    else
                    {
                    echo 
"
                    <html>
                    <head>
                        <link href='../nihongo.css' rel='stylesheet' type='text/css'>
                    </head>
                        <body style='background-color:transparent;' oncontextmenu='return false'>
                            <p class='titulo'>El alumno aun no tiene calificación o no existe en el sistema.</p>
                        </body>
                    </html>"
;
                    }
                }
        }
    }
?>
*Como pateketrueke lo puse como mayor a cero pero sigue igual, lo cambie a diferente a cero pero sigue lo mismo.
Salu2!
__________________
海賊王 に なろ!
  #5 (permalink)  
Antiguo 14/04/2009, 16:01
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 utilizar bien el while?

simplemente, si salen mas registros.... es porque hay mas registros!!

osea... PHP no inventa nada, ni repite por arte de magia...

(viendo el código, esta perfecto...)


revisa tu base de datos remota, con phpMyAdmin y descubrelo por ti mismo....


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 14/04/2009, 16:59
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: como utilizar bien el while?

Hola, pues por que sera que al subir la bd al servidor se duplicaran los registros?
Ya estuve checando los registros en mi BD local y esta bien, pero al ver los registros de la BD en el servidor remoto si se repiten, no se a que se deba, pero entonces ya trabajare sobre la BD del servidor remoto para arreglar esto. Gracias!
Salu2!
__________________
海賊王 に なろ!
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:08.