Есть ли данные в переменной?

Тема в разделе "PHP", создана пользователем Stripe, 17 май 2009.

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

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Заношу в базу данные с формы, в форме несколько полей, получается так, что не все поля всегда будут заполнены перед отправкой данных в MySQL. Собственно вопрос: Как проверить существование данных в переменной?
     
  2. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Stripe нравится это.
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    isset()
    empty()
     
    Stripe нравится это.
  4. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    А если я получаю несколько переменных? Например:

    if (empty($name_ru)) {
    echo 'name_ru или 0, или пусто, или вобще не определена';
    }
    else
    mysql_query("INSERT INTO RADIO (name_ru) VALUES ($name_ru)");

    if (empty($name_eng)) {
    echo 'name_eng или 0, или пусто, или вобще не определена';
    }
    else
    mysql_query("INSERT INTO RADIO (name_eng) VALUES ($name_eng)");

    Этот код не работает, ни ошибок ни в базе новых записей не дает. Каким образом составить один запрос для обращения к базе после проверки переменных?
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Уверен что у тебя включены глобальные переменные?
     
  6. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    попробуйте так:

    PHP:



    if ($name_ru "") {
    echo 
    'name_ru или 0, или пусто, или вобще не определена';
    }
    else {
    mysql_query("INSERT INTO RADIO (name_ru) VALUES ($name_ru)"); }

    if (
    $name_eng "") {
    echo 
    'name_eng или 0, или пусто, или вобще не определена';
    }
    else {
    mysql_query("INSERT INTO RADIO (name_eng) VALUES ($name_eng)"); }

    if (
    $name_eng name_ru =0) { echo "<strong> Переменные не существуют, в базу заносить нечего! Возможно проблема вызвана отключенной функцией register global в настройках php.ini</strong>" ; }



    Напишите как вы получаете переменные $name_eng и $name_ru
     
  7. Ceyce

    Ceyce Постоялец

    Регистр.:
    3 ноя 2008
    Сообщения:
    52
    Симпатии:
    51
    isset в данном случае не подходит, так как если переменная присутствовала в форме, то isset вернет true в любом случае, была она заполнена или нет.

    "INSERT INTO RADIO (name_eng) VALUES ($name_eng)" - это что такое?
    Нельзя заполнить только часть полей в таблице. Так что если некоторые переменные пустые, то не вписав их в запрос - ничего не изменит.
     
  8. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Acidrayne, спасибо за подсказку, но предыдущий код, приведенный мной как оказалось работает только с целыми числами (целые числа добавляются в базу), слова, что на eng что ru не попадают в базу. Чувствую что сам что то натворил с настройками, а что понять не могу.

    И еще вопрос, данные попадают на разные строки таблицы и естестевнно строки имеют разный ID, тоесть опять же встает вопрос об одном запросе к базе. Как его осуществить в условиях получения нескольких переменных с формы?

    Добавлено через 2 минуты
    В том то и дело, что я получаю с формы две и более переменных, как минимум: $name_ru и $name_eng

    INSERT INTO RADIO (name_eng) VALUES ($name_eng) - это добавление данных в таблицу, в идеале он естественно должен выглядеть так:

    INSERT INTO RADIO (name_eng, name_ru) VALUES ($name_eng, $name_ru )

    Но свести все данные к одному запросу после проверки на их наличие я к сожалению не понимаю как.
     
  9. Ceyce

    Ceyce Постоялец

    Регистр.:
    3 ноя 2008
    Сообщения:
    52
    Симпатии:
    51
    Чем такой запрос тебя не устраивает:
    "INSERT INTO RADIO (name_ru, name_eng) VALUES ($name_ru, $name_eng"?
    Понимаешь, если одна из переменных будет пустая, то на результат запроса это никак не повлияет.
     
  10. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Ты хочешь сказать что запросы:

    PHP:
     if (empty($name_ru)) {
        echo 
    'name_ru или 0, или пусто, или вобще не определена';
    }
    else
       
    mysql_query("INSERT INTO RADIO (name_ru) VALUES ($name_ru)");
       
    if (empty(
    $name_eng)) {
        echo 
    'name_eng или 0, или пусто, или вобще не определена';
    }
    else
       
    mysql_query("INSERT INTO RADIO (name_eng) VALUES ($name_eng)");
    Не могут дать такого заполнения таблицы?
    ID name_ru name_eng
    12 (тут пусто) 111
    11 222 (тут пусто)


    Ceyce, а по твоему вопросу мой пост выше.
     
Статус темы:
Закрыта.