Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema while, for e mysql_fetch_array

    Ciao a tutti,

    ho un database strutturato così:

    X, Y, type, subtype

    e questo codice:

    Codice PHP:
    <?php
        
        $user_xcoord 
    $_GET['xcoord'];
        
    $user_ycoord $_GET['ycoord'];

    $user_xcoord_min $user_xcoord 2;
    $user_xcoord_max $user_xcoord 2;
    $user_ycoord_min $user_ycoord 2;
    $user_ycoord_max $user_ycoord 2;

        
    $query "SELECT * FROM world_map WHERE (x_coord BETWEEN $user_xcoord_min AND $user_xcoord_max) AND (y_coord BETWEEN $user_ycoord_min AND $user_ycoord_max)";
        
    $result mysql_query($query);
        
    ?>

    <?php

    while ($row=mysql_fetch_array($result)) {

        
        
        for (
    $k 2$k >= -2$k--)
        {
        for (
    $j = -2$j <= 2$j++)
        {
            
    $st_x = ($k 2) * 40 + ($j 2) * 40;
            
    $st_y = ($k) * 20 + ($j 2) * 20;
    ?>
            <img style='position:absolute;left:<?php echo $st_x?>px;top:<?php echo $st_y?>px;width:80px;height:80px;' src='images/<?php echo $row['type'] . $row['subtype']; ?>.png'>
    <?php
        
    }
        }
    }
    ?>
    Il problema è che mi restituisce oltre 600 righe (quando mi dovrebbe restituire solo 25) perché specifico tutto con questo:

    Codice PHP:

    $user_xcoord_min 
    $user_xcoord 2;
    $user_xcoord_max $user_xcoord 2;
    $user_ycoord_min $user_ycoord 2;
    $user_ycoord_max $user_ycoord 2;

        
    $query "SELECT * FROM world_map WHERE (x_coord BETWEEN $user_xcoord_min AND $user_xcoord_max) AND (y_coord BETWEEN $user_ycoord_min AND $user_ycoord_max)";
        
    $result mysql_query($query); 
    se metto solo i FOR non c'è il problema, (però non posso 'conoscere' i type) se metto solo il while funziona (però non posso modificare LEFT e TOP)

    in cosa sbaglio? GRAZIE!

  2. #2
    Avresti 25 righe se il risultato della query sia un solo record, ma non credo.
    i 2 for annidati ti generano 25 righe per ogni record.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Grazie per aver individuato l'errore, ma come faccio a risolverlo? Giusto la teoria, il codice lo scrivo io

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    togli i 2 for altrimenti ottini 25 (gia selezionati con la query) *25 ( con i for) = 625 righe

  5. #5
    Ma a me servono quei for, mi aggiungono, 40 e 20 a left e top, senza di quelli, le immagini sono sovrapposte .-.

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    fai così

    Codice PHP:
    <?php 
    $k 
    2;
    $j = -3;
    while (
    $row=mysql_fetch_array($result)) { 
       
      if( 
    $j <= 2)
         {
            
    $j++;
         }
         else
         {
            
    $j=-2;
            
    $k--;
         }
         
            
    $st_x = ($k 2) * 40 + ($j 2) * 40
            
    $st_y = ($k) * 20 + ($j 2) * 20
    ?> 
            <img style='position:absolute;left:<?php echo $st_x?>px;top:<?php echo $st_y?>px;width:80px;height:80px;' src='images/<?php echo $row['type'] . $row['subtype']; ?>.png'> 
    <?php 

    ?>

  7. #7
    Grazie mille! Anche se la forma della mappa è strana XD

    Edit:

    Ho risolto mettendo:

    Codice PHP:
    $k 3
    $j 3
    while (
    $row=mysql_fetch_array($result)) {  
        
      if( 
    $j <= 0
         { 
            
    $j++; 
         } 
         else 
         { 
            
    $j=-3
            
    $k--; 
         } 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.