• 05-09-2021, 20:47:26
    #1
    Merhabalar kodlar normal kayıt yapıyor, aynı veriyi tekrar eklemesin istiyorum yardımcı olurmusunuz.

    <?php
    for($k=0;$k<12;$k++){
    $kaynak = file_get_contents("/".yaz($k)."/");
    preg_match_all('#<span itemprop="articleBody">(.*?)</span>#si',$kaynak,$yorum);
    preg_match_all('#<meta property="og:description" content="(.*?)"/>#si',$kaynak,$tarihbaslik);
    
    $hafta = date("W");
    $tarih = date("j F Y");
    
    $buny = $k+1;
    for($i=1;$i<2;$i++){
    $save=$db->prepare("INSERT INTO haftalik SET
    buny_id=:buny_id,
    kategori_id=:kategori_id,
    yorum=:yorum,
    tarihbaslik=:tarihbaslik,
    hafta=:hafta,
    tarih=:tarih
    
    ");
    $statu=$save->execute(array(
    'buny_id' => addslashes($buny),
    'kategori_id' => addslashes($i),
    'yorum' => ($yorum[1][$i-1]),
    'tarihbaslik' => addslashes($tarihbaslik[1][$i-1]),
    'hafta' => addslashes($hafta),
    'tarih' => addslashes($tarih)
    ));
    }
    }
    Kolay gelsin.
  • 06-09-2021, 13:41:47
    #2
    Mevcut veriyi kayıt etmeden önce Veritabanına select sorgusu çekerek değer var mı yok mu diye kontrol etmen gerekir.. Şayet veri varsa mysqli_num_rows değeri var olan veri kadar değer dönderir size..

    örneğin select sorgusu çektiniz ve sonrasında sorguyu mysqli_num_rows a atadınız diyelim.. 3 adet aynı veriden varsa değişken değeri 3 olur.. 1 tane varsa değişken değeri 1 olur.

    bu durumda if sorgusu kullanarak eğer değişken değeri 0 dan büyükse (yani daha önce kayıt edilmişse) kayıt etme diyeceksin.. Sıfıra eşitse önceden eklenmiş kayıt yoktur, insert komutunu çalıştırıp yeni veriyi kayıt edebilirsin..


    Bir başka yol ise veritabanındaki ilgili alana benzersiz olarak ayarlarsın. bu durumda kod yazmana bile gerek kalmaz çok önemli değilse tabii. bu durumda aynı kolona aynı değerler kayıt olmaz.


    Umarım durumu izah edebilmişimdir. Kolay gelsin.
  • 06-09-2021, 17:03:34
    #3
    WEBKARTALI adlı üyeden alıntı: mesajı görüntüle
    Mevcut veriyi kayıt etmeden önce Veritabanına select sorgusu çekerek değer var mı yok mu diye kontrol etmen gerekir.. Şayet veri varsa mysqli_num_rows değeri var olan veri kadar değer dönderir size..

    örneğin select sorgusu çektiniz ve sonrasında sorguyu mysqli_num_rows a atadınız diyelim.. 3 adet aynı veriden varsa değişken değeri 3 olur.. 1 tane varsa değişken değeri 1 olur.

    bu durumda if sorgusu kullanarak eğer değişken değeri 0 dan büyükse (yani daha önce kayıt edilmişse) kayıt etme diyeceksin.. Sıfıra eşitse önceden eklenmiş kayıt yoktur, insert komutunu çalıştırıp yeni veriyi kayıt edebilirsin..


    Bir başka yol ise veritabanındaki ilgili alana benzersiz olarak ayarlarsın. bu durumda kod yazmana bile gerek kalmaz çok önemli değilse tabii. bu durumda aynı kolona aynı değerler kayıt olmaz.


    Umarım durumu izah edebilmişimdir. Kolay gelsin.

    $kontrol=$db->query("SELECT * from haftalik where hafta='$hafta'" );
    if ( $kontrol->rowCount() ){

    Bu şekilde hallettim eklemiyor artık, teşekkürler kolay gelsin.