• 16-05-2010, 20:30:03
    #1
    Teması 3 farklı function'dan oluşan bir script yazdım.

    İlk function'da <!DOCTYPE> etiketinden <body> etiketine kadar olan kısım, ikinci function'da <body></body> etiketi arasında olan asıl kısım, üçüncü function'da ad </body></html> etiketleri var sadece.

    Yazdığım script'te $_GET['action'] değerinin sonuna .php ekleyip index'e include ediyorum. Buraya kadar her şey normal. HTML kodlarındaki <title> etiketini ilk function'a <title>$page_title</title> olarak tanımlıyorum. Ama $page_title değişkenini hep ikinci function'da tanımlıyorum. Ve bu nedenle sayfada başlık gözükmüyor.

    ob_start() ob_flush() olaylarıyla olabileceğini düşünüyorum ama kullanmayı bilmediğim için yapamadım.
  • 16-05-2010, 20:40:16
    #2
    Eposta Aktivasyonu Gerekmekte
    En başta include edebiliyor musun?
  • 16-05-2010, 20:54:02
    #3
    Neyi en başta include edebiliyor muyum?
  • 16-05-2010, 21:08:02
    #4
    kullanmak istediğin fonksiyonun içerisinde global $page_title; şeklinde global yapıp bir dene

    ve minik bir uyarı $dosya = $_GET[action].".php"; şeklinde get le gelen bir ismi direk olarak include etme nitekim bu bir açıktır, önceden include edeceğin dosyaları bir dizide adlarını tanımla ve linkle gelen isim dizi içinde varsa onun değerini include et yoksa anasayfanı içeri al nitekim kişilerin linke ne yazacağı ve link üzerinde değişik fantaziler yapmayacağı belli olmaz .
  • 16-05-2010, 21:33:46
    #5
    global olayını gereken her yere yazdım. Herhangi bir yerde hata yok. 1. ve 2. function'ların yerlerini değiştirince başlık görüntüleniyor ama her şey <!DOCTYPE> etiketinden önce yazılıyor o zaman.

    Uyarı için teşekkürler. Onu yaptım. Sadece index.php'de bir array içinde belirttiğim değerleri görüntüleyebiliyor.
  • 17-05-2010, 20:38:48
    #6
    ob_start olaylarıyla, önce tüm bilgileri alıp sonra yazdıramaz mıyız? Böyle bir şey oluyor mu ob'larda?
  • 17-05-2010, 20:57:21
    #7
    ob ile alakası yok, sen sıralamayı yanlış yapıyorsun, 3 fonksiyonu da bir sayfaya include ettiğine göre demek ki $page_title değişkenini sayfa çalıştırıldıktan sonra değerini almaya çalşıyorsun, onun için olmuyor, sana tavsiyem şu şekilde yap

    index.php

    // mysql kodların
    $page_title = $row['title'];
    
    include('head.php');
    include('body.php');
    include('footer.php');
    head.php

    <?php
    
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <head>
    '.$page_title.'
    </head>
    ';
    
    ?>
    Yani senin sayfa başlığını index.php içinde tanımlaman lazım...
  • 17-05-2010, 23:48:44
    #8
    Bütün problemimde orada işte hocam. Başlığı index.php'de belirtemem. Body.php kısmında belirtiyorum ki bu body her zaman aynı dosya olmuyor. $_GET[action] neyse, o dosyayı include ediyorum. Ve başlıklar bu dosyalarda tanımlı.
  • 18-05-2010, 01:51:34
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım output kontrol ile yapılır, ama sağ kulağını soldan tutmak gibi olur, bu şekilde kullanımın yanlış, madem sen yazmışsın, düzeltmen lazım, Önce gerekli işlemleri yapıp, sonra yazdırmalısın.

    Ama illa output ile yapacaksan, önce head kısmında belirleyici bir şey ekle :

    <title>{{page_title}}</title>
    veya boş bırak, o kısmı replace yap

    <?php
    ob_start();
    include('head.php');
    include('body.php');
    include('footer.php'); 
    
    $icerik = ob_get_clean();
    $icerik = str_replace('{{page_title}}',$page_title, $icerik);
    echo $icerik;
    
    ?>
    Fakat bu şekilde yapınca o kısma kadar bütün içeriği önce buffera alıp sonra yazacağını unutma.