[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Такой странный вопрос у меня.
    Админка, страница настроек...
    На страницу выводится куча настроек для их изменения....
    предположим таблица состоит из трёх полей..соответственно три какие-то настройки...
    Так вот думаю как бы корректно изменять эти настройки если изменился только один параметр.
    1) вариант сменить всё одним запросом.
    PHP:
    UPDATE `settingsSET 
    `pole1` = '".$_POST['pole1']."' ,
    `
    pole2` = '".$_POST['pole2']."' 
    `
    pole3` = '".$_POST['pole3']."'
    примерно так
    Но в таком случае не вижу надобности апдейтить все поля, если изменилось только одно...тем более как я сказал настроек там не 3 а намного больше.
    2) Второй вариант это проверить изменена ли определённая настройка и если изменена, то апдейтить поле с этой настройкой. Но в тоже время если все настройки сменены, то тыща sql запросов это тоже не айс.
    Так вот как лучше изменять настройки в такой ситуации?:)
     
  2. 4NT1P0V

    4NT1P0V Member

    Joined:
    15 Jan 2008
    Messages:
    110
    Likes Received:
    28
    Reputations:
    -7
    А где этот преыикс посмотреть?? Хостинг на freehostia.com??? :confused: :confused:
     
  3. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Префикс - это набор символов, с которого начинаются все имена таблицы для данного форума, чата или еще чего-нибудь. Например, для форумов PhpBB все таблицы начинаются на phpbb_, то есть в базе таблицы типа phpbb_auth_access, phpbb_users, phpbb_vote_voters и т.д. Вообще-то префикс придумывается самим пользователем или устанавливается по умолчанию. У вас есть шелл-доступ на хостер? Или вы ковыряете БД через phpMyAdmin? В первом случае, надо зайти по ssh со своим логином и пассом, затем набрать в командной строке
    Code:
    mysql -uusername -ppassword -hmysql4.freehostia.com
    mysql> use dbname
    mysql> show tables;
    
    Вместо username, password и dbname вводите свои собственные данные
    Вот и все. Во втором случае все просто - достаточно кликать мышкой
     
  4. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Чтобы апдейтить только те настройки, которые изменились - тебе придется сначала спросить у базы данных эти настрйки, а затем сравнить их с введенными. В результате получится немеренное количество запросов. Проще и лучше всего сделать именно так, как ты написал в своем коде, то есть просто отапдейтить все настройки снова.
     
    1 person likes this.
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Macro
    Ну я тоже склонялся к тому чтобы одним запросом всё апдейтнуть.
    Кстати насчёт провеки изменения настроек, базу данных спрашиваю ещё в самом начале, а потом можно просто проверять конкретное поле))
    спасибо!
     
    1 person likes this.
  6. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Да, что-то я ступил, ведь тыдолжен вывести настройки в поля =) Ну, теоретически можно написать джаваскрипт, который будет отсылать только измененные параметры, но только зачем? :) Сильно это ничего не изменит.
     
  7. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    .:EnoT:. второй вариант получается нагруженнее первого т.к. тебе нужно делать ещё один запрос к бд и смотреть что там изменилось.Можно ещё сохранять дефолтовые значения в сессии из первого запроса
     
    4 people like this.
  8. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    как присвоить результат логической переменной?
    PHP:
    $logic=($a==$b);
    так не прокатывает...
     
  9. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    а зачем ты два знака равно поставил? Ты же присваиваешь а не сравниваешь :)
     
  10. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    .:EnoT:. ну.если $a==$b то истина,иначе лож.
    -=lebed=- $logic=true?
     
    2 people like this.
  11. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Не.. сравниваю сначала, если $a равно $b то $logic=true, если нет, то $logic=false.

    PS Вроде понял, в случае false просто ничего не выводится (null, пустое значение), если true, то единица...

    Как теперь сделать такое ($a-$d - переменные):
    Допустим $string=$a."==".$b."and".$c."==".$d тип строка. Как теперь получить результат логического вычисления того что записано в строковой переменной $string? Заюзать eval ?
     
    #1711 -=lebed=-, 28 Jan 2008
    Last edited: 28 Jan 2008
  12. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    $logic=($a==$b)?true:false;
     
    #1712 Macro, 28 Jan 2008
    Last edited: 28 Jan 2008
  13. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    $logic=($a==$b)?1:0;
    PS Так видно что false, если выводить на экран...
     
  14. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Я не пойму что у вас не получается...

    Вот можете убедиться, что в $a попадает boolean тип результата выполнения операции.
    PHP:
    var_dump($a = (bool) ($b == $c));
    Что касается строковых переменных - да, чтобы получить результат выражения, которое представлено строковым выражением, то нужно применить к нему функцию eval:

    PHP:
    $a '$b=1+1';
    eval(
    $a);
    var_dump($b);
    З.Ы. Кстати информация для размышления: при выводе булевые выражения приводятся к интовому типу... То есть:
    PHP:
    $a true;
    print(
    $a);
    Выведет 1, а не true...
     
    #1714 groundhog, 28 Jan 2008
    Last edited: 28 Jan 2008
    1 person likes this.
  15. cash$$$

    cash$$$ Banned

    Joined:
    6 Jan 2008
    Messages:
    385
    Likes Received:
    246
    Reputations:
    10
    Как убрать из строки все теги <a> но только если они имеют поле href
    <a href="123">wefwef</a> убрать, а <a name="23">wefwef</a> оставить
     
  16. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    2cash$$$
    Вот впринципе рабочий =)
    PHP:
    <?php
    $string 
    '<a href="12">wefwef</a> убрать, а <a name="23">wefwef</a> оставить<a href="123">wefwef</a> убрать, а <a name="23">wefwef</a> оставить';
    $body ereg_replace('(<a href=")+([0-9])+(">)+([a-z])+(</a>)'''$string);
    echo 
    $body;
    ?>
     
  17. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    $text=preg_replace('|<a[^>]+href[^>]+>[^<]+</a>|i','',$text);
    так проще и лучше
     
    #1717 Macro, 28 Jan 2008
    Last edited: 28 Jan 2008
    1 person likes this.
  18. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Тоже самое, просто я привел для конкретного =)
     
    2 people like this.
  19. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Угу, а если $a=false, то не выведется ничего, тогда к какому типу? null?
     
  20. LolLol

    LolLol New Member

    Joined:
    28 Jan 2008
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    Дорогие форумчане! Подскажите, как отличить в инете известных личностей от их "двойников"? Так много в последнее время появилось "звездочек", в блогах например...))))))))
     
    1 person likes this.
Thread Status:
Not open for further replies.