• 22-08-2021, 10:28:04
    #1
    Arkadaşlar selamlar. Merkez Bankası kurlarını güncellemeye çalışıyorum. Bir problemim var. Daha önceden sistemde kayıtlı olan merkez bankası kurlarını xml ile karşılaştırıp var olanları veritabanında güncellemeye çalışıyorum. Basitçe kodlarım şu şekilde

    $xml = simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml');
        for($sayi=0 ; $sayi<=20 ; $sayi++){
    
                        $currencyGet = $xml->Currency[$sayi]->BanknoteSelling;
                        $currencyCodeGet = $xml->Currency[$sayi][CurrencyCode];
    
    
    <form method="POST">
                            <?php
                            $Csql=$db->read('currency');
                            while ($getCurrency=$Csql->fetch(PDO::FETCH_ASSOC)) {
    
    
                                if ($currencyCodeGet == $getCurrency['shortCode']) { ?>                                                                    
                                    <label><?php echo $currencyCodeGet ?></label>
                                    <input type="text" name="rate[]" value="<?php echo $currencyGet ?>">
                                    <input type="id" name="id[]" value="<?php echo $getCurrency['id'] ?>"><br>
    
    
    
                                <?php }  } } ?>
    
                                <button type="submit" name="gonder">Güncelle</button>
                            </form>
    Burada veri tabanımdaki para birimine göre merkez bankasındaki para birimlerini eşitleyerek ekrana yazdırabiliyorum. Sonuç şu şekilde.


    2 - 3 - 4 diye yazan yerler benim veri tabanımdaki ilgili para birimlerinin idsi. Ve şimdi artık asıl sorum şu. Bu kayıtları çoklu şekilde nasıl güncelleyebilirim.
    konu ile alakalı yardımlarınızı rica ediyorum arkadaşlar
  • 22-08-2021, 11:20:46
    #2
    Platin üye
    Update exec kullanabilirsin
  • 22-08-2021, 11:25:02
    #3
    OziyWeb adlı üyeden alıntı: mesajı görüntüle
    Update exec kullanabilirsin
    Birçok cevap buldum fakat array olark gelen değerleri mysql update nasıl yapıcam beceremedim. Örnek göstermeniz mümkün mü?
    Bu arada ücretli destekte verebilirsiniz.
  • 22-08-2021, 15:50:58
    #4
    foreach içerisine alın ve güncelleme işlemini yapın

    https://www.w3schools.com/php/php_mysql_update.asp
  • 22-08-2021, 15:52:44
    #5
    Merhaba,

    $currency değişkeni XML değerleri ile aynıdır.

    $currency["CurrencyCode"] değişkeni örneğin USD gibi kodları çağırmaktadır.

    ID yerine para birimlerinin kısa kodları ile veritabanında kolayca bularak update edebilirsiniz.

    İf kullanarak sadece istediğiniz para birimlerini update ettirebilirsiniz.

        $Currencies = simplexml_load_string($url);
    
        foreach ($Currencies->Currency as $Currency) {
          //  $update kodları
        }
    İyi çalışmalar.
  • 22-08-2021, 16:29:18
    #6
    Siz muhtemelen db bağlantısı için bir sınıf kullanıyorsunuz sanırım. PDO ile bu şekilde bir örnek yaptım sizin için;
    $db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    $db->query('SET NAMES utf8');
    $xml = simplexml_load_file('http://www.tcmb.gov.tr/kurlar/today.xml');
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        foreach ($_POST['currency'] as $key => $value) {
            $query = $db->prepare('UPDATE `currency` SET `value` = ? WHERE `key` = ?');
            $query->bindParam(1, $value, PDO::PARAM_STR);
            $query->bindParam(2, $key, PDO::PARAM_STR);
            $query->execute();
        }
        header('Location: currency.php');
        exit();
    }
    
    $query = $db->query('SELECT `key` FROM currency', PDO::FETCH_ASSOC);
    $rows = $query->fetchAll();
    
    $myCurrency = array();
    
    foreach ($rows as $row) {
        array_push($myCurrency, $row['key']);
    }
    
    echo '<form action="" method="POST">';
    echo '<table>';
    foreach ($xml->Currency as $item) {
        $attr = $item->attributes();
        if (in_array((string) $attr->CurrencyCode, $myCurrency)) {
            echo '<tr>';
            echo '<td>' . $attr->CurrencyCode . '</td>';
            echo '<td><input type="text" name="currency[' . $attr->CurrencyCode . ']" value="' . $item->BanknoteSelling . '"></td>';
            echo '</tr>';
        }
    }
    echo '<tr>';
    echo '<td colspan="2"><button type="submit">Güncelle</button></td>';
    echo '</tr>';
    echo '</table>';
    echo '</form>';
  • 22-08-2021, 16:53:56
    #7
    if(isset($_POST['gonder']))
    {
        $query = $pdo->prepare('UPDATE currency SET selling = :selling WHERE id = :id');
        foreach($_POST['rate'] as $k => $v)
        {
            $query->bindValue(':selling', $v);
            $query->bindValue(':id', $_POST['id'][$k]);
            $query->execute();
       }
    }
  • 23-08-2021, 09:38:18
    #8
    beginTransaction
    loop -> for / foreach / while
    exec
    commit