Как организовать удаление пользователя из системы?

Тема в разделе "PHP", создана пользователем LLlaMaH, 13 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. LLlaMaH

    LLlaMaH Вот он я

    Регистр.:
    1 апр 2009
    Сообщения:
    250
    Симпатии:
    359
    Подскажите, пожалуйста.
    Как организовать удаление пользователя из системы?
    Уточнение.
    В базе данных в таблицах есть поле userid. Можно как-нибудь удалить все строки из всех таблиц, где есть поле userid и оно равно x, без непосредственного перебора (delete from table1 where userid=x; delete from table2 where userid=x; ) всех таблиц?
    Спасибо.
     
  2. malibu

    malibu Создатель

    Регистр.:
    8 июл 2009
    Сообщения:
    20
    Симпатии:
    9
    напиши небольшой скрипт
    1) выполняешь запрос к бд
    PHP:
    show tables
    получаешь список таблиц в своей бд
    2) проходишь циклом по таблицам, выполняя запрос
    PHP:
    DESCRIBE table_name userid
    если поле userid в данной таблице есть, то вернется одна строка и можешь делать удаление строк из этой таблицы
    PHP:
    delete from table_name where userid=x
    если нет, результат будет пустой и ничего из этой таблицы удалять не надо :)
     
    LLlaMaH нравится это.
  3. LLlaMaH

    LLlaMaH Вот он я

    Регистр.:
    1 апр 2009
    Сообщения:
    250
    Симпатии:
    359
    Спасибо за ответ.

    Первый пункт прошел нормально (знаний и сообразительности хватило), а вот на втором вошел ступор. Если не трудно, можете написать полностью код второго пункта? (или сразу весь код с mysql_query и подобными штуками).
     
  4. malibu

    malibu Создатель

    Регистр.:
    8 июл 2009
    Сообщения:
    20
    Симпатии:
    9
    Вот рабочий код, только настроечки надо поменять
    PHP:
    <?
        
    //настройки соединения с бд
        
    $host "localhost";
        
    $user "user";
        
    $pass "pass";
        
    $base "base";

        
    $user_field "userid";//поле, которое мы ищем в таблицах
        
    $id_for_del 1;//id который надо удалить
        
        
    $dbconnect mysql_connect($host$user$pass) or die(mysql_error());
        
    mysql_select_db($base$dbconnect) or die (mysql_error());

        
    $tables mysql_query("show tables"$dbconnect) or die(mysql_error());
        
        while(
    $table mysql_fetch_array($tables)) {
            
    $result mysql_query("DESCRIBE `{$table[0]}$user_field"$dbconnect) or die(mysql_error());
        
            if (
    mysql_fetch_array($result)) {
                
    mysql_query("delete from `{$table[0]}` where $user_field=$id_for_del"$dbconnect) or die(mysql_error());
            }
            
            
    mysql_free_result($result);
        }

        
    mysql_free_result($tables);
    ?>
    если что-то осталось непонятным, задавайте вопросы
     
    LLlaMaH нравится это.
  5. LLlaMaH

    LLlaMaH Вот он я

    Регистр.:
    1 апр 2009
    Сообщения:
    250
    Симпатии:
    359
    Спасибо большое. Все заработало.

    Тему можно закрывать (считаю ее исчерпанной).
     
Статус темы:
Закрыта.