• 09-01-2019, 13:51:51
    #10
    ismail03 adlı üyeden alıntı: mesajı görüntüle
    <?php
    class baglan{
    public $veritabani;
    function __construct()
    {
    try  {
       $this->veritabani = new PDO("mysql:host=localhost;dbname=kisiler;charset=utf8", "root","123456");
       $this->veritabani->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      
      
    } catch (PDOException $e) {
       die($e->getMessege());
      
    }
    }
    }
     
    class anketana extends baglan{
    Function Anketcek($i)
    {
    $sor=$this->veritabani->prepare("select * oylama where anketid=:anket");
    $sor->execute(array("anket"=>$i));
    if($sor->rowCount()>0)
    {
    Return $sor->fetch(PDO::FETCH_OBJ);
    }
    else{
    print_r($this->veritabani->errorInfo());
    }
    }
    }





    Burda ne yaptık önce baglan adında bir sınıf oluşturduk sonra kurucu fonksiyon içinde(__construct()) veritabanımıza bağlandık ve bunu baglan sınıfının dahil edeildiği heryerde erişebilmek için veritabanı değişkenimizi public tanımladık artık veritabanımıza $this->veritabani değişkeniyle erişebiliyoruz
    anketana sınıfı oluşturduk ve bu sınıfı baglan sınıfıyla bağlantıladık
    sınıf içinde bir fonksiyon yazdık

    evet hocam simdi anladım cok güzel oldu bir sınıftan miras aldık onu anladım ama ben neden oyun hep ferari sıkkına gittiği sorusuna bi cevap göremedim yada ben mi yanlıs anladım
  • 09-01-2019, 14:38:07
    #11
    ozgun58 adlı üyeden alıntı: mesajı görüntüle
    evet hocam simdi anladım cok güzel oldu bir sınıftan miras aldık onu anladım ama ben neden oyun hep ferari sıkkına gittiği sorusuna bi cevap göremedim yada ben mi yanlıs anladım
    Kodları tam olarak incelemedim kodların daha düzgün olması için sadece sınıf yapısını anlattım. İleride sorun yaşamaman için



    case"sec1";
                   $sutun="oy1";
                   $veri=1;
                   case"sec2";
                   $sutun="oy2";
                   $veri=1;
                   case"sec3";
                   $sutun="oy3";
                   $veri=1;
                   case"sec4";
                   $sutun="oy4";
                   $veri=1;
                   default:
                   endswitch;
    $veri değişkeni değeri 1 gönderilmiş kontrol et



       $sorgu5="insert into oylama (anketid,$sutun) VALUES ($anketid,$veri)";
                $getir5 = $veritabani->prepare($sorgu5);
                $getir5->execute();
    oy değeri $veri değişkeninde tutuluyor switch de $veri hep 1 atanmış hata bu
  • 09-01-2019, 15:06:28
    #12
    ismail03 adlı üyeden alıntı: mesajı görüntüle
    Kodları tam olarak incelemedim kodların daha düzgün olması için sadece sınıf yapısını anlattım. İleride sorun yaşamaman için



    case"sec1";
                   $sutun="oy1";
                   $veri=1;
                   case"sec2";
                   $sutun="oy2";
                   $veri=1;
                   case"sec3";
                   $sutun="oy3";
                   $veri=1;
                   case"sec4";
                   $sutun="oy4";
                   $veri=1;
                   default:
                   endswitch;
    $veri değişkeni değeri 1 gönderilmiş kontrol et



       $sorgu5="insert into oylama (anketid,$sutun) VALUES ($anketid,$veri)";
                $getir5 = $veritabani->prepare($sorgu5);
                $getir5->execute();
    oy değeri $veri değişkeninde tutuluyor switch de $veri hep 1 atanmış hata bu
    hocam gerçekten ilgi ve alakanızdan dolayı çok çok teşekkürler nekadar teşekkür etsem azdır

    hocam $veri 1 olcakki 1 oy verildiği belli olsun yani 1 oy eklencek veritabanına 2 kişi oy kullanmadığı için $veri hep 1 olacak bunun içindir ki $veri ile alakalı değildir

    hatayı 20 dakka önce buldum hata switch case de
    break;
    ların konulmamasından dolayı olusuyomus, break konulmadığı için oy hep ferariye gidiyomus breakleri kullandıktan sonra karşık şekilde oy verdim hepsi yerli yerine gitii

    bu süreçte zamanınızı ayırarak yardım etmeniz bile beni çok sevindirdi bir daha teşekkürü kendime borc bilirim çok teşekkürler hocam

    aşşağıdada görüldüğü gibi
    break;
    lar yok
    case"sec1";
                   $sutun="oy1";
                   $veri=1;
                   case"sec2";
                   $sutun="oy2";
                   $veri=1;
                   case"sec3";
                   $sutun="oy3";
                   $veri=1;
                   case"sec4";
                   $sutun="oy4";
                   $veri=1;
                   default:
                   endswitch;
  • 09-01-2019, 15:30:39
    #13
    Bu arada fonksiyon yazımın hatalı (yada standarta uygun değil)
    önerim formu gönderdiğin sayfada
    post.php olsun
    if(isset($_POST))
    {if(isset($_POST["anketid"]))
    {
     if(!empty($_POST["buton"]))
    {
    $oy=$_POST["buton"];
    $anket=$_POST["anketid"];
     $anket->oyver($oy,$anket);
    }else
    {
    echo "Parametre hatası oy değeri gönderilmedi";
    }
    }
    else{
    echo "Parametre hatası Anket idsi gönderilmedi";
    }
    }else
    {
    echo "Form gonderilmedi kontrol et";
    }
    anket fonksiyonunda
    function oyver($oy,$anket,){
    switch($oy)
    {
    case"sec1":
    $sutun="oy1";
    $veri=1;
    break;
    case"sec2";
    $sutun="oy2":
    $veri=1;
    break;
    case"sec3":
    $sutun="oy3";
    $veri=1;
    break;
    case"sec4";
    $sutun="oy4";
    $veri=1;
    break;
    default:
    echo " oy yok ";
    exit();
    break;
    }
    $ip=$_SERVER['REMOTE_ADDR'];
    
    $sorgu4="select * from oylama where anketid=:anket";
    
    $getir4 = $veritabani->prepare($sorgu4);
    
    $getir4->execute(array("anket"=>$anket));
    if($getir4->rowCount()==0){
    $sorgu5="insert into oylama (anketid,$sutun) VALUES (?,?)";
    $getir5 = $veritabani->prepare($sorgu5);
    
    $getir5->execute(array($anket,$veri));
    $sorgu6="insert into ipkontrol (anketid,ip) VALUES (?,?)";
    $getir6 = $veritabani->prepare($sorgu6);
    $getir6->execute(array($anket,$ip));
    echo"OYUNUZ ALINDI";
    header("refresh:3,url=index.php" );
    }else{
    $sonki=$getir4->fetch(PDO::FETCH_ASSOC);
    $mevcutdeger= $sonki[$sutun];
    $sonveri=$mevcutdeger + 1;
    $sorgu8="update oylama set $sutun=:veri where anketid=:anket";
    $getir8 = $veritabani->prepare($sorgu8);
    $getir8->execute(array("veri"=>$sonveri,"anket"=>$anket);
    $sorgu7="insert into ipkontrol (anketid,ip) VALUES (?,?)";
    $getir7 = $veritabani->prepare($sorgu7);
    $getir6->execute(array($anket,$ip));
    
    echo"OYUNUZ ALINDI";
    
    header("refresh:3,url=index.php");
    
    }
    
    }
    bu bile kötü geliştirilebilir
  • 09-01-2019, 15:49:44
    #14
    ismail03 adlı üyeden alıntı: mesajı görüntüle
    Bu arada fonksiyon yazımın hatalı (yada standarta uygun değil)
    önerim formu gönderdiğin sayfada
    post.php olsun
    if(isset($_POST))
    {if(isset($_POST["anketid"]))
    {
     if(!empty($_POST["buton"]))
    {
    $oy=$_POST["buton"];
    $anket=$_POST["anketid"];
     $anket->oyver($oy,$anket);
    }else
    {
    echo "Parametre hatası oy değeri gönderilmedi";
    }
    }
    else{
    echo "Parametre hatası Anket idsi gönderilmedi";
    }
    }else
    {
    echo "Form gonderilmedi kontrol et";
    }
    anket fonksiyonunda
    function oyver($oy,$anket,){
    switch($oy)
    {
    case"sec1":
    $sutun="oy1";
    $veri=1;
    break;
    case"sec2";
    $sutun="oy2":
    $veri=1;
    break;
    case"sec3":
    $sutun="oy3";
    $veri=1;
    break;
    case"sec4";
    $sutun="oy4";
    $veri=1;
    break;
    default:
    echo " oy yok ";
    exit();
    break;
    }
    $ip=$_SERVER['REMOTE_ADDR'];
    
    $sorgu4="select * from oylama where anketid=:anket";
    
    $getir4 = $veritabani->prepare($sorgu4);
    
    $getir4->execute(array("anket"=>$anket));
    if($getir4->rowCount()==0){
    $sorgu5="insert into oylama (anketid,$sutun) VALUES (?,?)";
    $getir5 = $veritabani->prepare($sorgu5);
    
    $getir5->execute(array($anket,$veri));
    $sorgu6="insert into ipkontrol (anketid,ip) VALUES (?,?)";
    $getir6 = $veritabani->prepare($sorgu6);
    $getir6->execute(array($anket,$ip));
    echo"OYUNUZ ALINDI";
    header("refresh:3,url=index.php" );
    }else{
    $sonki=$getir4->fetch(PDO::FETCH_ASSOC);
    $mevcutdeger= $sonki[$sutun];
    $sonveri=$mevcutdeger + 1;
    $sorgu8="update oylama set $sutun=:veri where anketid=:anket";
    $getir8 = $veritabani->prepare($sorgu8);
    $getir8->execute(array("veri"=>$sonveri,"anket"=>$anket);
    $sorgu7="insert into ipkontrol (anketid,ip) VALUES (?,?)";
    $getir7 = $veritabani->prepare($sorgu7);
    $getir6->execute(array($anket,$ip));
    
    echo"OYUNUZ ALINDI";
    
    header("refresh:3,url=index.php");
    
    }
    
    }
    bu bile kötü geliştirilebilir

    hocam bu post olayı bana cok mantıklı geldi ama bi okadar da gereksiz gibi geldi

    yani normal shartlarda post edilen herseyi else sinide yapmak lazımmı yapmak lazımsa benim aklıma gelen gibi hata içinmi yapılıyor sadece

    ve benim kurs aldığım kişi 12 yıldır php ile ilgileniyor neden kendisi buton dışında diğer post edilenleri ifle sorgulamıyor

    birde hocam burda
     (array($anket,$ip));
    ne iş yapıyor neden yazıyorsunuz
  • 09-01-2019, 15:54:06
    #15
    ozgun58 adlı üyeden alıntı: mesajı görüntüle
    hocam bu post olayı bana cok mantıklı geldi ama bi okadar da gereksiz gibi geldi

    yani normal shartlarda post edilen herseyi else sinide yapmak lazımmı yapmak lazımsa benim aklıma gelen gibi hata içinmi yapılıyor sadece

    ve benim kurs aldığım kişi 12 yıldır php ile ilgileniyor neden kendisi buton dışında diğer post edilenleri ifle sorgulamıyor

    birde hocam burda
     (array($anket,$ip));
    ne iş yapıyor neden yazıyorsunuz
    https://www.ibrahimcevruk.com/php-ko...tavsiyesi-psr/
    https://www.ibrahimcevruk.com/pdo-il...ekleme-insert/