Next.js web siteniz için HTTPS yeniden yönlendirmesini yapılandırmak üzere next.config.js
dosyanızdaki redirects özelliğini kullanabilirsiniz.
Örnek
module.exports = {
redirects() {
return [
{
source: ':url(.*)',
destination: 'https://domain.com:url',
permanent: true,
},
]
},
}
Bu yapılandırma, gelen tüm istekleri alanınızın HTTPS sürümüne yönlendirir.
Kaynak özelliği, tüm URL'lerle eşleşen normal bir ifadedir ve hedef özelliği, yönlendirilecek URL'dir.
Kalıcı özellik, yönlendirmenin kalıcı olduğunu belirtmek için true olarak ayarlanır.
Otomatik yeniden yönlendirmeyi etkinleştirmek için next.config.js
dosyanızdaki yönlendirme özelliğini de kullanabilir ve bunu true olarak ayarlayabilirsiniz.
Örnek
module.exports = {
redirect: true,
}
kodu etki alanınız ve bağlantı noktanız gibi özel ihtiyaçlarınıza uyacak şekilde ayarlamanız gerekecek.
Ayrıca, Nginx gibi proxy kullanıyorsanız, bunu Next.js
uygulamanızda yapmak yerine yeniden yönlendirmeyi işleyecek şekilde yapılandırabilirsiniz.
Bir ürün için birden çok ekran görüntüsü kaydetmek için
PDO'da nasıl kullanabileceğinize bilgiler.
Öncelikle HTML sayfanızda, dosya yükleme işlemini gerçekleştirmek için
işlemlerde Dropzone kitaplığını kullandım.
Dropzone kitaplığını kullanmak istemiyorsanız Alternatif Olarak Verot Sınıfınıda kullanabilirsin
ancak verot ile kullanırsanız işlemler farklılık gösterebilir.
Örnek
<form action="upload.php" class="dropzone"></form>
Ayrıca, uygun CSS ve JavaScript dosyalarına bağlayarak yapabileceğiniz
Dropzone kitaplığını HTML sayfanıza eklemeniz gerekir.
upload.php dosyasında, karşıya yüklenen dosyaları işlemeniz ve bunları
PDO kullanarak veritabanına eklemeniz gerekir.
Örnek
<?php
// Veritabanı Bağlantısı Yapın
// Ürün bilgilerini ürünler tablosuna girin
$query = $pdo->prepare('INSERT INTO ürünler (baslik, aciklama) VALUES (:baslik, :aciklama)');
$query->bindParam(':baslik', $_POST['baslik']);
$query->bindParam(':aciklama', $_POST['aciklama']);
$query->execute();
// Ürün için son ekleme kimliğini alın
$urun_id = $pdo->lastInsertId();
// Yüklenen dosyalar arasında sıralı bir şekilde ilerleme
foreach ($_FILES['file']['baslik'] as $i => $baslik) {
if (strlen($_FILES['file']['baslik'][$i]) > 1) {
if (move_uploaded_file($_FILES['file']['tmp_baslik'][$i], 'upload/resimlerim/' . $baslik)) {
// Dosya bilgilerini, ürün kimliğiyle birlikte ayrı ekran görüntüleri tablosuna ekleyin
$query = $pdo->prepare('INSERT INTO resimler (urun_id, baslik, parent) VALUES (:urun_id, :baslik, :parent)');
$query->bindParam(':urun_id', $urun_id);
$query->bindParam(':baslik', $baslik);
$query->bindParam(':parent', 'upload/resimlerim/' . $baslik);
$query->execute();
}
}
}
?>
Ekran görüntülerini web sayfanızda görüntülemek için,
bir SELECT ifadesi kullanarak bunları ayrı ekran görüntüleri tablosundan
almanız ve ardından sonuçları yinelemek ve ekran görüntülerinin çıktısını almak için
foreach döngüsünü kullanmanız gerekir.
Örnek
<?php
// Ürün kimliğini url'den alın
$urun_id = $_GET['urun_id'];
// Ürünün ekran görüntülerini ayrı ekran görüntüleri tablosundan alın
$query = $pdo->prepare('SELECT * FROM resimler WHERE urun_id = :urun_id');
$query->bindParam(':urun_id', $urun_id);
$query->execute();
$resimlerim = $query->fetchAll();
// Resimler Çıktısı
foreach ($resimlerim as $resim) {
echo '<img src="' . $resim['parent'] . '" alt="' . $resim['baslik'] . '" />';
}
?>
Ekran görüntülerini web sayfanızda sıralı görüntülemek için css uyarlayıp veya hazır templatelerden yararlanabilirsin.
Veritabanında olan Dolar ve Euro'yu toplam olarak gösterebilmek için,
veritabanındaki Dolar ve Euro kolonlarının değerlerini
toplayarak sonucu bir yeni kolonda gösterebilirsin.
Aşağıdaki php koduyla veritabanındaki Dolar ve Euro kolonlarının değerlerini
toplayarak yeni bir kolon oluşturabilirsin
Örnek kod
SELECT (Dolar + Euro) AS Total FROM veriler
Bu sorgu veritabanındaki "veriler" tablosundaki Dolar ve Euro kolonlarının
değerlerini toplayacak ve sonucu "Total" adlı yeni bir kolonda gösterecektir.
2 tarih arasındaki verileri seçmek için BETWEEN ifadesini kullanabilirsin.
Aylık veya yıllık fiyat toplamlarını almak için ise grupby bölme yapabilirsin.
Örnek kodlar
$b_tarih = '2022-01-01';//başlangıç tarihi
$e_tarih = '2022-12-31'; //bitiş tarihi
$stmt = $pdo->prepare("SELECT MONTH(tarih) as month, SUM(fiyat) as toplam_fiyat FROM siparisler WHERE tarih BETWEEN :b_tarih AND :e_tarih GROUP BY MONTH(tarih)");
$stmt->bindParam(':b_tarih', $b_tarih);
$stmt->bindParam(':e_tarih', $e_tarih);
$stmt->execute();
// Dizeyi ilişkisel olarak ayarlamak
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
Bu kod veritabanında "siparisler" tablosunda "tarih"
sütununda 2022 yılına ait verileri arar ve bulunan verileri ay bazlı toplar.
Bir buttona 3 saniye basılı tutulduktan sonra bir AJAX Sorgusunu Çalıştırmak
için JavaScript'teki setTimeout işlevini kullanabilirsin.
Örnek kod
let timeoutID
document.getElementById("Button").addEventListener("mousedown", function() {
timeoutID = setTimeout(ajaxCall, 3000);
});
document.getElementById("Button").addEventListener("mouseup", function() {
clearTimeout(timeoutID);
});
function ajaxCall() {
// Ajax kodlarınız burada
}
Button kimliğine sahip butona basılı tutulduğunda,
setTimeout işlevi 3 saniye (3000 milisaniye) gecikmeyle çağrılır
MySQL veritabanı kullanarak verileri saniyelerle sınırlamak için, sorgunuzda "WHERE" komutunu kullanabilirsiniz.
Örneğin, son bir saat içinde oluşan verileri çekmek isterseniz, aşağıdaki gibi bir sorgu kullanabilirsiniz:
SELECT * FROM tablo_adi WHERE zaman_sutunu >= DATE_SUB(NOW(), INTERVAL 1 HOUR);
Bu sorgu "tablo_adi" tablosunda "zaman_sutunu" sütununda kayıtlı olan verileri verir ve bu verilerin oluşma zamanı,
şu andan 1 saat öncesine eşit veya daha yeni olmalıdır.
DATE_SUB() fonksiyonu MySQL'de zaman dilimleri için kullanılan bir fonksiyondur.
Bu fonksiyon verilen bir zaman dilimi, verilen bir zamandan önceki bir zaman dilimini elde etmek için kullanılabilir.
"NOW()" fonksiyonu ise şu anki tarih ve saati döndürür.
Aynı şekilde, saniye cinsinden de sorgu yapabilirsiniz. Örnek:
SELECT * FROM tablo_adi WHERE zaman_sutunu >= DATE_SUB(NOW(), INTERVAL 30 SECOND);
Bu sorgu son 30 saniye içinde oluşan verileri verir.
JavaScript'te birden fazla diziyi karıştırmak için concat() metodunu veya spread operator kullanabilirsiniz.
concat() metodu iki veya daha fazla diziyi birleştirir ve yeni bir dizi oluşturur.
spread operator (...) dizileri ayrıştırmak için kullanılır ve dizileri birleştirirken daha esnek bir yol sağlar.
Örneğin, aşağıdaki örnekte iki dizi ("dizi1" ve "dizi2") kullanılır ve concat() metodu ile birleştirilir.
const dizi1 = [1, 2, 3];
const dizi2 = [4, 5, 6];
const karisikDizi = dizi1.concat(dizi2);
console.log(karisikDizi); // [1, 2, 3, 4, 5, 6]
Aynı işlemi spread operator ile yapmak için :
const dizi1 = [1, 2, 3];
const dizi2 = [4, 5, 6];
const karisikDizi = [...dizi1, ...dizi2];
console.log(karisikDizi); // [1, 2, 3, 4, 5, 6]
Birden fazla diziyi karıştırmak isterseniz, dizileri rastgele sıralamak için sort() metodunu kullanabilirsiniz.
Ancak dizileri sıralamak için kullanılır o yüzden karıştırma olarak kullanamayız.
Onun yerine 'Fisher-Yates Shuffle Algorithm' yada benzeri bir algoritma kullanmanız önerilir.
function karisikDizi(arr) {
for (let i = arr.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
}
Bu fonksiyon, gönderilen diziyi rastgele sıralar ve yeni bir dizi oluşturmaz.
veritabanınızda bir tablonun verilerini başka bir tablo'ya taşımak istiyorsanız,
aşağıdaki SQL sorgusunu kullanabilirsin
INSERT INTO yeni_tablo (kolon1, kolon2, ...)
SELECT kolon1, kolon2, ...
FROM eski_tablo
WHERE koşul;
Bu sorgu ile, eski_tablo adlı tablonun belirtilen koşulu sağlayan
tüm satırlarını yeni_tablo adlı tablo'ya kopyalayabilirsiniz.
Örneğin, aşağıdaki sorgu ile eski_tablo tablosundaki tüm satırları yeni_tablo tablosuna kopyalayabilirsin
INSERT INTO yeni_tablo (kolon1, kolon2, ...)
SELECT kolon1, kolon2, ...
FROM eski_tablo;
Eğer sadece belirli bir koşul sağlanan satırları taşımak istiyorsanız, WHERE koşulu kullanabilirsiniz.
Örneğin, aşağıdaki sorgu ile eski_tablo tablosundaki id değeri 1 olan satırı
yeni_tablo tablosuna kopyalayabilirsin
INSERT INTO yeni_tablo (kolon1, kolon2, ...)
SELECT kolon1, kolon2, ...
FROM eski_tablo
WHERE id = 1;
Bu sorguyu kullanarak gerçekleştirebilirsin.
Örnek bir kod
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "INSERT INTO yeni_tablo (kolon1, kolon2, ...) SELECT kolon1, kolon2, ... FROM eski_tablo WHERE id = 1";
$stmt = $db->prepare($query);
$stmt->execute();
Bu kod parçacığında,
veritabanına bağlantı kurulur ve
INSERT INTO ... SELECT sorgusu ile eski_tablo tablosundan yeni_tablo tablosuna veri taşınır
Eğer tbody etiketine bir max-height değeri verdiyseniz ve bu değer çalışmıyorsa,
olası nedenlerden biri tbody etiketinin varsayılan olarak display: table-row-group değeri olmasıdır.
Bu, tbody etiketinin bir tablo satır grubu olarak görüntülenmesine neden olur ve bu nedenle max-height özelliği çalışmaz.
Bu sorunu çözmek için, tbody etiketine display: block değeri verin.
Bu, tbody etiketini bir bloğa dönüştürerek, max-height özelliğini kullanmanıza izin verecektir.
Örnek kod :
tbody {
display: block;
max-height: 200px;
min-height: 100px;
overflow-y: scroll;
}
Bu örnekte, tbody etiketi bir bloğa dönüştürülür ve max-height değeri 200px olarak ayarlanır.
overflow-y: scroll değeri, tbody etiketinin içeriğinin kaydırılmasına izin verir.
Bu şekilde, tbody etiketinin içeriği 200px'lik bir alana sığacak şekilde kaydırılabilir hale gelir.
AJAX tarafında hata mesajlarını göstermek için, ilk olarak AJAX isteğinizi gönderirken error callback fonksiyonunu tanımlamanız gerekiyor.
Bu fonksiyon, AJAX isteği başarısız olduğunda çalıştırılacak ve hata mesajlarını göstermek için kullanılacak.
Örnek olarak, aşağıdaki kod bloğu AJAX isteği başarısız olduğunda hata mesajı gösterebilir:
$.ajax({
url: '/update_profile',
type: 'POST',
data: { ... },
success: function(response) {
// İşlem başarılı olduğunda yapılacak işlemler
},
error: function(xhr, status, error) {
// İşlem başarısız olduğunda yapılacak işlemler
alert('Hata: ' + error);
}
});
Bu örnekte, AJAX isteği başarısız olduğunda error callback fonksiyonu çalıştırılır ve hata mesajı alert ile gösterilir.
Bu örnekteki error değişkeni, hata mesajının tam metnini içerir. Hata mesajını göstermek için bu değişkeni kullanabilirsiniz.
Not: Bu örnek jQuery kütüphanesi kullanılarak verilmiştir.
Eğer farklı bir JavaScript kütüphanesi veya vanilla JavaScript kullanıyorsanız, yukarıdaki örnekteki kod bloğunu uyarlamanız gerekebilir.