• 14-08-2023, 15:13:06
    #1
    Mobil uygulamamda google ile oturum açıldığı zaman kişiye U12345 gibi bir kullanıcı adı vermek istiyorum. Bu kullanıcı adının var olup olmadığını php sayfasında kontrol edip varsa tekrar bir random sayı yazıp U23456 olarak tekrar denemesini istiyorum. Bu adda kullanıcı olmadığı zaman veritabanına kayıt yapsın istiyorum. Openai bana böyle bir kod geldi ama random sayısını 1-30 yapıp denediğim zaman mesela U10 olsa bile onu kayıt ettiğini gördüm. Bu konuda bana yardımcı olabilecek var mı ?

    Yani istediğim şey, bu oluşturulan random kullanıcı adının database te var olup olmadığını kontrol etmesi, var ise tekrar yeni bir kullanıcı adı oluşturması. Database'te bu oluşturulan random kullanıcı olmayana kadar random oluşturması ve olmadığı zaman kayıt yapmasını istiyordum.

    <?php
    // Veritabanı bağlantısı
    $servername = "sunucu_adı";
    $username = "kullanıcı_adı";
    $password = "parola";
    $dbname = "veritabanı_adı";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol et
    if ($conn->connect_error) {
        die("Veritabanı bağlantı hatası: " . $conn->connect_error);
    }
    
    // Rastgele bir sayı oluştur
    $randomNumara = rand(100, 999); // Örnek aralık: 100 ile 999 arası
    
    while (true) {
        // Kullanıcı adını oluştur
        $kullaniciAdi = "User" . $randomNumara;
    
        // Veritabanında kullanıcı adının olup olmadığını kontrol et
        $sql = "SELECT * FROM tablo_adı WHERE kullanici_adi = '$kullaniciAdi'";
        $result = $conn->query($sql);
    
        if ($result->num_rows > 0) {
            // Kullanıcı adı zaten varsa yeni bir random numara oluştur
            $randomNumara = rand(100, 999);
        } else {
            // Yeni kullanıcı adını veritabanına ekle
            $sqlInsert = "INSERT INTO tablo_adı (kullanici_adi) VALUES ('$kullaniciAdi')";
            if ($conn->query($sqlInsert) === TRUE) {
                echo "Yeni kullanıcı adı başarıyla eklendi: " . $kullaniciAdi;
            } else {
                echo "Ekleme hatası: " . $conn->error;
            }
            break;
        }
    }
    
    // Veritabanı bağlantısını kapat
    $conn->close();
    ?>


    Sorunu hallettim;
    Çözüm / Eğer eksik yanlış gören varsa yazarsa sevinirim. Bu şekilde kod sorunsuz çalıştı.
    <?php
    // Veritabanı bağlantısı
    require('config.php');
    
    
    $username ="U";
    
    while (true) {
        // Yeni bir rastgele sayı oluştur
        $randomNumara = rand(0, 10);
        $kullaniciAdi = $username.$randomNumara;
        $durum = $conn->query("SELECT * FROM test1 WHERE username='$kullaniciAdi'");
        $data = array();
        while( $row = $durum->fetch_assoc()){
            $data[] = $row;
        }
    
        if (empty($data)) {
            echo "<br> kod 5 oldu";
            $sqlInsert = "INSERT INTO test1 (username) VALUES ('$kullaniciAdi')";
            if ($conn->query($sqlInsert) === TRUE) {
                echo "Yeni kullanıcı adı başarıyla eklendi: " .$kullaniciAdi;
            } else {
                echo "Ekleme hatası: " . $conn->error;
            }
            
        }else{
            echo "kullanıcı adı var";
            // Kullanıcı adı zaten varsa yeni bir random numara oluştur
            continue;
        }
        break;
         // İşlem tamamlandı, döngüden çık
    }
    
    ?>
  • 14-08-2023, 15:16:24
    #2
    yani karakter sınırımı istiyorsunuz ?
  • 14-08-2023, 15:20:31
    #3
    <?php
    // Veritabanı bağlantısı
    $servername = "sunucu_adı";
    $username = "kullanıcı_adı";
    $password = "parola";
    $dbname = "veritabanı_adı";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol et
    if ($conn->connect_error) {
        die("Veritabanı bağlantı hatası: " . $conn->connect_error);
    }
    
    while (true) {
        // Rastgele bir sayı ve harf kombinasyonu oluştur
        $randomNumara = rand(10000, 99999); // 5 karakterli rastgele sayı
        $randomHarf = chr(rand(65, 90)); // Büyük harf
        $kullaniciAdi = "U" . $randomNumara . $randomHarf;
    
        // Veritabanında kullanıcı adının olup olmadığını kontrol et
        $sql = "SELECT * FROM tablo_adı WHERE kullanici_adi = '$kullaniciAdi'";
        $result = $conn->query($sql);
    
        if ($result->num_rows > 0) {
            // Kullanıcı adı zaten varsa yeni bir kombinasyon oluştur
        } else {
            // Yeni kullanıcı adını veritabanına ekle
            $sqlInsert = "INSERT INTO tablo_adı (kullanici_adi) VALUES ('$kullaniciAdi')";
            if ($conn->query($sqlInsert) === TRUE) {
                echo "Yeni kullanıcı adı başarıyla eklendi: " . $kullaniciAdi;
            } else {
                echo "Ekleme hatası: " . $conn->error;
            }
            break;
        }
    }
    
    // Veritabanı bağlantısını kapat
    $conn->close();
    ?>


    Aşağıda yer alan örnekte, rastgele olarak seçilen bir 5 haneli sayı ve bir büyük harf kombinasyonu kullanılarak kullanıcı adı oluşturuluyor:
    Örnek Çıktılar:
    • Rastgele sayı: 48213
    • Rastgele harf: C
    • Oluşturulan Kullanıcı Adı: U48213C
  • 14-08-2023, 15:22:16
    #4
    aqua adlı üyeden alıntı: mesajı görüntüle
    <?php
    // Veritabanı bağlantısı
    $servername = "sunucu_adı";
    $username = "kullanıcı_adı";
    $password = "parola";
    $dbname = "veritabanı_adı";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol et
    if ($conn->connect_error) {
        die("Veritabanı bağlantı hatası: " . $conn->connect_error);
    }
    
    while (true) {
        // Rastgele bir sayı ve harf kombinasyonu oluştur
        $randomNumara = rand(10000, 99999); // 5 karakterli rastgele sayı
        $randomHarf = chr(rand(65, 90)); // Büyük harf
        $kullaniciAdi = "U" . $randomNumara . $randomHarf;
    
        // Veritabanında kullanıcı adının olup olmadığını kontrol et
        $sql = "SELECT * FROM tablo_adı WHERE kullanici_adi = '$kullaniciAdi'";
        $result = $conn->query($sql);
    
        if ($result->num_rows > 0) {
            // Kullanıcı adı zaten varsa yeni bir kombinasyon oluştur
        } else {
            // Yeni kullanıcı adını veritabanına ekle
            $sqlInsert = "INSERT INTO tablo_adı (kullanici_adi) VALUES ('$kullaniciAdi')";
            if ($conn->query($sqlInsert) === TRUE) {
                echo "Yeni kullanıcı adı başarıyla eklendi: " . $kullaniciAdi;
            } else {
                echo "Ekleme hatası: " . $conn->error;
            }
            break;
        }
    }
    
    // Veritabanı bağlantısını kapat
    $conn->close();
    ?>
    Aşağıda yer alan örnekte, rastgele olarak seçilen bir 5 haneli sayı ve bir büyük harf kombinasyonu kullanılarak kullanıcı adı oluşturuluyor:
    Örnek Çıktılar:
    • Rastgele sayı: 48213
    • Rastgele harf: C
    • Oluşturulan Kullanıcı Adı: U48213C

    Aslında istediğim şey, bu oluşturulan random kullanıcı adının database te var olup olmadığını kontrol etmesi, var ise tekrar yeni bir kullanıcı adı oluşturması. Database'te bu oluşturulan random kullanıcı olmayana kadar random oluşturması ve olmadığı zaman kayıt yapmasını istiyordum.
  • 14-08-2023, 15:28:53
    #5
    Şimdi openai bu kodu verdi, acaba bu kod işe yarar mı ?

    <?php
    // Veritabanı bağlantısı
    $servername = "sunucu_adı";
    $username = "kullanıcı_adı";
    $password = "parola";
    $dbname = "veritabanı_adı";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol et
    if ($conn->connect_error) {
        die("Veritabanı bağlantı hatası: " . $conn->connect_error);
    }
    
    while (true) {
        // Yeni bir rastgele sayı oluştur
        $randomNumara = rand(100, 999);
    
        // Kullanıcı adını oluştur
        $kullaniciAdi = "User" . $randomNumara;
    
        // Veritabanında kullanıcı adının olup olmadığını kontrol et
        $sql = "SELECT * FROM tablo_adı WHERE kullanici_adi = '$kullaniciAdi'";
        $result = $conn->query($sql);
    
        if ($result->num_rows > 0) {
            continue; // Kullanıcı adı zaten varsa başa dön
        }
    
        // Yeni kullanıcı adını veritabanına ekle
        $sqlInsert = "INSERT INTO tablo_adı (kullanici_adi) VALUES ('$kullaniciAdi')";
        if ($conn->query($sqlInsert) === TRUE) {
            echo "Yeni kullanıcı adı başarıyla eklendi: " . $kullaniciAdi;
        } else {
            echo "Ekleme hatası: " . $conn->error;
        }
    
        break; // İşlem tamamlandı, döngüden çık
    }
    
    // Veritabanı bağlantısını kapat
    $conn->close();
    ?>