Eli minulla on sijainnit.txt tiedosto, johon käyttäjä voi netin kautta lisätä nimensä ja x ja y koordinaattinsa. Sitten minulla on samassa koodissa muunnin, joka muuttaa jo koordinaatit oikein, kun kerran php:n koordinaatiston 0,0 piste on ylänurkassa ja itse halusin sen pisteeseen 500, 500.
Mutta ongelma on nyt, että miten saan generoitua tuosta sijainnit.txt tiedostosta tai sijainti taulukosta nuo lukuarvot piirturille, niin että se piirtäisi niistä sitten koordinaatiston jossa olisi sitten kaikki lisätyt käyttäjät ja heidän sijaintinsa oikeilla etäisyyksillä toisistaan. Ja että se päivittyisi aina kun joku tuonne uuden sijainnin lisää.
Olen aloittelija php:n saralla ja jos yritän tehdä mitä tahansa tuolle kuvanpiirtokoodille, se herjaa että kuvaa ei voida piirtää, koska on virheitä.
Parasta olisi jos tuon kuvan saisi sitten tulemaan suoraan samalle sivulle, noiden lisäyssysteemien ja koordinaattilistan alle.
Mutta toki sen aukeaminen eri sivullekin kelpaa paremmin kuin hyvin.
Kiitos jo etukäteen avustanne.
Alla tämän hetkinen add.php koodini.
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="get"> Nimi:<br> <input type="text" name="nimi"><br> x-koordinaatti:<br> <input type="text" name="x"><br> y-koordinaatti:<br> <input type="text" name="y"><br> <input type="submit" name="painike" value="Lähetä"> </form> <?php define("SIJAINTI_FILE", "sijainti.txt"); // viesti if(isset($_GET['painike'])) { if (!$fp = @fopen(SIJAINTI_FILE, "a+")) { echo ("Tiedoston avaamisessa tapahtui virhe!"); exit(); } //Kirjoitetaan sijainnit muistiin fwrite($fp, "{$_GET['nimi']}\t"); fwrite($fp, "{$_GET['x']}\t"); fwrite($fp, "{$_GET['y']}<br>\n"); fclose($fp); } ?> <h3 style="border-top: solid thin black; color:#000;background-color:#eee"> Sijainnit</h3> <?php // @include(SIJAINTI_FILE) ?> <pre> <?php $sijainti_taulukko = file("sijainti.txt"); foreach($sijainti_taulukko as $rivinro => $rivin_sisalto){ $sarakkeet = split("\t", $rivin_sisalto); $nimi = $sarakkeet[0]; $x = $sarakkeet[1]*10+500; $y = 500-10*$sarakkeet[2]; echo ("$rivinro,2,$x,$y,$nimi\n"); } //print_r($sijainti_taulukko); ?>
ja sitten piirturini tämän hetkinen koodi
<?php //lähetetään tunniste selaimelle header("Content-type: image/png"); //luodaan 1000x1000-pikselin kokoinen kuva $kuva=imagecreate(1000,1000); //määritetään taustaväri ja kaksi muuta väriä $tausta=imagecolorallocate($kuva, 255, 255, 255); $musta=imagecolorallocate($kuva,0,0,0); $sininen=imagecolorallocate($kuva,0,0,255); //piirretään pystyviivat imageline($kuva,100,0,100,1000,$musta); imageline($kuva,200,0,200,1000,$musta); imageline($kuva,300,0,300,1000,$musta); imageline($kuva,400,0,400,1000,$musta); imageline($kuva,500,0,500,1000,$musta); imageline($kuva,600,0,600,1000,$musta); imageline($kuva,700,0,700,1000,$musta); imageline($kuva,800,0,800,1000,$musta); imageline($kuva,900,0,900,1000,$musta); //piirretään vaakaviivat imageline($kuva,0,100,1000,100,$musta); imageline($kuva,0,200,1000,200,$musta); imageline($kuva,0,300,1000,300,$musta); imageline($kuva,0,400,1000,400,$musta); imageline($kuva,0,500,1000,500,$musta); imageline($kuva,0,600,1000,600,$musta); imageline($kuva,0,700,1000,700,$musta); imageline($kuva,0,800,1000,800,$musta); imageline($kuva,0,900,1000,900,$musta); //piirretään kehys imagerectangle($kuva,0,0,999,999,$musta); //piirretään origo imagestring($kuva,2,505,505,"origo!",$sininen); //piirretään sijainnit //imagestring($kuva,2, $x,$y,"$nimi!",$sininen); //TODO: Selvittää miten saan muuttujia tiedostosta kuvaan //lähetetään kuva PNG-muodossa imagepng($kuva); //poistetaan kuva muistista imagedestroy($kuva); ?>
Mod. edit: kooditagit
Moi!
Et selvästikään ollut kovin kaukana oikeasta (?) ratkaisusta, joten pastean vain koodia :P
Opiskele.
<?php //image.php //lähetetään tunniste selaimelle header("Content-type: image/png"); //luodaan 1000x1000-pikselin kokoinen kuva $kuva=@imagecreate(1000,1000) or die("Cannot Initialize new GD image stream");s; //määritetään taustaväri ja kaksi muuta väriä $tausta=imagecolorallocate($kuva, 255, 255, 255); $musta=imagecolorallocate($kuva,0,0,0); $sininen=imagecolorallocate($kuva,0,0,255); //piirretään pystyviivat for($x=1; $x<=9; $x++) { imageline($kuva,$x*100,0,$x*100,1000,$musta); } //piirretään vaakaviivat for($y=1; $y<=9; $y++) { imageline($kuva,0,$y*100,1000,$y*100,$musta); } //piirretään kehys imagerectangle($kuva,0,0,999,999,$musta); //piirretään origo imagestring($kuva,2,505,505,"origo!",$sininen); $tiedosto = file("sijainti.txt"); foreach($tiedosto as $rivi) { //hae nimi sekä koordinaatit muuttujiin $sarakkeet = split("\t", $rivi); $nimi = $sarakkeet[0]; $x = $sarakkeet[1]+500; $y = $sarakkeet[2]+500; imagestring($kuva,2, $x,$y,$nimi.'!',$sininen); } //lähetetään kuva PNG-muodossa imagepng($kuva); //poistetaan kuva muistista imagedestroy($kuva); ?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="get"> Nimi:<br> <input type="text" name="nimi"><br> x-koordinaatti:<br> <input type="text" name="x"><br> y-koordinaatti:<br> <input type="text" name="y"><br> <input type="submit" name="painike" value="Lähetä"> </form> <?php define("SIJAINTI_FILE", "sijainti.txt"); // viesti if(isset($_GET['painike'])) { if (!$fp = @fopen(SIJAINTI_FILE, "a+")) { echo ("Tiedoston avaamisessa tapahtui virhe!"); exit(); } //Kirjoitetaan sijainnit muistiin fwrite($fp, "{$_GET['nimi']}\t"); fwrite($fp, "{$_GET['x']}\t"); fwrite($fp, "{$_GET['y']}\n"); fclose($fp); } ?> <h3 style="border-top: solid thin black; color:#000;background-color:#eee"> Sijainnit</h3> <!--nakataan php:llä luotu kuva alle--> <img src="image.php" alt="jee" />
Jotain pientä saattaa olla, mutta tuntui toimivan.
EDIT: Eikun äh sähläsin koordinaattilistan veks :/ Äkkiäkös sen sinne laitat takas :p
Kiitoksia kovasti, nyt tuntuis toimivan.
Lisäsin tuon koordinaattilistan ja sitten korjasin koordinaattien sijainnit, kun olit jättänyt mittasuhdekertomat pois ja kääntänyt toisen niistä päälaelleen, mutta pikkujuttuja nuo olivat.'
Olin näköjään hyvin lähellä oikeaa ratkaisua, tuo kuvatiedosto ei vaan taipunut mun vasaran alle. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.