• 24-07-2013, 15:11:41
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    merhaba arkadaşlar,
    stajdayım ve aklıma ufak bi proje geldi. daha doğrusu çek beğendiğim bişeyi tekrarlamak bende yapmak istiyorum ama yapamadım.

    yapmak istediğim şey: google da bulunan hesap makinesi. çoğumuz biliyodur google arama çubuğuna 3+5 yazarsak bize 8 sonucunu veriyor.

    ben bunu php ile nasıl yaparım diye düşündüm. explode fonksiyonuyla yapmaya çalıştım ancak olmadı.

    bi algoritma geliştiremedim bu konuda.

    fikri olan varmı nasıl yapılacağına dair

    teşekkürler
  • 24-07-2013, 15:12:34
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    çok az php biliyorum ama sadece değişkenleri kullanarak yapılamaz mı?
  • 24-07-2013, 15:15:41
    #3
    benim istediğim tam olarka şöyle.
    ortada 1 tane textbox olacak ve ona adam gelip 3*5 veya 4/1 işlemini gircek.

    php den istediğim ise bu sayıları işlem operatörlerine göre ayırıp bana operatörlerle birlikte sayıları vermesi. gerisi sorun değil
  • 24-07-2013, 16:06:48
    #4
    form ile veriyi gönderin sonra gönderdiğin dosyada o veriyi bir kontrolden geçirin mesela karakterler belirleyin ( + - / * ) şeklinde o veriyi aratın bunlardan 1 tanesi var ise işlem yap ve o karakterden önceki ile sonrakileri alıp karakter ney ise onunla işlem yap.
  • 24-07-2013, 18:23:52
    #5
    Şöyle birşey işe yarayabilir.
     <?php 
    $islem = '(6+2)/4 + 5*3 + 8 ';
    // $islem = $_POST['islem'] ;   şeklinde formdan veri alınabilir.
     
    eval("\$sonuc = $islem ;");
    echo 'islem sonucu : ' . $sonuc;
    ?>
  • 24-07-2013, 22:09:59
    #6
    evet böyle birşey kesinlikle işime yarar. hatta beni şundan kurtardı
    Alıntı
    <?php
    if($_POST){
    $gelen = $_POST['giden'];
    $sayilar = explode("+",$gelen);
    $islem = str_replace ($sayilar,"",$gelen);
    if($islem == ""){
    $sayilar = explode("-",$gelen);
    $islem = str_replace ($sayilar,"",$gelen);
    if($islem == ""){
    $sayilar = explode("*",$gelen);
    $islem = str_replace ($sayilar,"",$gelen);
    if($islem == ""){
    $sayilar = explode("/",$gelen);
    $islem = str_replace ($sayilar,"",$gelen);
    }
    }
    }
    if($islem == "+"){
    $sonuc = $sayilar[0] + $sayilar[1];
    }
    if($islem == "-"){
    $sonuc = $sayilar[0] - $sayilar[1];
    }
    if($islem == "*"){
    $sonuc = $sayilar[0] * $sayilar[1];
    }
    if($islem == "/"){
    $sonuc = $sayilar[0] / $sayilar[1];
    }
    echo 'Sonuç :<input type="" value="'.@$sonuc.'"/>';
    }
    ?>
    bu kodlar senin yaptığının yarısını bile yapamıyor. sadece 1 işlem yapıyor. ama senin kodlarının 50 katı uzunluğunda
    ancak anlamadığım eval tam olarak nedir. araştırdım ama anlayamadım biraz açıklayabilirmisin;
    teşekkürler;
  • 25-07-2013, 00:19:01
    #7
    kaya_577 adlı üyeden alıntı: mesajı görüntüle
    ancak anlamadığım eval tam olarak nedir. araştırdım ama anlayamadım biraz açıklayabilirmisin;
    teşekkürler;
    burda ornegi ile aciklamasi mevcut.

    http://nl1.php.net/manual/tr/function.eval.php
  • 25-07-2013, 01:24:15
    #8
    Kimlik doğrulama veya yönetimden onay bekliyor.
    uysal_rockci adlı üyeden alıntı: mesajı görüntüle
    Şöyle birşey işe yarayabilir.
     <?php 
    $islem = '(6+2)/4 + 5*3 + 8 ';
    // $islem = $_POST['islem'] ;   şeklinde formdan veri alınabilir.
     
    eval("\$sonuc = $islem ;");
    echo 'islem sonucu : ' . $sonuc;
    ?>
    İlk mesajı okuduğumda direk bunu yazacaktım ben de. PHP'de hesap işlerini en kısa haliyle böyle yapabilirsiniz.

    Okuldaki sınavda hesap makinesi sorulmuştu. Arkadaşlar if-else'lerle uğraşırken aklıma bu gelmişti benim de; tek satırda yapıp diğer soruya geçmiştim.

    eval()'i şöyle de kullanabilirsiniz:
    $sonuc = eval('return '. $islem . ';');
  • 25-07-2013, 01:47:59
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    kaya_577 adlı üyeden alıntı: mesajı görüntüle
    evet böyle birşey kesinlikle işime yarar. hatta beni şundan kurtardı

    bu kodlar senin yaptığının yarısını bile yapamıyor. sadece 1 işlem yapıyor. ama senin kodlarının 50 katı uzunluğunda
    ancak anlamadığım eval tam olarak nedir. araştırdım ama anlayamadım biraz açıklayabilirmisin;
    teşekkürler;
    Arkadaşım eval kullanırken dikkatli olmalısın ama. Rastgele kullanılmaz öyle. Misal postta islem kutusuna şunu yazarsak:

    $dir = opendir(realpath(dirname(__FILE__)));while (($dosya = readdir($dir)) !== false){echo $dosya;}
    Direk dizini listeler. Tabi bunu kullanacak adam listeleme yerine yazma, silme vs. yapar. Yani her zaman kullanıcı girdisini elden geçirmen gerekir.