Selamlar TürkHackTeam ailesi, bendeniz Watnea.
PHP serimizin #4 Operatör serisindeyiz. Bu seride operatörleri öğreneceğiz. Elimden geldiğince anlatmaya çalışacağım. İyi okumalar.
Bir önce ki serimizde ele aldığımız PHP SABİTLER konusu için tıklayın.
PHP Operatörler, programlama dillerinde verilerle işlem yapabilmek için sadece değişkenler yeterli değildir. Değerleri birbirine eklemek, karşılaştırmak veya mantıksal koşullarda test etmek için operatörler kullanılır.
PHP de diğer diller gibi, işlem türüne göre farklı operatör gruplarına sahiptir. PHP’nin en temel üç operatör grubunu öğreneceğiz:
Aritmetik Operatörler,
Karşılaştırma Operatörleri,
Mantıksal Operatörler.
Atama Operatörleri
> Aritmetik Operatörler
Aritmetik operatörler, sayısal değerler üzerinde matematiksel işlemler yapmak için kullanılır. Toplama, çıkarma, çarpma, bölme, mod gibi klasik işlemler burada yer alır.
PHP:
<?php
$x = 10;
$y = 3;
// Toplama
echo $x + $y;
echo "<br>";
// Çıkarma
echo $x - $y;
echo "<br>";
// Çarpma
echo $x * $y;
echo "<br>";
// Bölme
echo $x / $y;
echo "<br>";
// Mod
echo $x % $y;
?>
Kısaca açıklamak gerekir ise, öncelikle $x ve $y adında iki değişken oluşturduk. Operatörlerimiz + - * / gibi işlemler ile de sayılarımızı topladık, çıkardık, çarptık.
Mantığı anlamak için kendiniz yazın sürekli çıktı kontrolü yapmayı unutmayın.
> Bonus Arttırma-Eksiltme
PHP:
<?php
$w = 5;
$w++;
echo $w
?>
> Karşılaştırma Operatörleri
İki değeri birbirleriyle karşılaştırmak için kullanılır. Genellikle koşul ifadelerinde if, while, switch tercih edilir. True ya da False değeri döndürür.
PHP:
<?php
$a = 10; // int
$b = "10"; // string
var_dump($a == $b);
var_dump($a === $b);
var_dump($a != $b);
var_dump($a !== $b);
var_dump($a > 5);
var_dump($a < 20);
?>
| Operatör | Açıklama | Örnek Kullanım | Sonuç |
| `==` | Değerler eşitse true döner. | 5 == "5" | True |
| `===` | Değer ve tür eşitse true döner. | 5 === "5" | False |
| `!=` | Değerler eşit değilse true döner. | 10 != 5 | True |
| `>` | Sol değer sağdan büyükse true döner. | 7 > 3 | True |
| `<` | Sol değer sağdan küçükse true döner. | 2 < 5 | True |
| `>=` | Sol değer sağdan büyük veya eşitse true döner. | 4 >= 4 | True |
| `<=` | Sol değer sağdan küçük veya eşitse true döner. | 3 <= 5 | True |
> Mantıksal Operatörler
Mantıksal operatörler, birden fazla koşulu birleştirerek karmaşık karar mekanizmaları kurmamıza yardımcı olur. En çok kullanılan operatörler ise and, or, && operatörleridir.
PHP:
<?php
$c = true;
$v = false;
var_dump($c && $v);
var_dump($c || $v);
var_dump(!$c);
var_dump($c xor $v);
?>
| Operatör | Anlamı | Açıklama | Örnek |
| `&&` veya `and` | ve | Her iki koşul da doğruysa true döner. | 5 > 2 && 8 > 6 |
| `!` | değil (not) | Koşulun tersini alır. | !(5 > 10) |
> Atama Operatörleri
Değeri, değişkene atarken kısa yol kullanmak gibi, atama operatörü ile değişkene atama yapabiliriz.
PHP:
<?php
$wat = 10;
$wat += 5;
$wat *= 2;
$yazi = "Merhaba";
$yazi .= " Dünya";
echo $wat;
echo "<br>";
echo $yazi;
?>
Burası çok önemli o yüzden resim ile destekleyeceğim:
> Sonuç
Operatörler, PHP’de veri manipülasyonunun kalbidir. Basit bir toplama işleminden karmaşık koşullara kadar her adımda karşımıza çıkarlar.
> Vize/Final Not Hesaplama -> Proje
Proje yaptığımız serilerde css kodlarını önemsemeyin ctrl+a ctrl+v yapabilirsiniz lakin, php kesinlikle okuyarak elle yazıyorsunuz. HTML kısmını da öğrenirsiniz herhalde.
CSS kısmı tamamen böyle güzel görüntüler için vardır.
Kodun uzunluğu satırı, karmaşası sizlerin kafasını karıştırmasın.
PHP:
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP Not Hesaplayıcı - Watnea</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Poppins', sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.container {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
border-radius: 20px;
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
padding: 40px;
max-width: 500px;
width: 100%;
position: relative;
overflow: hidden;
animation: slideUp 0.8s ease-out;
}
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(50px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.header {
text-align: center;
margin-bottom: 30px;
position: relative;
}
.header h1 {
color: #333;
font-size: 2.2rem;
margin-bottom: 10px;
background: linear-gradient(45deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: glow 2s ease-in-out infinite alternate;
}
@keyframes glow {
from {
text-shadow: 0 0 10px rgba(102, 126, 234, 0.5);
}
to {
text-shadow: 0 0 20px rgba(102, 126, 234, 0.8);
}
}
.header p {
color: #666;
font-size: 1rem;
}
.calculator-content {
display: flex;
gap: 30px;
align-items: flex-start;
}
.form-section {
flex: 1;
}
.image-section {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
opacity: 0;
animation: fadeIn 1s ease-out 0.5s forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: scale(0.8);
}
to {
opacity: 1;
transform: scale(1);
}
}
.calculator-image {
max-width: 100%;
height: auto;
filter: drop-shadow(0 10px 20px rgba(0, 0, 0, 0.1));
transition: transform 0.3s ease;
}
.calculator-image:hover {
transform: scale(1.05) rotate(2deg);
}
.form-group {
margin-bottom: 20px;
position: relative;
}
label {
display: block;
margin-bottom: 8px;
color: #555;
font-weight: 500;
transition: color 0.3s ease;
}
.input-wrapper {
position: relative;
}
input {
width: 100%;
padding: 12px 15px;
border: 2px solid #e1e5ee;
border-radius: 10px;
font-size: 16px;
transition: all 0.3s ease;
background: #f8f9fa;
}
input:focus {
outline: none;
border-color: #667eea;
background: white;
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
transform: translateY(-2px);
}
.input-icon {
position: absolute;
right: 15px;
top: 50%;
transform: translateY(-50%);
color: #667eea;
font-size: 18px;
}
button {
width: 100%;
padding: 14px;
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
border: none;
border-radius: 10px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
button:hover {
transform: translateY(-3px);
box-shadow: 0 10px 20px rgba(102, 126, 234, 0.3);
}
button:active {
transform: translateY(-1px);
}
button::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
transition: 0.5s;
}
button:hover::before {
left: 100%;
}
.result {
margin-top: 25px;
padding: 20px;
border-radius: 15px;
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
color: white;
animation: slideIn 0.5s ease-out;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(-20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.result h3 {
margin-bottom: 15px;
font-size: 1.3rem;
display: flex;
align-items: center;
gap: 10px;
}
.result-info {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
margin-bottom: 15px;
}
.result-item {
padding: 8px;
background: rgba(255, 255, 255, 0.2);
border-radius: 8px;
text-align: center;
}
.result-final {
text-align: center;
padding: 15px;
background: rgba(255, 255, 255, 0.3);
border-radius: 10px;
margin-top: 10px;
font-weight: 600;
font-size: 1.1rem;
animation: pulse 2s infinite;
}
@keyframes pulse {
0% {
box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4);
}
70% {
box-shadow: 0 0 0 10px rgba(255, 255, 255, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
}
}
.error {
background: linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%);
animation: shake 0.5s ease-in-out;
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
25% { transform: translateX(-5px); }
75% { transform: translateX(5px); }
}
.success {
background: linear-gradient(135deg, #4ecdc4 0%, #44a08d 100%);
}
.warning {
background: linear-gradient(135deg, #ffeaa7 0%, #fdcb6e 100%);
color: #2d3436;
}
.grade-AA { background: linear-gradient(135deg, #00b894 0%, #00a085 100%); }
.grade-BA { background: linear-gradient(135deg, #55efc4 0%, #00b894 100%); }
.grade-BB { background: linear-gradient(135deg, #81ecec 0%, #00cec9 100%); }
.grade-CB { background: linear-gradient(135deg, #74b9ff 0%, #0984e3 100%); }
.grade-CC { background: linear-gradient(135deg, #a29bfe 0%, #6c5ce7 100%); }
.grade-DC { background: linear-gradient(135deg, #fd79a8 0%, #e84393 100%); }
.grade-DD { background: linear-gradient(135deg, #fab1a0 0%, #e17055 100%); }
.grade-FF { background: linear-gradient(135deg, #ff7675 0%, #d63031 100%); }
@media (max-width: 768px) {
.calculator-content {
flex-direction: column;
}
.image-section {
order: -1;
margin-bottom: 20px;
}
.container {
padding: 25px;
}
.header h1 {
font-size: 1.8rem;
}
}
.decoration {
position: absolute;
width: 200px;
height: 200px;
border-radius: 50%;
background: linear-gradient(45deg, rgba(102, 126, 234, 0.1), rgba(118, 75, 162, 0.1));
z-index: -1;
}
.decoration-1 {
top: -50px;
right: -50px;
animation: float 6s ease-in-out infinite;
}
.decoration-2 {
bottom: -80px;
left: -80px;
animation: float 8s ease-in-out infinite reverse;
}
@keyframes float {
0%, 100% {
transform: translateY(0) rotate(0deg);
}
50% {
transform: translateY(-20px) rotate(180deg);
}
}
</style>
</head>
<body>
<div class="decoration decoration-1"></div>
<div class="decoration decoration-2"></div>
<div class="container">
<div class="header">
<h1>📊 Not Hesaplayorum</h1>
<p>Vize ve Final notlarını gir ne yaptın görelim gardaş.</p>
</div>
<div class="calculator-content">
<div class="form-section">
<form method="POST">
<div class="form-group">
<label for="vize">Vize Notu (0-100)</label>
<div class="input-wrapper">
<input type="number" id="vize" name="vize" min="0" max="100" required>
<div class="input-icon">📝</div>
</div>
</div>
<div class="form-group">
<label for="final">Final Notu (0-100)</label>
<div class="input-wrapper">
<input type="number" id="final" name="final" min="0" max="100" required>
<div class="input-icon">📚</div>
</div>
</div>
<button type="submit" name="not_hesapla">
<span>Notu Hesapla</span>
</button>
</form>
<?php
if (isset($_POST['not_hesapla'])) {
$vize = $_POST['vize'];
$final = $_POST['final'];
$ortalama = ($vize * 0.4) + ($final * 0.6);
if ($ortalama >= 90 && $ortalama <= 100) {
$harf_notu = "AA";
$durum = "Geçti";
$grade_class = "grade-AA";
} elseif ($ortalama >= 85 && $ortalama < 90) {
$harf_notu = "BA";
$durum = "Geçti";
$grade_class = "grade-BA";
} elseif ($ortalama >= 80 && $ortalama < 85) {
$harf_notu = "BB";
$durum = "Geçti";
$grade_class = "grade-BB";
} elseif ($ortalama >= 75 && $ortalama < 80) {
$harf_notu = "CB";
$durum = "Geçti";
$grade_class = "grade-CB";
} elseif ($ortalama >= 70 && $ortalama < 75) {
$harf_notu = "CC";
$durum = "Geçti";
$grade_class = "grade-CC";
} elseif ($ortalama >= 60 && $ortalama < 70) {
$harf_notu = "DC";
$durum = "Şartlı Geçti";
$grade_class = "grade-DC";
} elseif ($ortalama >= 50 && $ortalama < 60) {
$harf_notu = "DD";
$durum = "Şartlı Geçti";
$grade_class = "grade-DD";
} else {
$harf_notu = "FF";
$durum = "Kaldı";
$grade_class = "grade-FF";
}
$result_class = $grade_class;
if ($final < 50) {
$result_class = "error";
} elseif ($durum == "Geçti") {
$result_class = "success";
} elseif ($durum == "Şartlı Geçti") {
$result_class = "warning";
}
echo "<div class='result $result_class'>";
echo "<h3>🎓 Not Sonuçları</h3>";
echo "<div class='result-info'>";
echo "<div class='result-item'>Vize: $vize</div>";
echo "<div class='result-item'>Final: $final</div>";
echo "<div class='result-item'>Ortalama: " . number_format($ortalama, 2) . "</div>";
echo "<div class='result-item'>Harf Notu: $harf_notu</div>";
echo "</div>";
echo "<div class='result-final'>";
echo "Durum: $durum";
if ($final < 50) {
echo "<br><small>Uyarı: Final notunuz 50'den düşük! FF ile kaldınız.</small>";
}
echo "</div>";
echo "</div>";
}
?>
</div>
<div class="image-section">
<!-- Buraya kendi PNG resminizin yolunu ekleyin -->
<img src="https://i.hizliresim.com/byob0s4.jpeg" alt="Not Hesaplama" class="calculator-image">
</div>
</div>
</div>
</body>
</html>
Bendeniz Watnea, bu şehir girdap gülüm ile iyi forumlar diliyorum



