Avatar billede cot Nybegynder
29. januar 2008 - 20:55 Der er 3 kommentarer og
1 løsning

Image problem

Hej, jeg skal have lavet et kort, ud fra nogle koordinater, som jeg har i en database, grundkoden ser således ud:

<?php

    // aid of the highlighted Alliance
    $marked_aid = 2;
   
    // Preferences
    $mysqlhost = 'localhost';
    $mysqluser = '***';
    $mysqlpass = '***';
    $mysqldb = 'traviannews_dk';
   
    // Create database connection and select database
    $db = @mysql_connect($mysqlhost, $mysqluser, $mysqlpass) OR die('Can not connect to DB-Server!');
    $db_select = @mysql_select_db($mysqldb) OR die('Can not select DB!');
   
    // Create image: Map goes from -400 to 400
    // -> sums up tp 2*400+1 (+1 due to the 0 in the center)
    $image = imagecreate(801, 801);
   
    // Choose the colors of background, normal village and highlighted alliance
    $color_background = imagecolorallocate($image, 255, 255, 255);
    $color_normal = imagecolorallocate($image, 200, 200, 200);
    $color_marked = imagecolorallocate($image, 255, 0, 0);

    // Fill images background with chosen color
    imagefill($image, 0, 0, $color_background);

    // Select ALL villages from the DB and order by ascending ID
    // (Fields are numbered from top left to bottom right)
    $query = 'SELECT x, y, uid FROM brugere ORDER BY uid ASC';
    $result = @mysql_query($query) OR die('Can not select villages from table x_world!');
   
    // Check whether there any villages at all
    if (mysql_num_rows($result)) {
       
        // Select first village
        $row = @mysql_fetch_assoc($result);
       
        // These variables save the location on which we are currently drawing
        $x_pointer = 0;
        $y_pointer = 0;
       
        // Outer loop for the Y-coordinates
        for($y = 400; $y >= -400; $y--) {
       
            // Inner loop for the X-coordinates
            for ($x = -400; $x <= 400; $x++) {
               
                // Once we reached the coordinates matching the current record selected from the DB:
                if ($row['x'] == $x AND $row['y'] == $y) {
                   
                    // Selecting the village color depending on the aid
                    if ($row['aid'] == $marked_aid) {
                        $color = $color_marked;
                    } else {
                        $color = $color_normal;
                    }
                   
                    // Drawing the village with the selected color
                    imagefilledrectangle($image, $x_pointer, $y_pointer, ($x_pointer + 1), ($y_pointer + 1), $color);
                   
                    // Select next record
                    $row = @mysql_fetch_assoc($result);
                }
               
                // Increase pointer for X-coordinate
                $x_pointer++;
            }
           
            // Increase pointer for Y-coordinate
            $y_pointer++;
           
            // We reached the end of a line and have to set the X-pointer to 0 again
            $x_pointer = 0;
        }   
    }
   
    // Select the HTTP-Header for the selected filetype
header("Content-Type: image/png");
   
    // Generate image and print it
imagepng($image);

?>

Problemer er at den bare viser en hvid side, med et hvidt billede, som er 801 * 801 px...

Håber i kan finde fejeln..
Avatar billede jakobdo Ekspert
30. januar 2008 - 20:35 #1
Jeg tror du skal starte med at teste om din SQL giver dig det output du forventer!
Hvis den gør det, så test om det indsættes korrekt.
Lad noget debug, udskriv data undervejs og vent med at lave et billede til sidst.
Avatar billede cot Nybegynder
07. februar 2008 - 22:04 #2
lukker
Avatar billede jakobdo Ekspert
07. februar 2008 - 22:08 #3
Hvad blev din løsning?
Avatar billede cot Nybegynder
08. februar 2008 - 19:18 #4
Ingen droppede det...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester