lostyazilim
tr.link

PHP Admin Profil Düzenlerken mantık hatası yaşıyorum

3 Mesajlar 348 Okunma
acebozum
tr.link

burakalaca burakalaca Lil Machiavel Kullanıcı
  • Üyelik 13.07.2015
  • Yaş/Cinsiyet 24 / E
  • Meslek CEO
  • Konum Bursa
  • Ad Soyad B** A**
  • Mesajlar 407
  • Beğeniler 52 / 52
  • Ticaret 21, (%100)

Profil düzenleme kodum bu şekilde fakat örnek olarak isim değiştircem kullanıcı adı aynı kaldığı için kaydetmiyor nasıl düzeltmem gerekiyor teşekkürler

   $userID = post('userID'); // Kullanıcının ID'sini almayı unutmayın

        $userName = post('userName');

        $userSurname = post('userSurname');

        $userUsername = post('userUsername');

        $userMail = post('userMail');

        $userPhone = post('userPhone');

        $userStatus = post('userStatus');

        $userAuth = post('userAuth');

    

        // Kullanıcı adını kontrol et

        $checkUsernameQuery = "SELECT COUNT(*) FROM uyeler WHERE uye_kullaniciadi = :username AND uye_id != :userID";

        $checkUsernameStmt = $db->prepare($checkUsernameQuery);

        $checkUsernameStmt->bindParam(':username', $userUsername);

        $checkUsernameStmt->bindParam(':userID', $userID);

        $checkUsernameStmt->execute();

        $usernameCount = $checkUsernameStmt->fetchColumn();

    

        // E-posta adresini kontrol et

        $checkMailQuery = "SELECT COUNT(*) FROM uyeler WHERE uye_mail = :mail AND userID != :userID";

        $checkMailStmt = $db->prepare($checkMailQuery);

        $checkMailStmt->bindParam(':mail', $userMail);

        $checkMailStmt->bindParam(':userID', $userID);

        $checkMailStmt->execute();

        $mailCount = $checkMailStmt->fetchColumn();

    

        // Telefon numarasını kontrol et

        $checkPhoneQuery = "SELECT COUNT(*) FROM uyeler WHERE uye_telefon = :phone AND userID != :userID";

        $checkPhoneStmt = $db->prepare($checkPhoneQuery);

        $checkPhoneStmt->bindParam(':phone', $userPhone);

        $checkPhoneStmt->bindParam(':userID', $userID);

        $checkPhoneStmt->execute();

        $phoneCount = $checkPhoneStmt->fetchColumn();

    

        if ($usernameCount > 0) {

            echo "Bu kullanıcı adı zaten kullanımda.";

        } elseif ($mailCount > 0) {

            echo "Bu e-posta adresi zaten kullanımda.";

        } elseif ($phoneCount > 0) {

            echo "Bu telefon numarası zaten kullanımda.";

        } else {

            // Kullanıcıyı güncelleme işlemi için SQL sorgusu

            $updateUserQuery = "UPDATE uyeler SET uye_ad = :name, uye_soyad = :surname, uye_kullaniciadi = :username, uye_mail = :mail, uye_telefon = :phone, uye_durum = :status,                    uye_yetki = :auth WHERE userID = :id";

            $updateUserStmt = $db->prepare($updateUserQuery);

            $updateUserStmt->bindParam(':name', $userName);

            $updateUserStmt->bindParam(':surname', $userSurname);

            $updateUserStmt->bindParam(':username', $userUsername);

            $updateUserStmt->bindParam(':mail', $userMail);

            $updateUserStmt->bindParam(':phone', $userPhone);

            $updateUserStmt->bindParam(':status', $userStatus);

            $updateUserStmt->bindParam(':auth', $userAuth);

            $updateUserStmt->bindParam(':id', $userID);

            $updateUserStmt->execute();

    

            echo "Kullanıcı başarıyla güncellendi.";

        }
 

 

elektronikssl
webimgo

GeoMaster GeoMaster WM Aracı Kullanıcı
  • Üyelik 25.12.2020
  • Yaş/Cinsiyet 26 / E
  • Meslek Master
  • Konum Diğer
  • Ad Soyad S** H**
  • Mesajlar 35
  • Beğeniler 7 / 7
  • Ticaret 0, (%0)

Kullanıcı başarıyla güncellendiden sonra header("location:"); ile yönlendirme yapmalısın

 

 

Georgian Web developer

VipTema VipTema Vip Tema Web Tasarım Kullanıcı
  • Üyelik 29.06.2011
  • Yaş/Cinsiyet 37 / E
  • Meslek Vip Tema Web Tasarım A.Ş.
  • Konum Tekirdağ
  • Ad Soyad Ö** I**
  • Mesajlar 1393
  • Beğeniler 704 / 703
  • Ticaret 21, (%100)

Mantık hatan şurada ilk yaptığın kontrollerde where koşulu içinde kullanıcının id sini kullanmamalısın.

Siz bu kullanıcı adını benim veritabanımda başka kullanan kullanıcı varsa kullanamasın demek istiyorsunuz anlaşılan ama bu aramayı tüm kullanıcılarda yapmıyor. Sizin kodlarınızda sadece ilgili aramayı güncelleme talep eden kullanıcının verilerinde yapıyorsunuz id koşulu eklediğiniz için.

Bu mantık hatası tüm kontrollerinizde mevcut.

Id koşulunu sadece güncelleme işlemi gerçekleştirileceği zaman yapmalısınız. Umarım anlatabilmişimdir.

Kodların düzenlenmiş halini deneyin.

<?php
$userID = post('userID'); // Kullanıcının ID'sini almayı unutmayın
$userName = post('userName');
$userSurname = post('userSurname');
$userUsername = post('userUsername');
$userMail = post('userMail');
$userPhone = post('userPhone');
$userStatus = post('userStatus');
$userAuth = post('userAuth');

// Kullanıcı adını kontrol et
$checkUsernameQuery = "SELECT COUNT(*) FROM uyeler WHERE uye_kullaniciadi = :username";
$checkUsernameStmt = $db->prepare($checkUsernameQuery);
$checkUsernameStmt->bindParam(':username', $userUsername);
$checkUsernameStmt->execute();
$usernameCount = $checkUsernameStmt->fetchColumn();

// E-posta adresini kontrol et
$checkMailQuery = "SELECT COUNT(*) FROM uyeler WHERE uye_mail = :mail";
$checkMailStmt = $db->prepare($checkMailQuery);
$checkMailStmt->bindParam(':mail', $userMail);
$checkMailStmt->execute();
$mailCount = $checkMailStmt->fetchColumn();

// Telefon numarasını kontrol et
$checkPhoneQuery = "SELECT COUNT(*) FROM uyeler WHERE uye_telefon = :phone";
$checkPhoneStmt = $db->prepare($checkPhoneQuery);
$checkPhoneStmt->bindParam(':phone', $userPhone);
$checkPhoneStmt->execute();
$phoneCount = $checkPhoneStmt->fetchColumn();

if ($usernameCount > 0) {
    echo "Bu kullanıcı adı zaten kullanımda.";
} elseif ($mailCount > 0) {
    echo "Bu e-posta adresi zaten kullanımda.";
} elseif ($phoneCount > 0) {
    echo "Bu telefon numarası zaten kullanımda.";
} else {
    // Kullanıcıyı güncelleme işlemi için SQL sorgusu
    $updateUserQuery = "UPDATE uyeler SET uye_ad = :name, uye_soyad = :surname, uye_kullaniciadi = :username, uye_mail = :mail, uye_telefon = :phone, uye_durum = :status, uye_yetki = :auth WHERE uye_id = :id";
    $updateUserStmt = $db->prepare($updateUserQuery);
    $updateUserStmt->bindParam(':name', $userName);
    $updateUserStmt->bindParam(':surname', $userSurname);
    $updateUserStmt->bindParam(':username', $userUsername);
    $updateUserStmt->bindParam(':mail', $userMail);
    $updateUserStmt->bindParam(':phone', $userPhone);
    $updateUserStmt->bindParam(':status', $userStatus);
    $updateUserStmt->bindParam(':auth', $userAuth);
    $updateUserStmt->bindParam(':id', $userID);
    $updateUserStmt->execute();

    echo "Kullanıcı başarıyla güncellendi.";
}
?>

Mesaj 1 defa düzenlendi. Son düzenleyen: VipTema (03.06.2024 19:36)

 

 

wmaraci
wmaraci
Konuyu toplam 2 kişi okuyor. (0 kullanıcı ve 2 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al