<?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.
Aynı veriyi engelleme
2
●69
- 05-09-2021, 20:47:26Merhabalar kodlar normal kayıt yapıyor, aynı veriyi tekrar eklemesin istiyorum yardımcı olurmusunuz.
- 06-09-2021, 13:41:47Mevcut 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:34WEBKARTALI adlı üyeden alıntı: mesajı görüntüle
$kontrol=$db->query("SELECT * from haftalik where hafta='$hafta'" );
if ( $kontrol->rowCount() ){
Bu şekilde hallettim eklemiyor artık, teşekkürler kolay gelsin.