FAQ
Hola,

tengo una tabla que representa un mapa de 100x100 casillas.
Lo que tengo que hacer es imprimir un trozo de esta tabla de 15x15. El torzo
lo selecciona el usuario indicando que esta por ejemplo en la casilla x=10
y=25.

Como puedo hacer un SELECT que solo coja el trozo que iria de:

"x-7" a "x+7" y de "y-7" a "y+7" (haciendo asi un recuadro de 15x15 con la
casilal que escogio el usuario en el centro)

Yo hice:
SELECT * FROM mapa LIMIT ".$usuario_y.",15

Con esto consigo un rango de las 15 columnas pero me coge todas las filas,
como conseguiria limitar tambien las 15 filas.

Gracias

Search Discussions

  • Antonio Salom at Jun 11, 2001 at 11:59 am
    Si tienes una tabla en BBDD con los siguientes atributos:
    pos_x
    pos_y
    mas información

    Donde cada registro representa una casilla, puedes hacer:

    select * from mapa where pos_x>='".$min_x."' and pos_x<='".$max_x."' and
    pos_y>='".$min_y."' and pos_y<='".$max_y."' order by pos_x,pos_y

    Recuerda que una tabla BBDD no tiene orden y te puede retornar las filas como
    quiera. Si no le pones order by, con el limit te podría retornar distintas
    filas, aunque la información sea la misma.

    El Lun 11 Jun 2001 11:28, xavi escribiste:
    Hola,

    tengo una tabla que representa un mapa de 100x100 casillas.
    Lo que tengo que hacer es imprimir un trozo de esta tabla de 15x15. El
    torzo lo selecciona el usuario indicando que esta por ejemplo en la casilla
    x=10 y=25.

    Como puedo hacer un SELECT que solo coja el trozo que iria de:

    "x-7" a "x+7" y de "y-7" a "y+7" (haciendo asi un recuadro de 15x15 con la
    casilal que escogio el usuario en el centro)

    Yo hice:
    SELECT * FROM mapa LIMIT ".$usuario_y.",15

    Con esto consigo un rango de las 15 columnas pero me coge todas las filas,
    como conseguiria limitar tambien las 15 filas.

    Gracias


    ---------------------------------------------------------------------
    Archivo On-line: http://www.phpes.com/
    Manual PHP en español: http://www.php.net/manual/es/
    Para dar de baja la suscripción, mande un mensaje a:
    lista-unsubscribe@phpes.com
    --
    Antonio Salom Palliser
  • Carlos Falo Hervás at Jun 11, 2001 at 12:35 pm
    -----Mensaje original-----
    De: xavi
    Enviado el: lunes, 11 de junio de 2001 11:28
    Para: Llista PHPes
    Asunto: [PHP-ES] Coger rangos dentro una BBDD


    Hola,

    tengo una tabla que representa un mapa de 100x100 casillas.
    Lo que tengo que hacer es imprimir un trozo de esta tabla de 15x15. El torzo
    lo selecciona el usuario indicando que esta por ejemplo en la casilla x=10
    y=25.

    Como puedo hacer un SELECT que solo coja el trozo que iria de:

    "x-7" a "x+7" y de "y-7" a "y+7" (haciendo asi un recuadro de 15x15 con la
    casilal que escogio el usuario en el centro)

    Yo hice:
    SELECT * FROM mapa LIMIT ".$usuario_y.",15

    Con esto consigo un rango de las 15 columnas pero me coge todas las filas,
    como conseguiria limitar tambien las 15 filas.

    Gracias

    Si dispones de buenos nombres de columnas (p.e. a,b,c o algo que pueda ser
    correlativo de alguna forma... cola,colb,colc... no se si me explico) puedes
    montar el select mas o menos así...

    $sql = "SELECT " :
    for ([inicio-del-rango];[pos<inicio-del-rango + 15];[pos++]) {
    $sql = $sql . [idcolumna] ;
    if ([pos<inicio-del-rango+14]) $sql=$sql . ", " ;
    }
    $sql = $sql . " FROM mapa LIMIT " . $usuario_y . ",15" ;

    No se si me he explicado demasiado bien... eso es mas pseudocódigo que
    codigo "usable" pero creo que la idea se pilla mas o menos...

    Slàinte
  • Àngel Fenoy at Jun 11, 2001 at 1:11 pm

    Dilluns 11 Juny 2001 11:28, xavi dixit:
    Hola,

    tengo una tabla que representa un mapa de 100x100 casillas.
    Lo que tengo que hacer es imprimir un trozo de esta tabla de 15x15. El
    torzo lo selecciona el usuario indicando que esta por ejemplo en la casilla
    x=10 y=25.

    Como puedo hacer un SELECT que solo coja el trozo que iria de:

    "x-7" a "x+7" y de "y-7" a "y+7" (haciendo asi un recuadro de 15x15 con la
    casilal que escogio el usuario en el centro)

    Yo hice:
    SELECT * FROM mapa LIMIT ".$usuario_y.",15

    Con esto consigo un rango de las 15 columnas pero me coge todas las filas,
    como conseguiria limitar tambien las 15 filas.
    Si te he entendido bién, confundes filas y columnas. Las columnas se
    corresponden con los campos de una tabla, las filas se corresponden con los
    registros. Suponiendo que quieras las columnas 10 hasta la 24 y las filas 35
    hasta la 49, y suponiendo también que los 100 campos de tu tabla se llamen
    col1, col2...col100, el select debería ser algo así:

    Select col10,col11,col12...col24 from mapa limit 35,15;

    Aunque seguramente será más fácil hacer:

    select * from mapa limit 35,15;

    Y ya desde php usar únicamente los campos 10 al 24.

    Saludos
    Àngel

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedJun 11, '01 at 9:24a
activeJun 11, '01 at 1:11p
posts4
users4
websitephp.net

People

Translate

site design / logo © 2022 Grokbase