Sık kullanılan JavaScript desenleri ve pratik kod parçacıkları.
MYSQL de Aggregate Fonksiyonlar
-- Toplam kayıt sayısı
SELECT COUNT(*) FROM ogrenciler;
-- Yaş ortalaması
SELECT AVG(yas) FROM ogrenciler;
-- En büyük yaş
SELECT MAX(yas) FROM ogrenciler;
-- En küçük yaş
SELECT MIN(yas) FROM ogrenciler;
-- Yaş toplamı
SELECT SUM(yas) FROM ogrenciler;
Php ile Arama ve Filtreleme
<?php
function kullaniciAra($pdo, $arama_terimi, $sayfa = 1, $sayfa_basina = 10) {
try {
$arama = "%$arama_terimi%";
$offset = ($sayfa - 1) * $sayfa_basina;
// Toplam sonuç sayısı
$toplam_sql = "SELECT COUNT(*) FROM kullanicilar
WHERE ad LIKE ? OR email LIKE ?";
$toplam_stmt = $pdo->prepare($toplam_sql);
$toplam_stmt->execute([$arama, $arama]);
$toplam_kayit = $toplam_stmt->fetchColumn();
$toplam_sayfa = ceil($toplam_kayit / $sayfa_basina);
// Arama sonuçları
$sql = "SELECT id, ad, email, kayit_tarihi FROM kullanicilar
WHERE ad LIKE ? OR email LIKE ?
ORDER BY kayit_tarihi DESC LIMIT ? OFFSET ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$arama, $arama, $sayfa_basina, $offset]);
$kullanicilar = $stmt->fetchAll(PDO::FETCH_ASSOC);
return [
'kullanicilar' => $kullanicilar,
'toplam_sayfa' => $toplam_sayfa,
'mevcut_sayfa' => $sayfa,
'toplam_kayit' => $toplam_kayit,
'arama_terimi' => $arama_terimi
];
} catch(PDOException $e) {
throw new Exception("Arama hatası: " . $e->getMessage());
}
}
?>
Php de Basit Dizi Kullanımı
<?php
$renkler = array("Kırmızı", "Mavi", "Yeşil", "Sarı");
$sayilar = [10, 20, 30, 40, 50];
echo "İlk renk: " . $renkler[0];
echo "<br>Üçüncü sayı: " . $sayilar[2];
echo "<br>Toplam renk sayısı: " . count($renkler);
?>
Çıktı:
İlk renk: Kırmızı
Üçüncü sayı: 30
Toplam renk sayısı: 4
MYSQL de Tablodaki belirli bir kaydı silme
DELETE FROM ogrenciler WHERE id = 1;
MYSQL de Tablodaki Belirli Sütunları Getirme
SELECT ad, soyad, email FROM ogrenciler;
Verilen bir metni ters çeviren fonksiyon.
function reverseString(str) {
return str.split('').reverse().join('');
}
const myString = "JavaScript";
console.log(reverseString(myString)); // Çıktı: "tpircSavaJ"
Php de Boolean (Mantıksal) Değişkenler
<?php
$aktif = true;
$admin = false;
echo "Kullanıcı aktif: " . ($aktif ? "Evet" : "Hayır");
echo "<br>Admin yetkisi: " . ($admin ? "Var" : "Yok");
?>
Çıktı:
Kullanıcı aktif: Evet
Admin yetkisi: Yok
MYSQL de tablodaki bir den çok veriyi güncelleme
UPDATE ogrenciler
SET ad = 'Ahmet Can', yas = 21
WHERE id = 1;
MYSQL de Tabloya Çoklu Kayıt Ekleme
INSERT INTO ogrenciler (ad, soyad, yas, email) VALUES
('Mehmet', 'Demir', 22, 'mehmet@email.com'),
('Ayşe', 'Kaya', 19, 'ayse@email.com'),
('Fatma', 'Çelik', 21, 'fatma@email.com');
Php de MYSQL veritabanına kayıt ekleme işlemi
<?php
function kullaniciEkle($pdo, $ad, $email, $sifre) {
try {
$hashedPassword = password_hash($sifre, PASSWORD_DEFAULT);
$sql = "INSERT INTO kullanicilar (ad, email, sifre) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$ad, $email, $hashedPassword]);
return $pdo->lastInsertId();
} catch(PDOException $e) {
throw new Exception("Kullanıcı eklenirken hata: " . $e->getMessage());
}
}
// Kullanım
if ($_POST['kayit']) {
$yeni_id = kullaniciEkle($pdo, $_POST['ad'], $_POST['email'], $_POST['sifre']);
echo "Yeni kullanıcı ID: " . $yeni_id;
}
?>
Php de MySql veritabından veri silme işlemi
<?php
function kullaniciSil($pdo, $id) {
try {
$sql = "DELETE FROM kullanicilar WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$id]);
return $stmt->rowCount();
} catch(PDOException $e) {
throw new Exception("Kullanıcı silinirken hata: " . $e->getMessage());
}
}
// Kullanım
if ($_POST['sil']) {
$etkilenen_satir = kullaniciSil($pdo, $_POST['id']);
if ($etkilenen_satir > 0) {
echo "Kullanıcı başarıyla silindi.";
} else {
echo "Silinecek kullanıcı bulunamadı.";
}
}
?>
Verilen bir sayı dizisindeki en büyük elemanı bulan fonksiyon.
function findMaxInArray(arr) {
if (arr.length === 0) {
return undefined;
}
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
const numbers = [3, 7, 2, 9, 4, 1];
console.log(findMaxInArray(numbers)); // Çıktı: 9
MYSQL de tablodan veri çekerken bir filtre uygulama
SELECT yas, COUNT(*) as sayi
FROM ogrenciler
GROUP BY yas
HAVING sayi > 1;
Php de Veri Doğrulama
<?php
function veriDogrula($veri) {
$hatalar = [];
// Ad kontrolü
if (empty($veri['ad'])) {
$hatalar[] = "Ad alanı boş olamaz.";
} elseif (strlen($veri['ad']) < 2) {
$hatalar[] = "Ad en az 2 karakter olmalıdır.";
}
// Email kontrolü
if (empty($veri['email'])) {
$hatalar[] = "Email alanı boş olamaz.";
} elseif (!filter_var($veri['email'], FILTER_VALIDATE_EMAIL)) {
$hatalar[] = "Geçerli bir email adresi giriniz.";
}
// Şifre kontrolü
if (empty($veri['sifre'])) {
$hatalar[] = "Şifre alanı boş olamaz.";
} elseif (strlen($veri['sifre']) < 6) {
$hatalar[] = "Şifre en az 6 karakter olmalıdır.";
}
return $hatalar;
}
// Kullanım
if ($_POST['kayit']) {
$hatalar = veriDogrula($_POST);
if (empty($hatalar)) {
// Veri geçerli, kayıt işlemini yap
kullaniciEkle($pdo, $_POST['ad'], $_POST['email'], $_POST['sifre']);
} else {
// Hataları göster
foreach ($hatalar as $hata) {
echo "<p style='color: red;'>$hata</p>";
}
}
}
?>
Php de gettype() ve var_dump() Fonksiyonları
<?php
$metin = "PHP öğreniyorum";
$sayi = 42;
$ondalik = 3.14;
$mantik = true;
echo "Metin türü: " . gettype($metin);
echo "<br>Sayı türü: " . gettype($sayi);
echo "<br>Ondalık türü: " . gettype($ondalik);
echo "<br>Mantık türü: " . gettype($mantik);
?>
Çıktı:
Metin türü: string
Sayı türü: integer
Ondalık türü: double
Mantık türü: boolean
MYSQL de Tablodaki verileri gruplayarak çekme
SELECT yas, COUNT(*) as sayi FROM ogrenciler GROUP BY yas;
PHP de güvenli şifre yönetimi
<?php
// Şifre hashleme
function sifreHashle($sifre) {
return password_hash($sifre, PASSWORD_DEFAULT);
}
// Şifre doğrulama
function sifreDogrula($sifre, $hash) {
return password_verify($sifre, $hash);
}
// Güçlü şifre kontrolü
function gucluSifreKontrol($sifre) {
$hatalar = [];
if (strlen($sifre) < 8) {
$hatalar[] = "Şifre en az 8 karakter olmalıdır.";
}
if (!preg_match('/[A-Z]/', $sifre)) {
$hatalar[] = "Şifre en az bir büyük harf içermelidir.";
}
if (!preg_match('/[a-z]/', $sifre)) {
$hatalar[] = "Şifre en az bir küçük harf içermelidir.";
}
if (!preg_match('/[0-9]/', $sifre)) {
$hatalar[] = "Şifre en az bir rakam içermelidir.";
}
if (!preg_match('/[^A-Za-z0-9]/', $sifre)) {
$hatalar[] = "Şifre en az bir özel karakter içermelidir.";
}
return $hatalar;
}
?>
Php de Hata yönetimi için kullanılan Try-Catch Blokları
<?php
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Veritabanı işlemleri
$stmt = $pdo->prepare("SELECT * FROM kullanicilar WHERE id = ?");
$stmt->execute([$id]);
$kullanici = $stmt->fetch();
} catch(PDOException $e) {
// Veritabanı hatası
error_log("Veritabanı hatası: " . $e->getMessage());
echo "Bir hata oluştu. Lütfen daha sonra tekrar deneyin.";
} catch(Exception $e) {
// Genel hata
error_log("Genel hata: " . $e->getMessage());
echo "Beklenmeyen bir hata oluştu.";
}
?>
Php de İlişkisel Dizi (Associative Array)
<?php
$kisi = array(
"ad" => "Ali",
"soyad" => "Veli",
"yas" => 30,
"meslek" => "Mühendis"
);
echo "Ad: " . $kisi["ad"];
echo "<br>Yaş: " . $kisi["yas"];
?>
Çıktı:
Ad: Ali
Yaş: 30
MYSQL de İndeks Oluşturma
CREATE INDEX idx_email ON ogrenciler(email);
CREATE INDEX idx_ad_soyad ON ogrenciler(ad, soyad);
MYSQL de İndeks Silme
DROP INDEX idx_email ON ogrenciler;
MYSQL de JOIN İşlemleri
-- INNER JOIN
SELECT o.ad, o.soyad, b.bolum_adi
FROM ogrenciler o
INNER JOIN bolumler b ON o.bolum_id = b.id;
-- LEFT JOIN
SELECT o.ad, o.soyad, b.bolum_adi
FROM ogrenciler o
LEFT JOIN bolumler b ON o.bolum_id = b.id;
Php de Karşılaştırma Operatörleri - Büyüklük Karşılaştırması
<?php
$x = 10;
$y = 7;
var_dump($x > $y); // true
var_dump($x <= $y); // false
?>
Çıktı:
10 > 7: bool(true)
10 <= 7: bool(false)
Php de Karşılaştırma Operatörleri - Eşitlik Kontrolü
<?php
$a = 5;
$b = "5";
var_dump($a == $b); // true
var_dump($a === $b); // false
?>
Çıktı:
== karşılaştırması: bool(true)
=== karşılaştırması: bool(false)
MYSQL de Tablodaki veriyi belirli bir koşula göre güncelleme
UPDATE ogrenciler
SET yas = yas + 1
WHERE yas < 25;
MYSQL de tablodaki verileri belirli bir koşula göre silme
DELETE FROM ogrenciler WHERE yas < 18;
MYSQL de Tablodaki verileri belirli bir koşula göre çekme
SELECT * FROM ogrenciler WHERE yas > 20;
SELECT * FROM ogrenciler WHERE ad = 'Ahmet';
SELECT * FROM ogrenciler WHERE yas BETWEEN 18 AND 25;
SELECT * FROM ogrenciler WHERE email LIKE '%@gmail.com';
MySQLi, MySQL'e özel geliştirilmiş bir uzantıdır.
<?php
$servername = "localhost";
$username = "kullanici_adi";
$password = "sifre";
$dbname = "veritabani_adi";
// Nesne yönelimli yaklaşım
$mysqli = new mysqli($servername, $username, $password, $dbname);
if ($mysqli->connect_error) {
die("Bağlantı hatası: " . $mysqli->connect_error);
}
echo "Bağlantı başarılı!";
$mysqli->close();
?>
Php ile oturum açma ve giriş yapma
<?php
session_start();
function kullaniciGirisi($pdo, $email, $sifre) {
try {
$sql = "SELECT id, ad, email, sifre FROM kullanicilar WHERE email = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$email]);
$kullanici = $stmt->fetch(PDO::FETCH_ASSOC);
if ($kullanici && password_verify($sifre, $kullanici['sifre'])) {
$_SESSION['kullanici_id'] = $kullanici['id'];
$_SESSION['kullanici_ad'] = $kullanici['ad'];
$_SESSION['kullanici_email'] = $kullanici['email'];
return true;
}
return false;
} catch(PDOException $e) {
throw new Exception("Giriş kontrolü sırasında hata: " . $e->getMessage());
}
}
// Kullanım
if ($_POST['giris']) {
if (kullaniciGirisi($pdo, $_POST['email'], $_POST['sifre'])) {
header("Location: dashboard.php");
exit();
} else {
echo "Email veya şifre hatalı!";
}
}
?>
php ile Oturum açma da Oturum Kontrolü
<?php
function oturumKontrol() {
if (!isset($_SESSION['kullanici_id'])) {
header("Location: giris.php");
exit();
}
}
// Korumalı sayfalarda kullanım
session_start();
oturumKontrol();
?>
PDO, farklı veritabanı türleri için tutarlı bir arayüz sağlar ve güvenlik açısından önerilir.
<?php
$servername = "localhost";
$username = "kullanici_adi";
$password = "sifre";
$dbname = "veritabani_adi";
try {
$pdo = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Bağlantı başarılı!";
} catch(PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
?>
Belirtilen minimum ve maksimum değerler arasında rastgele bir tam sayı üreten fonksiyon.
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandomInt(1, 10));
Php de MySql veritabanına eklenen tüm verileri getirme
<?php
function tumKullanicilariGetir($pdo) {
try {
$sql = "SELECT id, ad, email, kayit_tarihi FROM kullanicilar ORDER BY kayit_tarihi DESC";
$stmt = $pdo->query($sql);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
throw new Exception("Kullanıcılar getirilirken hata: " . $e->getMessage());
}
}
function kullaniciGetir($pdo, $id) {
try {
$sql = "SELECT id, ad, email, kayit_tarihi FROM kullanicilar WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$id]);
return $stmt->fetch(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
throw new Exception("Kullanıcı getirilirken hata: " . $e->getMessage());
}
}
?>
php ile Sayfalama (Pagination)
<?php
function sayfalama($pdo, $sayfa = 1, $sayfa_basina = 10) {
try {
$offset = ($sayfa - 1) * $sayfa_basina;
// Toplam kayıt sayısı
$toplam_stmt = $pdo->query("SELECT COUNT(*) FROM kullanicilar");
$toplam_kayit = $toplam_stmt->fetchColumn();
$toplam_sayfa = ceil($toplam_kayit / $sayfa_basina);
// Sayfalanmış veriler
$sql = "SELECT id, ad, email, kayit_tarihi FROM kullanicilar
ORDER BY kayit_tarihi DESC LIMIT ? OFFSET ?";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(1, $sayfa_basina, PDO::PARAM_INT);
$stmt->bindParam(2, $offset, PDO::PARAM_INT);
$stmt->execute();
$kullanicilar = $stmt->fetchAll(PDO::FETCH_ASSOC);
return [
'kullanicilar' => $kullanicilar,
'toplam_sayfa' => $toplam_sayfa,
'mevcut_sayfa' => $sayfa,
'toplam_kayit' => $toplam_kayit
];
} catch(PDOException $e) {
throw new Exception("Sayfalama hatası: " . $e->getMessage());
}
}
?>
Php de Sayısal Değişkenler
<?php
$yas = 28;
$maas = 7500.50;
echo "Yaş: " . $yas;
echo "<br>Maaş: " . $maas . " TL";
?>
Çıktı:
Yaş: 28
Maaş: 7500.5 TL
MYSQL de tablodaki belirli sayıdaki verileri çekme
SELECT * FROM ogrenciler LIMIT 5;
SELECT * FROM ogrenciler LIMIT 5, 10; -- 5. kayıttan başlayarak 10 kayıt
MYSQL de Tablodaki verileri çekerken sıralama
SELECT * FROM ogrenciler ORDER BY ad ASC; /*A dan Z ye*/
SELECT * FROM ogrenciler ORDER BY yas DESC; /*Z den A ya*/
SELECT * FROM ogrenciler ORDER BY ad, soyad;
PHP de String (Metin) Değişkenleri
<?php
$isim = "Ahmet Yılmaz";
$meslek = 'Yazılım Geliştirici';
echo "İsim: " . $isim;
echo "<br>Meslek: " . $meslek;
?>
Çıktı:
İsim: Ahmet Yılmaz
Meslek: Yazılım Geliştirici
MYSQL de Bire Çok İlişki Örneği
-- Bölümler tablosu
CREATE TABLE bolumler (
id INT AUTO_INCREMENT PRIMARY KEY,
bolum_adi VARCHAR(100) NOT NULL
);
-- Öğrenciler tablosuna bölüm referansı ekleme
ALTER TABLE ogrenciler
ADD COLUMN bolum_id INT,
ADD FOREIGN KEY (bolum_id) REFERENCES bolumler(id);
MYSQL de Tablo Oluşturma
CREATE TABLE ogrenciler (
id INT AUTO_INCREMENT PRIMARY KEY,
ad VARCHAR(50) NOT NULL,
soyad VARCHAR(50) NOT NULL,
yas INT,
email VARCHAR(100) UNIQUE,
kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
MYSQL de Tablo Silme
DROP TABLE ogrenciler;
MYSQL de Tablo Yapısını Görme
DESCRIBE ogrenciler;
-- veya
SHOW COLUMNS FROM ogrenciler;
MYSQL de Tabloları Listeleme
SHOW TABLES;
MYSQL de Tabloya Tek Kayıt Ekleme
INSERT INTO ogrenciler (ad, soyad, yas, email)
VALUES ('Ko', 'Demi', 20, 'kodemi@esitemiz.com');
MYSQL de Tablodaki bir veriyi güncelleme
UPDATE ogrenciler
SET email = 'yeni_email@email.com'
WHERE id = 1;
Php de Temel Matematik İşlemleri
<?php
$a = 15;
$b = 4;
echo "Toplama: " . ($a + $b);
echo "Çıkarma: " . ($a - $b);
echo "Çarpma: " . ($a * $b);
echo "Bölme: " . ($a / $b);
echo "Mod: " . ($a % $b);
?>
Çıktı:
Toplama: 19
Çıkarma: 11
Çarpma: 60
Bölme: 3.75
Mod (Kalan): 3
MYSQL de tablodaki verilerin tamamını silme
DELETE FROM ogrenciler;
-- veya daha hızlı:
TRUNCATE TABLE ogrenciler;
MYSQL de Tablonun Tüm Sütunlara Veri Ekleme
INSERT INTO ogrenciler VALUES
(NULL, 'Ali', 'Veli', 23, 'ali@email.com', NOW());
MYSQL de Tablodaki tüm verileri çekme
SELECT * FROM ogrenciler;
Php de MySql veritabanındaki veri güncelleme işlemi
<?php
function kullaniciGuncelle($pdo, $id, $ad, $email) {
try {
$sql = "UPDATE kullanicilar SET ad = ?, email = ? WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$ad, $email, $id]);
return $stmt->rowCount();
} catch(PDOException $e) {
throw new Exception("Kullanıcı güncellenirken hata: " . $e->getMessage());
}
}
// Kullanım
if ($_POST['guncelle']) {
$etkilenen_satir = kullaniciGuncelle($pdo, $_POST['id'], $_POST['ad'], $_POST['email']);
echo $etkilenen_satir . " satır güncellendi.";
}
?>
MYSQL de Veritabanı Oluşturma
CREATE DATABASE okul;
MYSQL de Veritabanı Seçme
USE okul;
MYSQL de Veritabanı Silme
DROP DATABASE okul;
MYSQL de Veritabanlarını Listeleme
SHOW DATABASES;
Php de XSS Koruması
<?php
function guvenliCikti($veri) {
return htmlspecialchars($veri, ENT_QUOTES, 'UTF-8');
}
// Kullanım
echo "<p>Kullanıcı adı: " . guvenliCikti($kullanici['ad']) . "</p>";
?>