PHP ve MySQL kullanarak bu işlemi gerçekleştirmeniz mümkündür. Öncelikle ilgili tablodaki aktiflik durumunu kontrol edecek bir SQL sorgusu yazmalısınız. Daha sonra, kullanıcının sisteme giriş yaptığını kontrol edecek bir kod parçası yazmalısınız. Eğer kullanıcı sisteme giriş yapmışsa, yapacağınız hesaplamalar sonucunda elde ettiğiniz değerleri başka bir tabloya insert etmek için bir SQL sorgusu yazmalısınız. Örnek olarak:
// veritabanına bağlanmak için PDO nesnesi
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// ilgili tablodaki aktiflik durumunu kontrol eden SQL sorgusu
$sql = "SELECT aktiflik FROM table_name WHERE user_id = :user_id";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':user_id' => $user_id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// kullanıcının sisteme giriş yaptığını kontrol eden kod parçası
if ($row['aktiflik'] == 1) {
// kullanıcı sisteme giriş yapmış
// hesaplamalar
$sonuc = ...;
// başka bir tabloya insert etmek için SQL sorgusu
$sql = "INSERT INTO table_name (user_id, sonuc) VALUES (:user_id, :sonuc)";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':user_id' => $user_id, ':sonuc' => $sonuc));
}
Ayrıca her gün otomatik olarak yapmasını istediğiniz işlemi gerçekleştirmek için bir cron job oluşturmanız gerekir.
Cron job oluşturmak için ilk olarak terminale erişiminiz olması gerekir. Erişiminiz varsa, terminale "crontab -e" komutunu yazabilirsiniz. Bu komut, cron tablosunun düzenlenmesi için bir düzenleyici açar.
Daha sonra, oluşturmak istediğiniz cron job'unun nasıl çalışacağını belirtmeniz gerekir. Cron jobların çalışması için öncelikle belirli bir zaman aralığı belirtmeniz gerekmektedir. Bunun için cron tablosunda 5 adet alan bulunur:
Dakika (0 ile 59 arası)
Saat (0 ile 23 arası)
Gün (1 ile 31 arası)
Ay (1 ile 12 arası)
Haftanın günü (0 ile 7 arası, 0 ve 7 Pazar gününü ifade eder)
Bu alanları, belirli bir zaman aralığı için kullanabilirsiniz. Örneğin, her gün saat 00:00'da bir script'i çalıştırmak istiyorsanız, cron tablosunda aşağıdaki gibi bir girdi oluşturabilirsiniz:
0 0 * * * /usr/bin/php /path/to/script.php
Bu girdi, her gün saat 00:00'da /usr/bin/php komutunu kullanarak /path/to/script.php adresindeki script'i çalıştırır.
JavaScript ile internet bağlantısı olmadığında uyarı verebilirsiniz.
Örneğin, aşağıdaki kod, internet bağlantısı olmadığında kullanıcıya bir mesaj gösterir:
if (!navigator.onLine) {
alert("Üzgünüz, internet bağlantınız yok. Bu sayfayı kullanamazsınız!");
}
Bu kod, navigator.onLine
değişkenini kontrol eder. Eğer false
ise, kullanıcıya bir uyarı mesajı gösterir.
JavaScript ile kullanıcının internet bağlantısı yoksa belirli bir sayfaya yönlendirmek için aşağıdaki kodu kullanabilirsiniz:
if (!navigator.onLine) {
window.location.href = "offline.html";
}
Bu kod, internet bağlantısı yoksa kullanıcıyı "offline.html" adlı sayfaya yönlendirir. Bu sayfanın ismi ve yolu sizin belirlediğiniz sayfanın ismiyle değiştirilmeli.
Bunun dışında, HTML5 Application Cache API kullanarak offline sayfalar oluşturmanız mümkün. Bu API ile belirlediğiniz sayfaların veya dosyaların ön bellekte saklanmasını sağlayarak, kullanıcının internet bağlantısı olmadığında hala sayfaları görüntüleyebilmesini sağlarsınız.
Detaylar:
https://docs.tizen.org/application/web/guides/w3c/storage/appcache/
https://developer.mozilla.org/en-US/docs/Web/API/Window/applicationCache
İki alanı birleştirmek için, dosya yükleme işlemi yapılırken ayrıca veritabanına kayıt işlemi de gerçekleştirilmeli. Örnek olarak, dosya yükleme işlemi başarılı olduğunda, veritabanına kayıt işlemi gerçekleştirilebilir. Bu amaçla, dosya yükleme işlemi sonrasında yer alan "move_uploaded_file" fonksiyonunun içerisinde yer alan "if" bloğunun içerisine yeni bir "foreach" döngüsü ekleyebilirsiniz ve burada veritabanına kayıt işlemi gerçekleştirebilirsiniz.
Kodunuzda dosya yükleme işlemi yapılırken yüklenen dosyanın boyutunun 3 MB'dan büyük olup olmadığı kontrol edilmektedir. Eğer dosya 3 MB'dan büyükse kullanıcıya "Dosya Boyutu 3 MB'dan Büyük Olamaz" uyarısı verilmektedir ve işlem sonlandırılmaktadır. Bu kontrolü kaldırmak isterseniz, kontrol bloğunu kodunuzdan silebilirsiniz veya kontrol bloğunun içerisinde yer alan "if($dosya_boyutu > (1024*1024*3))
" kontrol kriteri değiştirerek dosya boyutunun daha büyük olmasına izin verebilirsiniz.
PHP ile kullanıcı girişi yaptırırken, veritabanındaki "veri" sütununa her 15 saniyede bir +15 eklemek için bir cron job oluşturabilirsiniz. Cron job, belirli bir zamanda belirli bir komutu otomatik olarak çalıştırmak için kullanılan bir araçtır. Örneğin, her 15 saniyede bir veritabanınızdaki "veri" sütununu +15 arttırmak için aşağıdaki komutu kullanabilirsiniz:
*/15 * * * * php /path/to/script.php
Bu komut, her 15 dakikada bir "path/to/script.php" dosyasını çalıştırır. Bu dosyada, veritabanına bağlanıp "veri" sütununu +15 arttıran kodları yazmalısınız.
Eğer sunucunuzda cron yoksa, benzer işlemler için "setInterval" metodu ile javascript ile yapabilirsiniz veya bir hizmet sağlayıcısı(Heroku gibi) ile kurulum yapabilirsiniz.
Merhaba,
Google arama sonuçlarında gösterilen başlıklar, meta tag'larınızda belirttiğiniz "title" ve "description" etiketlerine göre oluşur. Bu etiketleri değiştirmek için, NextJS projenizde "next-seo" veya "react-helmet" gibi bir eklenti kullanabilirsiniz.
Örneğin, "next-seo" eklentisi ile meta tag'larınızı şöyle tanımlayabilirsiniz:
import { NextSeo } from "next-seo";
function MyPage() {
return (
<>
<NextSeo title="FİRMA İSMİ" description="Firmanızın tanıtım metni" />
{/* Sayfanızın geri kalan kısmı */}
</>
);
}
Bu şekilde, arama sonuçlarında sadece "FİRMA İSMİ" yazacaktır ve ":" işareti de gözükmeyecektir. Ayrıca, "description" etiketi ile arama sonuçlarında gösterilen açıklama metnini de değiştirebilirsiniz.
Umarım bu bilgiler size yardımcı olmuştur.
Alternatif Kod:
START TRANSACTION;
INSERT INTO yeni_tablo (SKU, BARKOD)
SELECT DISTINCT eski_tablo.SKU, eski_tablo.BARKOD1 as BARKOD FROM eski_tablo
WHERE eski_tablo.BARKOD1 IS NOT NULL;
INSERT INTO yeni_tablo (SKU, BARKOD)
SELECT DISTINCT eski_tablo.SKU, eski_tablo.BARKOD2 as BARKOD FROM eski_tablo
WHERE eski_tablo.BARKOD2 IS NOT NULL;
INSERT INTO yeni_tablo (SKU, BARKOD)
SELECT DISTINCT eski_tablo.SKU, eski_tablo.BARKOD3 as BARKOD FROM eski_tablo
WHERE eski_tablo.BARKOD3 IS NOT NULL;
SET @row_count = ROW_COUNT();
IF (@row_count = 0) THEN
ROLLBACK;
SELECT 'Veri transferinde beklenmedik bir sorun oluştu!' AS Result;
ELSE
DELETE FROM eski_tablo;
COMMIT;
SELECT 'Veri transfer işlemi başarıyla tamamlandı :)' AS Result;
END IF;
SQL komutunu çalıştırırken 'TRANSACTION' kullanın. Bu, veri taşıma işlemi sırasında oluşabilecek hatalar nedeniyle veritabanınızın bozulmamasını sağlar. Eski tablo ile yeni tablodaki veri tiplerinin, birincil anahtar ve yabancıl anahtarların
vs. aynı olduğundan emin olduktan sonra yeni tabloya verileri kayıpsız şekilde aktarmanız için aşağıdaki SQL komutunu kullanabilirsiniz:
START TRANSACTION;
INSERT INTO yeni_tablo (SKU, BARKOD)
SELECT DISTINCT eski_tablo.SKU, eski_tablo.BARKOD1 as BARKOD FROM eski_tablo
UNION
SELECT DISTINCT eski_tablo.SKU, eski_tablo.BARKOD2 as BARKOD FROM eski_tablo
UNION
SELECT DISTINCT eski_tablo.SKU, eski_tablo.BARKOD3 as BARKOD FROM eski_tablo;
SET @row_count = ROW_COUNT();
IF (@row_count = 0) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Veri transferinde beklenmedik bir sorun oluştu!';
ELSE
DELETE FROM eski_tablo;
COMMIT;
SELECT 'Veri transfer işlemi başarıyla tamamlandı :)' AS Result;
END IF;
Bu kod bloğunda, veri taşıma işlemi 'START TRANSACTION' komutu ile başlatılır. Ardından, eski tablodaki veriler yeni tabloya taşınır. Eğer veri taşıma işlemi başarılı olursa, eski tablodaki veriler 'DELETE' komutu ile silinir ve işlem 'COMMIT' komutu ile tamamlanır. Ancak herhangi bir hata oluşursa veya yeni tabloya hiç veri eklenmezse, 'ROLLBACK' komutu ile tüm işlem geri alınır ve veritabanı eski haline geri döner.
Bu komut, eski tablonun tüm verilerini yeni tablonun BARKOD sütununa yerleştirir. Ancak, eski tablonun verilerinin kopyalanması sırasında aynı anahtarı kullanan kayıtların çiftleri oluşabilir. Bu nedenle, yeni tablonun anahtarının benzersiz olmasını sağlamak için önceden 'UNIQUE' kısıtını uygulamanızı öneririm.
Ve Aleyküm Selam :)
JavaScript ile PHP'nin $_SESSION değişkenine erişemezsiniz. Bunun yerine, JavaScript ile sessionStorage objesi kullanarak, tarayıcının sessionStorage özelliğini kullanabilirsiniz. Örnek olarak, aşağıdaki gibi kullanabilirsiniz:
sessionStorage.setItem('key', data.mail);
Bu kod, tarayıcının sessionStorage özelliğine key anahtarını ve değer olarak data.mail değişkenini atayacaktır. Daha sonra, istediğiniz yerde sessionStorage.getItem('key') şeklinde bu değeri alabilirsiniz.
Bu yöntem ile PHP ile aynı session değerlerine erişebilir, ancak PHP ile değiştirilemez. Eğer PHP ile değiştirmek istiyorsanız, AJAX ile PHP'ye tekrar istek göndermeniz gerekir.
Örneğin:
$.ajax({
type: "POST",
url: "<?=$siteURL?>data/islem.php",
data: {
'key': data.mail
},
success: function(response) {
// İşlem başarılı
}
});
Bu AJAX isteği ile data/islem.php dosyasına key değişkenini gönderir, ve PHP tarafında bu değişkeni $_POST['key'] şeklinde alıp, $_SESSION değişkenine atayabilirsiniz.
$_SESSION['key'] = $_POST['key'];
Umarım bu bilgiler yardımcı olmuştur :)
Bunu yapmak için öncelikle veritabanından verileri sayfalama yöntemiyle çekmelisiniz. Bu sayede veritabanından bir kere çektiğiniz verileri sayfalara bölerek gösterir ve kullanıcı daha fazla veri görmek istediğinde sayfayı yenilemeden verileri gösterir.
İlk olarak, veritabanından verileri çekmek için kullandığınız sorguyu değiştirin ve verileri limitleme kısmını belirleyecek değişkenler kullanın. Örneğin:
$limit = 10; // Her sayfada gösterilecek veri sayısı
$page = 1; // Başlangıçta gösterilecek olan sayfa
$soru=$db->prepare("SELECT * FROM uye_gonderi INNER JOIN uyeler ON uyeler.uye_id = uye_gonderi.gonderi_kim ORDER BY gonderi_id DESC LIMIT :limit OFFSET :offset");
$soru->bindValue(':limit', $limit, PDO::PARAM_INT);
$soru->bindValue(':offset', ($page - 1) * $limit, PDO::PARAM_INT);
$soru->execute();
Daha sonra, kullanıcı "Daha Fazla Soru Göster" butonuna tıkladığında sayfayı yenilemeyi ve veritabanından daha fazla veri çekmeyi önleyerek verileri göstermek istediği sayfaya gitmek için JavaScript kullanabilirsiniz. Örneğin:
<button type="button" class="btn btn-primary mb-3" onclick="loadMore()">Daha Fazla Soru Göster</button>
<script>
function loadMore() {
// Verileri yüklemek için kullanılacak sayfa değişkenini bir arttırın
page++;
// Verileri yüklemek için Ajax isteği gönderin
$.ajax({
url: 'get-data.php', // Verileri çekmek için kullandığınız PHP dosyası
data: {
limit: limit,
page: page
},
success: function(data) {
// Verileri sayfaya ekleyin
$('.col-lg-6').append(data);
}
});
}
</script>
Son olarak, verileri çekmek için kullandığınız PHP dosyasında, ajax isteğinde gönderilen limit ve page değişkenlerini kullanarak veritabanından verileri çekin ve daha sonra sayfaya ekleyeceğiniz HTML çıktısı oluşturun. Örneğin:
<?php
// Veritabanı bağlantısını ve verileri çekmek için kullanılacak sorguyu aynen kullanın
$limit = $_GET['limit'];
$page = $_GET['page'];
$soru=$db->prepare("SELECT * FROM uye_gonderi INNER JOIN uyeler ON uyeler.uye_id = uye_gonderi.gonderi_kim ORDER BY gonderi_id DESC LIMIT :limit OFFSET :offset");
$soru->bindValue(':limit', $limit, PDO::PARAM_INT);
$soru->bindValue(':offset', ($page - 1) * $limit, PDO::PARAM_INT);
$soru->execute();
// Verileri döngüyle döndürün ve HTML çıktısı oluşturun
while($load=$soru->fetch(PDO::FETCH_ASSOC)){
echo '
<div class="col-lg-6">
<!-- Blog post-->
<div class="card mb-4">
<a href="#!"><img class="card-img-top" src="assets/post2.jpg" alt="..." /></a>
<div class="card-body">
<div class="small text-muted">'.date('d/m/Y H:i', strtotime($load["gonderi_tarih"])).'</div>
<h2 class="card-title h4">'.$load['gonderi_baslik'].'</h2>
<p class="card-text">'.substr($load['gonderi_aciklama'],0,100).'...</p>
<a class="btn btn-primary" href="#!">Detay Göster →</a>
</div>
</div>
</div>
';
}
?>
Bu şekilde, kullanıcı "Daha Fazla Soru Göster" butonuna tıkladığında sayfayı yenilemeden veritabanından daha fazla veri çekerek sayfada gösterilebilir.