• 31-03-2013, 22:07:51
    #1
    Merhaba arkadaşlar

    php ödevimiz gereği php grafik çizmemiz gerekli.

    şimdi şöyle bi durum var. biz ilçeleri nufusa göre sıraladık. height=deger değer kısmını veritabanında çektik ve aşağıdaki noktalar gibi sıralandı.

    şimdi noktalar arasına paintte çizgiler çektim. ben o çizgileri çekmek istiyorum. yani height değeri 60 dan 80 e yükseldiğinde cizgi 60 dan 80 ne gelicek. Yardım edecek arkadaşları bekliyoruz.

    ana resim
    http://f1303.hizliresim.com/17/z/lnp4j.png

    hedeflediğim resim
    http://f1303.hizliresim.com/17/z/lnp6m.png
  • 01-04-2013, 01:48:14
    #2
    Noktaların koordinatları belli ise, imageline kullanmayı denediniz mi? Birinci noktanin x ve y koordinatları, ikinci noktanın x ve y koordinatları, renk, resim..

    imageline($resim, $x1, $y1, $x2, $y2, $renk)

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 01:48:14 -->-> Daha önceki mesaj 01:23:53 --

    Örnek olsun diye bir tane yaptım;

    <?php
    $img = imagecreatetruecolor(500, 500);
    $white = imagecolorallocate($img, 255, 255, 255);
    $red = imagecolorallocate($img, 255, 0, 0);
    imagefill($img, 0, 0, $white);
    $y = array(100,124,150,20,60,90,10,30,100);
    $x = 50;
    
    for($i=0, $j=1;$i<=7, $j<=8;$i++,$j++)
    {
    	imagefilledarc($img, $x*$j, $y[$i], 15, 15, 0, 0, $red, IMG_ARC_PIE);
    	imageline($img, $x*$j, $y[$i], $x*($j+1), $y[$i+1], $red);
    }
    	imagefilledarc($img, 450, 100, 15, 15, 0, 0, $red, IMG_ARC_PIE);
    
    header("Content-type: image/png");
    imagepng($img);
    imagedestroy($img);
    ?>
    Resim ebatlarını ve noktaların yerlerini rastgele girmiştim.

    Aşağıdaki çıktıyı alırsınız:

  • 01-04-2013, 18:42:50
    #3
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Noktaların koordinatları belli ise, imageline kullanmayı denediniz mi? Birinci noktanin x ve y koordinatları, ikinci noktanın x ve y koordinatları, renk, resim..

    imageline($resim, $x1, $y1, $x2, $y2, $renk)

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 01:48:14 -->-> Daha önceki mesaj 01:23:53 --

    Örnek olsun diye bir tane yaptım;

    <?php
    $img = imagecreatetruecolor(500, 500);
    $white = imagecolorallocate($img, 255, 255, 255);
    $red = imagecolorallocate($img, 255, 0, 0);
    imagefill($img, 0, 0, $white);
    $y = array(100,124,150,20,60,90,10,30,100);
    $x = 50;
    
    for($i=0, $j=1;$i<=7, $j<=8;$i++,$j++)
    {
    	imagefilledarc($img, $x*$j, $y[$i], 15, 15, 0, 0, $red, IMG_ARC_PIE);
    	imageline($img, $x*$j, $y[$i], $x*($j+1), $y[$i+1], $red);
    }
    	imagefilledarc($img, 450, 100, 15, 15, 0, 0, $red, IMG_ARC_PIE);
    
    header("Content-type: image/png");
    imagepng($img);
    imagedestroy($img);
    ?>
    Resim ebatlarını ve noktaların yerlerini rastgele girmiştim.

    Aşağıdaki çıktıyı alırsınız:

    öncelikle teşekkürler ayrıca +rep i de ilk defa güzel birşey için kullandım.

    şimdi hedeflediğim php dosyası bu. fakat şöyle bir sıkıntı var ben bu kadar php bilgisine sahip olmadığım için kodların çoğu yabancı. Biz başlangıç seviyesindeyiz. Veri çekme kısmını yeni atladık yani.

    Bunu aşağıdaki örneğe nasıl uygularız onu merak ediyorum.

    ilce tablomuz var. burada ilçelerimizin nufusları var. ben bunu oraya nasıl uygularım onu merak ediyorum. Dizi olarak çeksem bunlar fayda eder mi ?

    Cevaplamasınız bile teşekkürler bunu araştırmaya devam edicem en azından bir parametre daha öğrendik sayenizde
  • 01-04-2013, 22:44:45
    #4
    @fasb; Tablonuzu burada gösterirseniz bana bir örnek yaparım sizin için. Yaptığım her satırı da tek tek anlatırım isterseniz..
  • 01-04-2013, 23:06:16
    #5
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    @fasb; Tablonuzu burada gösterirseniz bana bir örnek yaparım sizin için. Yaptığım her satırı da tek tek anlatırım isterseniz..
    tablo bu isterseniz tabloyuda sql olarak da verebilirim.

    http://b1304.hizliresim.com/18/1/lpt2x.png

    tabloda s-id önemsiz.

    yukarıdaki nokta resmi vardı onu bu aşağıdaki kod ile yaptım.

    <table border=0 width=100% height=50 cellpadding=7 bordercolor=blue cellspacing=20>
    <tr>
    <?php
    mysql_connect("","root","");
    mysql_select_db("tc");
    
    $ilce=mysql_query("select * from ilce");
    while($liste=mysql_fetch_array($ilce))
    
    echo "<td valign=bottom align=center>
    <table>
    <tr>
    <td height=$liste[nufus] width=80><img src='nokta.png'></td></tr></table></td>";
    
    ?>
    </tr>
    </table>
  • 02-04-2013, 00:02:21
    #6
    @fasb;

    Tablonun aynısını oluşturdum. Yeni kodlar ve ekran görüntüsü aşağıda.

    <?php 
    mysql_connect('localhost','pma','pmapass');
    mysql_select_db('test');
    
    $sorgu = mysql_query("SELECT nufus FROM ilce");
    $y = array();
    while($sonuc = mysql_fetch_array($sorgu)){
        $y[] = ($sonuc['nufus']/5)+100;
    }
    $img = imagecreatetruecolor(600, 300); 
    $green = imagecolorallocate($img, 110, 255, 0); 
    $red = imagecolorallocate($img, 255, 0, 0); 
    imagefill($img, 0, 0, $green);
    $x = 50; 
    
    for($i=0, $j=1;$i<=8, $j<=9;$i++,$j++) 
    { 
        imagefilledarc($img, $x*$j, $y[$i], 15, 15, 0, 0, $red, IMG_ARC_PIE); 
        imageline($img, $x*$j, $y[$i], $x*($j+1), $y[$i+1], $red); 
    } 
        imagefilledarc($img, $x*(count($y)), $y[count($y)-1], 15, 15, 0, 0, $red, IMG_ARC_PIE); 
    
    header("Content-type: image/png"); 
    imagepng($img); 
    imagedestroy($img); 
    ?>


    Şimdi kodları satır satır açıklayayım.

    mysql_connect('localhost','pma','pmapass');
    mysql_select_db('test');
    
    $sorgu = mysql_query("SELECT nufus FROM ilce");
    $y = array();
    while($sonuc = mysql_fetch_array($sorgu)){
        $y[] = ($sonuc['nufus']/5)+100;
    }
    Yukarıda yazdığım bu satırlarda veritabanına bağlandım. ilce tablosunun nufus sütununu çektim ve $y isminde bir değişkene atadım. Rakamları direk koordinat olarak kullandığım için 100, 600 gibi büyük rakamlar yerine bu rakamların beşte birini aldım. ve grafiğimiz tavana yapışmasın diye her değere +100 ekledim ki tavandan yüz piksel aşağı ötelesin. Sonuç olarak rakamlar kümesi $y değişkenine gelmiş oldu.

    $img = imagecreatetruecolor(600, 300); 
    $green = imagecolorallocate($img, 110, 255, 0); 
    $red = imagecolorallocate($img, 255, 0, 0); 
    imagefill($img, 0, 0, $green);
    $x = 50;
    Bu satırlarda ise $img değişkenine, imagecreatetruecolor fonksiyonu ile oluşturduğum resmi atadım. 600px genişliğinde 300px yüksekliğinde bir resim oluşturdum. Daha sonra $green değişkenine imagecolorallocate ile $img değişkeninde oluşturdum resmi yeşile boyadığımı söyledim. $red isimli değişkene ise kırmızı rengini attım. imagefill ile de resmi yeşile boyadım. Daha sonra soldan 50px ile başlayalım diye $x değişkeni oluşturup 50px atadım..

    Gelelim for döngüsüne

    for($i=0, $j=1;$i<=8, $j<=9;$i++,$j++) 
    { 
        imagefilledarc($img, $x*$j, $y[$i], 15, 15, 0, 0, $red, IMG_ARC_PIE); 
        imageline($img, $x*$j, $y[$i], $x*($j+1), $y[$i+1], $red); 
    }
        imagefilledarc($img, $x*(count($y)), $y[count($y)-1], 15, 15, 0, 0, $red, IMG_ARC_PIE);
    Döngüde $i ve $j isimli iki değişken var, imagefilledarc ile noktaları, imageline ile çizgileri oluşturdum. Döngüden sonra kullandığım imagefiledarc ise en sondaki noktayı oluşturmak içindi.

    Son olarak

    header("Content-type: image/png"); 
    imagepng($img); 
    imagedestroy($img);
    kodları ile ise, sayfanın bir img/png türünde png resmi olduğunu belirten başlığı header fonksiyonu ile gönderdim. imagepng fonksiyonu ile $img değişkenindeki veriler ile resmi oluşturdum. Ekrana resmi bastıktan sonra imagedestroy ile bellekten resmi sildim.

    Varsa aklınıza takılan soru, sorabilirsiniz.
  • 02-04-2013, 00:17:15
    #7
    http://d1304.hizliresim.com/18/2/lpvh9.png

    şimdi ben tek tek anlayarak deftere not alıcam. fakat denediğimde resmi oluşturmadı. biraz sonra okumaya başlıcam fakat hazır siz gitmeden bunu da soram dedim okuduktan sonrada yapamazsam diye.

    Ayrıca ücretsiz olarak destek verdiğiniz için teşekkürler.
  • 02-04-2013, 00:32:11
    #8
    Önemli değil hocam, biz de buralardan öğrendik vaktinde, boynumuzun borcu bilgimizi paylaşmak.

    Kullandığınız kodları görmeden birşey söyleyemem ama kodlarda herhangi bir hata yaparsanız yukarıdaki çıktıyı alırsınız. header('Content-Type:image/png') yazan satırı kaldırın, böylece bir hata varsa hata mesajını görürsünüz. Hata mesajını ve kullandığınız kodları paylaşın bi bakayım.
  • 02-04-2013, 00:47:47
    #9
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Önemli değil hocam, biz de buralardan öğrendik vaktinde, boynumuzun borcu bilgimizi paylaşmak.

    Kullandığınız kodları görmeden birşey söyleyemem ama kodlarda herhangi bir hata yaparsanız yukarıdaki çıktıyı alırsınız. header('Content-Type:image/png') yazan satırı kaldırın, böylece bir hata varsa hata mesajını görürsünüz. Hata mesajını ve kullandığınız kodları paylaşın bi bakayım.
    çalıştırdım hocam. şimdi deftere tek tek neler olduğunu yazıyorum. teşekkür ediyorum tekrardan.

    hatayı açıklıyım veritabanı adı, giriş bilgilerini değiştirdim onlar aynı zannettim olay çözüldü teşekkürler.