Veritabanındaki tablo1 de 1-100 kadar id ile sıralı bilgilerim var

PHP Programlama dili hakkında tartışmalar, paylaşım ve yardımlaşma forumu.
Cevapla
phpefe
Kayıtlı Kullanıcı
Mesajlar: 3
Kayıt: 19.03.2019, 23:26

Veritabanındaki tablo1 de 1-100 kadar id ile sıralı bilgilerim var

Mesaj gönderen phpefe »

Veritabanındaki tablo1 de 1-100 kadar id ile sıralı bilgilerim var select komutu ile çekilen bilgilerin ($sorgu = $baglanti->prepare("SELECT * FROM arsiv where order by id asc) her gün bir id bilgisini ekranda gösterilmesi ve 100 id geldiğinde tekrar başa dönmesi ve yeniden 1 id den başlayarak ekranda bilgileri göstermesi için ne yapabilirim.
Eren25
Kayıtlı Kullanıcı
Mesajlar: 1
Kayıt: 14.12.2023, 09:14

Re: Veritabanındaki tablo1 de 1-100 kadar id ile sıralı bilgilerim var

Mesaj gönderen Eren25 »

Merhaba,

Bahsettiğiniz işlevselliği gerçekleştirmek için PHP ve SQL kullanarak bir çözüm geliştirebilirsiniz. İlk olarak, her gün ekranda farklı bir id ile ilişkili bilginin gösterilmesini sağlamak için bir mantık oluşturmanız gerekiyor. Bunu yapmanın bir yolu, geçerli tarihe göre id'yi hesaplamaktır. Örneğin, bir başlangıç tarihi belirleyip, o tarihten itibaren geçen gün sayısını kullanarak hangi id'yi göstereceğinizi belirleyebilirsiniz.

İşte basit bir örnek:

Veritabanı bağlantınızı kurun.
Başlangıç tarihi olarak belirlediğiniz tarihten bugüne kadar geçen gün sayısını hesaplayın.
Bu gün sayısını 100'e böldüğünüzde kalanı (modülü) alarak, gösterilecek id'yi hesaplayın.
Bu id'yi kullanarak SQL sorgunuzu hazırlayın ve çalıştırın.
Sonuçları ekranda gösterin.
İşte PHP koduyla basit bir örnek:

php
Copy code
<?php
// Veritabanı bağlantınızı burada yapın
$baglanti = new PDO("mysql:host=veritabani_sunucunuz;dbname=veritabani_adi", "kullanici_adi", "sifre");

// Başlangıç tarihi (YYYY-MM-DD formatında)
$baslangicTarihi = '2023-01-01';

// Bugünün tarihi
$bugun = new DateTime();

// Başlangıç tarihi
$baslangic = new DateTime($baslangicTarihi);

// İki tarih arasındaki fark
$fark = $bugun->diff($baslangic)->days;

// Gösterilecek id'yi hesapla (1 ile 100 arasında)
$id = ($fark % 100) + 1;

// SQL sorgusu
$sorgu = $baglanti->prepare("SELECT * FROM arsiv WHERE id = :id");
$sorgu->bindParam(':id', $id, PDO::PARAM_INT);
$sorgu->execute();

// Sonuçları al
$sonuc = $sorgu->fetch(PDO::FETCH_ASSOC);

// Sonuçları ekranda göster
// ...
?>
Bu kod her gün farklı bir id'ye karşılık gelen kaydı gösterecek ve 100 günlük bir döngüyü tamamladıktan sonra tekrar 1'den başlayacaktır. Sonuçların nasıl gösterileceği, kullanılan web sayfasının yapısına bağlıdır. Bu yüzden son bölümü (// Sonuçları ekranda göster) kendi ihtiyaçlarınıza göre doldurmanız gerekecek.
Sitemi ziyaret et
Kullanıcı avatarı
TRWE_2012
Kayıtlı Kullanıcı
Mesajlar: 32
Kayıt: 14.05.2022, 06:59

Re: Veritabanındaki tablo1 de 1-100 kadar id ile sıralı bilgilerim var

Mesaj gönderen TRWE_2012 »

Veritabanındaki arsiv tablosundan her gün bir ID bilgisini ekranda göstermek ve 100 ID geldiğinde tekrar başa dönmek için birkaç adım izlemeniz gerekiyor. Bu işlemi gerçekleştirmek için PHP ve MySQL kullanarak bir döngü oluşturabiliriz.

1. Veritabanı Bağlantısı

Öncelikle veritabanına bağlanmanız gerekiyor. Aşağıdaki kod, veritabanı bağlantısını sağlar:

Kod: Tümünü seç

$servername = "localhost";
$username = "kullanici_adiniz";
$password = "sifreniz";
$dbname = "veritabani_adiniz";

// Bağlantıyı oluştur
$baglanti = new mysqli($servername, $username, $password, $dbname);

// Bağlantıyı kontrol et
if ($baglanti->connect_error) {
    die("Bağlantı hatası: " . $baglanti->connect_error);
}
2. Güncel ID'yi Belirleme

Her gün bir ID göstermek için, güncel ID'yi bir dosyada veya veritabanında saklayabilirsiniz. Bu örnekte, güncel ID'yi bir dosyada saklayacağız.

Kod: Tümünü seç

// Güncel ID'yi dosyadan oku
$dosya = 'current_id.txt';
if (file_exists($dosya)) {
    $current_id = (int)file_get_contents($dosya);
} else {
    $current_id = 0; // Dosya yoksa başlangıç değeri
}
3. ID'yi Güncelleme ve Veritabanından Veri Alma

Her gün bir ID göstermek için, mevcut ID'yi bir artırarak veritabanından veri alacağız. Eğer ID 100'e ulaştıysa, tekrar 1'den başlayacağız.

Kod: Tümünü seç

// Mevcut ID'yi artır
$current_id++;
if ($current_id > 100) {
    $current_id = 1; // 100'den sonra 1'e dön
}

// Güncel ID'yi dosyaya yaz
file_put_contents($dosya, $current_id);

// Veritabanından veriyi al
$sorgu = $baglanti->prepare("SELECT * FROM arsiv WHERE id = ?");
$sorgu->bind_param("i", $current_id);
$sorgu->execute();
$sonuc = $sorgu->get_result();

// Sonucu ekrana yazdır
if ($sonuc->num_rows > 0) {
    while ($row = $sonuc->fetch_assoc()) {
        echo "ID: " . $row['id'] . " - Bilgi: " . $row['bilgi'] . "<br>";
    }
} else {
    echo "No results found.";
}

// Bağlantıyı kapat
$baglanti->close();
Açıklamalar:

Güncel ID'yi Saklama: current_id.txt dosyasında güncel ID'yi saklıyoruz. Her gün bu dosyadan ID'yi okuyup artırıyoruz.
ID'yi Artırma: Eğer ID 100'ü geçerse, tekrar 1'e dönüyoruz.
Veritabanından Veri Alma: Güncel ID ile veritabanından veri alıyoruz ve ekrana yazdırıyoruz.

4. Zamanlama

Bu kodu her gün çalıştırmak için bir cron job (Linux) veya Windows Görev Zamanlayıcı kullanabilirsiniz. Bu şekilde, her gün belirli bir saatte bu PHP dosyasını çalıştırarak güncel ID'yi artırabilir ve veriyi ekrana yazdırabilirsiniz.

Önemli Not:

Dosya İzinleri: current_id.txt dosyasının yazma izinlerinin olduğundan emin olun.

Bu adımları takip ederek, her gün bir ID bilgisini ekranda gösterebilir ve 100 ID geldiğinde tekrar başa dönebilirsiniz.
Kullanıcı avatarı
TRWE_2012
Kayıtlı Kullanıcı
Mesajlar: 32
Kayıt: 14.05.2022, 06:59

Re: Veritabanındaki tablo1 de 1-100 kadar id ile sıralı bilgilerim var

Mesaj gönderen TRWE_2012 »

Yukarıda ilgili üyenin yazdığı kodu daha geliştirdim.

Kod: Tümünü seç

<?php
// Veritabanı bağlantınızı burada yapın
try {
    $baglanti = new PDO("mysql:host=veritabani_sunucunuz;dbname=veritabani_adi", "kullanici_adi", "sifre");
    // Hata modunu ayarlayın
    $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Veritabanına bağlanırken bir hata oluştu: " . $e->getMessage();
    exit;
}

// Başlangıç tarihi (YYYY-MM-DD formatında)
$baslangicTarihi = '2023-01-01';

// Bugünün tarihi
$bugun = new DateTime();

// Başlangıç tarihi
$baslangic = new DateTime($baslangicTarihi);

// İki tarih arasındaki fark
$fark = $bugun->diff($baslangic)->days;

// Gösterilecek id'yi hesapla (1 ile 100 arasında)
$id = ($fark % 100) + 1;

// SQL sorgusu
$sorgu = $baglanti->prepare("SELECT * FROM arsiv WHERE id = :id");
$sorgu->bindParam(':id', $id, PDO::PARAM_INT);
$sorgu->execute();

// Sonuçları al
$sonuc = $sorgu->fetch(PDO::FETCH_ASSOC);

// Sonuçları ekranda göster
if ($sonuc) {
    echo "ID: " . htmlspecialchars($sonuc['id']) . "<br>";
    echo "Bilgi: " . htmlspecialchars($sonuc['bilgi']) . "<br>"; // 'bilgi' alanını kendi tablonuzdaki alan adıyla değiştirin
} else {
    echo "Bu ID ile ilgili kayıt bulunamadı.";
}
?>
Yapılan Düzeltmeler Ve Güvenlik Ayarları :

Eklenenler:

Hata Yönetimi: PDO bağlantısında hata modunu PDO::ERRMODE_EXCEPTION olarak ayarladım. Bu, hata durumunda istisna fırlatılmasını sağlar ve hata ayıklamayı kolaylaştırır.

HTML Özel Karakterleri: htmlspecialchars() fonksiyonunu kullanarak, veritabanından çekilen verilerin güvenli bir şekilde ekrana yazdırılmasını sağladım. Bu, XSS saldırılarına karşı koruma sağlar.

Özellikle çıkarılan bir şey yok; mevcut kodunuzda sadece iyileştirmeler yapıldı. Ancak, daha iyi bir hata yönetimi ve güvenlik sağlamak amacıyla bazı önerilerde bulundum.

Genel Değişiklikler:

Yorumlar: Kodun okunabilirliğini artırmak için açıklayıcı yorumlar ekledim.
Sonuç Kontrolü: Sonuçların kontrolü kısmında, kullanıcıya daha iyi bir deneyim sunmak için uygun mesajlar gösterildi.

Özetle:

Güvenlik ve Hata Yönetimi: Kodun güvenliğini artırmak ve hata yönetimini iyileştirmek için htmlspecialchars() ve hata modunu ayarlama gibi eklemeler yapıldı.
Okunabilirlik: Kodun daha anlaşılır olması için yorumlar eklendi.
Cevapla

“PHP” sayfasına dön

Kimler çevrimiçi

Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 3 misafir