Ekran isimleri çoğaltmak için endeks değeri ekleme

1 Cevap php

Ben bir CMS olarak ExpressionEngine kullanarak ancak yeni kullanıcılar için temel doğrulama geçersiz kılmak istiyor değilim. Birisi yeni bir kullanıcı olarak kaydeder, sistem screen_name önceden alınmış olup olmadığını görmek için denetler. Eğer durum bu ise, o zaman bir hata bayrağı atar.

Ben doğrulama yapıyor kod bölümünü bulduk ama ben screen_name sayım değerinin üzerinde bir boşluk ve numara (bir ile eklenen yerine atma böylece değiştirmek ve hata istiyorum.

Yani "John Smith", "John Smith 3" (db diğer iki "John Smith" screen_names vardır varsayarak) değiştirildi alır.

Bunu nasıl modernleşmek için bu kodu değiştirebilirsiniz?

        /** -------------------------------------
        /**  Is screen name taken?
        /** -------------------------------------*/

        if (strtolower($this->cur_screen_name) != strtolower($this->screen_name))
        {
            $query = $DB->query("SELECT COUNT(*) AS count FROM exp_members WHERE screen_name = '".$DB->escape_str($this->screen_name)."'");

            if ($query->row['count'] > 0)
            {                            
                $this->errors[] = $LANG->line('screen_name_taken');
            }
        }

1 Cevap

if (strtolower($this->cur_screen_name) != strtolower($this->screen_name))
{
    $query = $DB->query("SELECT COUNT(*) AS count FROM exp_members WHERE screen_name = '".$DB->escape_str($this->screen_name)."'");

    if ($query->row['count'] > 0)
    {   
        $query2 = $DB->query("SELECT COUNT(*) AS count FROM exp_members WHERE screen_name LIKE '".$DB->escape_str($this->screen_name)."'");
        $name = $DB->escape_str($this->screen_name).$query2->row['count']; 
        $this->errors[] = 'The screen name you choose is taken please use '.$name.' for your new  screen_name);
    }
}

Eğlenin!