• 10-11-2021, 17:29:23
    #1
    Arkadaşlar cümleten merhaba,

    PHP üzerine alıştırma yapmak için çeşitli işlemler deniyordum. Bugün youtube'da denk geldiğim bir videoda veritabanı bağlantısını fonksiyon ile sağlıyordu arkadaş. Adımları videoda ki gibi yapmama rağmen veritabanından veri çekmeye çalıştığımda ilgili alan boş çıkıyor.

    Video Linki:
    https://www.youtube.com/watch?v=3Mssk6iGVAc&t=1017s


    Videoyu açmak istemeyenler için şöyle izah edeyim.

    Veritabanı bağlantısı ve veritabanından veri işlemleri için oluşturulan bir vt.php dosyamız var. İçerisi şu şekilde
    <?php
    class VT{
    var $sunucu= 'localhost';
    var $username= 'root';
    var $userpassword= '123456789';
    var $dbname= 'yonetimpaneli';
    var $baglanti;
    function __construct ()
    {
    try {$this->baglanti=new PDO ("mysql:host=".$this->sunucu. ";dbname=".$this->dbname. ";charset=utf8",$this->username,$this->userpassword);} catch (PDOException $error) {
    echo $error->getMessage();
    exit;
    }
    }
    public function VeriGetir($tablo,$wherealanlar="",$wherearraydeger="",$ordeby="ORDER BY ID ASC",$limit="")
    {
    $this->baglanti->query("SET CHARACTER SET utf8");
    $sql="SELECT * FROM ".$tablo; /*SELECT * FROM ayarlar*/
    if(!empty($wherealanlar) && !empty($wherearraydeger))
    {
    $sql.=" ".$wherealanlar; /*SELECT * FROM ayarlarWHERE */
    if(!empty($ordeby)){$sql.=" ".$ordeby;}
    if(!empty($limit)){$sql.=" LIMIT ".$limit;}
    $calistir=$this->baglanti->prepare($sql);
    $sonuc=$calistir->execute($wherearraydeger);
    $veri=$calistir->fetchAll(PDO::FETCH_ASSOC);
    }
    else
    {
    if(!empty($ordeby)){$sql.=" ".$ordeby;}
    if(!empty($limit)){$sql.=" LIMIT ".$limit;}
    $veri=$this->baglanti->query($sql,PDO::FETCH_ASSOC);
    }
    
    if($veri!=false && !empty($veri))
    {
    $datalar=array();
    foreach($veri as $bilgiler)
    {
    $datalar[]=$bilgiler;
    }
    return $datalar;
    }
    else
    {
    return false;
    }
    
    }
    }
    
    ?>
    Daha sonra burada ki fonksiyonları başka bir klasörde baglanti.php isminde bir dosyaya atıyoruz. Orada ki kodlarda şu şekilde;
    <?php
    include_once(SINIF. "vt.php");
    $VT=new VT();
    
    $ayarlar=$VT->VeriGetir("ayarlar","WHERE ID=?",array(1),"ORDER BY ID ASC",1);
    if($ayarlar!=false){
    $sitebaslik=$ayarlar[0]["ayarlar_baslik"];
    $siteanahtar=$ayarlar[0]["ayarlar_anahtar"];
    $siteaciklama=$ayarlar[0]["ayarlar_aciklama"];
    $siteURL=$ayarlar[0]["ayarlar_url"];
    }
    ?>
    Bu işlemleri yaptıktan sonra veritabanı verilerini çekeceğim index.php dosyasına aşağıdaki şekilde bu dosyaları çağırıyorum.
    <?php
    @session_start();
    @ob_start();
    define("DATA", "data/");
    define("SAYFA", "include/");
    define("SINIF", "class/");
    include_once(DATA. "baglanti.php");
    ?>
    Daha sonra örneğin sitenin title alanını çekmek için title alanına
    <?php $sitebaslik ?>
    yazdığımda, title etiketi içerisi boş çıkıyor. Bu değişkeni echo veya print ile yazırınca tanımlanamayan değişken hatası alıyorum.

    Dosya yollarından dolayı, dosyayı çekmiyor olabileceğini düşündüm ama veritabanı bağlantısının başarılı olup olmadığını test ettiğimde sıkıntı yok. Sadece verileri çekerken sorun yaşıyorum.
    Normalde bu şekilde kullanmıyordum veritabanı bağlantısını felan ama ilerleyen süreçte bu yöntem daha kısa ve daha başarılı bir işlem olurmu diye düşündüm ve sorunu aşamadığım içinde aklıma takıldı.
    Bu hususta yardımlarınızı rica ediyorum.
    Teşekkürler
  • 10-11-2021, 17:39:17
    #2
    Üyeliği durduruldu
    <?php echo $sitebaslik ?> bu kodu deneyin.

    Edit: hata veren satırı iletin. Görmemişim
  • 10-11-2021, 17:42:45
    #3
    KRak3n_TR adlı üyeden alıntı: mesajı görüntüle
    <?php echo $sitebaslik ?> bu kodu deneyin.

    Edit: hata veren satırı iletin. Görmemişim
    Bu şekilde yazdığım zaman aşağıdaki hatayı veriyor.
    <br />
    <b>Notice</b>:  Undefined variable: sitebaslik in <b>dosyayolu\index.php</b> on line <b>14</b><br />
    Bu hatadan dolayı bütün dosyaları v.s. kontrol ettim zaten dosyayı tanımama gibi durum v.s. söz konusu değil. echo kullanmadığım zamanda boş çıkıyor veri, hata felan çıkmıyor.

    14. satırda ki kodda şu
    <title><?php echo $sitebaslik; ?></title>
  • 10-11-2021, 17:43:18
    #4
    Üyeliği durduruldu
    Screwy adlı üyeden alıntı: mesajı görüntüle
    Bu şekilde yazdığım zaman aşağıdaki hatayı veriyor.
    <br />
    <b>Notice</b>:  Undefined variable: sitebaslik in <b>dosyayolu\index.php</b> on line <b>14</b><br />
    Bu hatadan dolayı bütün dosyaları v.s. kontrol ettim zaten dosyayı tanımama gibi durum v.s. söz konusu değil. echo kullanmadığım zamanda boş çıkıyor veri, hata felan çıkmıyor.

    14. satırda ki kodda şu
    <title><?php echo $sitebaslik; ?></title>
    hocam 2. kodu anlayamam bu şekilde

    edit: R10 hatasıymış düzeldi.
  • 10-11-2021, 17:44:19
    #5
    Üyeliği durduruldu
    Undefined variable diyor hocam. Değişkeni tanımlamamışsınız. Değişkeni tanımlayıp tekrar deneyin.
  • 10-11-2021, 17:46:12
    #6
    KRak3n_TR adlı üyeden alıntı: mesajı görüntüle
    Undefined variable diyor hocam. Değişkeni tanımlamamışsınız. Değişkeni tanımlayıp tekrar deneyin.
    Hocam konuda ki 2.php kod bloğunda tanımladım zaten. baglanti.php dosyasının içerisinde tanımlı. Zaten sorunda burada tanımlı olduğu halde hata veriyor

    EDİT: hatta bu kod satırlarını direk index.php içine alsam bile aynı hata devam ediyor.
  • 10-11-2021, 17:50:22
    #7
    <?=$ayarlar['sitebaslik'];?>
    olarak denermisin

    $degiskenadı['sutünismi']
  • 10-11-2021, 17:53:45
    #8
    rowCount adlı üyeden alıntı: mesajı görüntüle
    <?=$ayarlar['sitebaslik'];?>
    olarak denermisin

    $degiskenadı['sutünismi']
    Yine bu hatayı verdi hocam
    <br />
    <b>Notice</b>:  Undefined variable: sitebaslik in <b>dosyayolu\index.php</b> on line <b>14</b><br />
    Değişkenin tanımlanmaması ne demek anlamadım, herşey doğru ama yinede bu hatayı veriyor.
  • 10-11-2021, 18:10:21
    #9
    merhaba hocam sorunu çözdünüzmü