[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
    temp_late
    а почему ты не инициализировал переменную $t в самом цикле? и $t++ туда же не засунул? =\
    Специально для таких целей существует функция str_split() ,которая бьёт строку на массивы и не нужно никаких извращений!)
    PHP:
    <?php
    $text 
    "ышвгфращфзышвгарзщыфшварышгвар";
    $skoka 3//По сколько символов разбивать
    $arr str_split($text$skoka);
    for(
    $i=0$i count($arr); $i++)
    {
       
    $str $arr[$i]."-";
       echo 
    $str;
    }
    ?>
     
  2. spamoney

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

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Всем привет, у меня такой вопрос:

    есть два sql запроса:

    Code:
    $sql1= SELECT min(count) FROM table1;
    $sql2= SELECT min(id) FROM table1 WHERE count=$sql1;
    
    Можно ли как-нибудь объединить это в один SQL запрос, пробывал так, но естественно не работает:

    Code:
    $sql=SELECT min(id) FROM table1 WHERE count=min(count);
    
     
  3. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    я не очень понимаю зачем тут min(id) ведь если напимер min(count) - равен 10 то и выбора нет..значение id там только одно

    попробуй так

    PHP:
    $sql=SELECT min(idFROM table1 WHERE count=(SELECT min(countFROM table1);
     
    #2143 Doom123, 2 Mar 2008
    Last edited: 2 Mar 2008
  4. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    Возникла такая задачка.

    На функцию передается переменная. А как в этой функции вывести названия переменной что ей передается, именно имя а не значение?
     
  5. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    presidentua, ого, норкоман... ИМХО никак не сделать я вот погуглил не нащёл, да и неслышал о таком Х_Х
     
    2 people like this.
  6. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    не наркоман, я на службе :)

    Ну в принципе это мне сдуру придумалось такое. Тоже в гугле ничего не нашел. Но как говориться, я тоже ежика не вижу, а он есть :)

    Мож кто знает как решить?
     
  7. spamoney

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

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    смотри допистим в таблице такие значения:
    Code:
    id    count
    
    1     5
    2     6
    3     4
    4     4
    
    запрос $sql1= SELECT min(count) FROM table1; вернет их так

    Code:
    id    count
    
    3     4
    4     4
    
    приведенный твой запрос, если даже он и прокатит делает два запоса в БД, а нужен один

    так всё таки возможно ли объединить эти два запроса в один:

    PHP:
    $sql1SELECT min(countFROM table1;
    $sql2SELECT min(idFROM table1 WHERE count=$sql1;
     
  8. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Code:
    SELECT min(id) FROM table1 WHERE count=(SELECT min(count) FROM table1);
     
  9. spamoney

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

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Мммм, видимо, я немного непонятно объяснил, нужно использовать как можно меньше обращений к БД, запрос:

    PHP:
    SELECT min(idFROM table1 WHERE count=(SELECT min(countFROM table1);
    также как и:
    PHP:
    $sql1SELECT min(countFROM table1
    $sql2SELECT min(idFROM table1 WHERE count=$sql1;
    используют два обращения к БД, а нужно оптимизировать так что бы было одно...
     
  10. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    По моему лучше сделать переменную - ключём массива.
    PHP:
    <?php
        $test
    ['KEY_OF_ARRAY'] = 'VALUE_OF_ARRAY';
        function 
    var_get($arr) {
            
    $key array_keys($arr);
            echo(
    $key[0]);
        }
        
    var_get($test); //return 'KEY_OF_ARRAY'
    ?>
     
  11. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    Спасибо NOmeR1!

    Так и сделаю. Думаю по другому никак..
    --------------------------------

    Сейчас запустил один скриптик для парсинга ГУГЛ страниц и мне периодически выбрасывает ошибку

    Error in my_thread_global_end()
    Что это вобще за ошибка. Я такую фукнуцию не юзаю и в глаза не видел
     
    #2151 presidentua, 2 Mar 2008
    Last edited: 2 Mar 2008
  12. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    как можно грамотно проверить введённый логин юзера на наличие недопустимых символов в php?

    на ум приходит тока выдернуть регуляркой по паттерну, содержащему тока буквы и цифры, и если выдранный кусок не совпадает с полным логином - тогда фальс.

    но штото подсказывает мне, что это изврат.

    а также хотелось бы это проверить и на javascript :)
     
  13. Macro

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    if(!ereg('^[a-zA-Z0-9_]+$',$login)){die('Неверное имя!');}
     
  14. George767

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

    Joined:
    10 Jan 2006
    Messages:
    129
    Likes Received:
    25
    Reputations:
    -1
    делать проверку на клиентской стороне - лишняя трата времени
     
  15. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Неверно, делать предварительную проверку на клиетской стороне - как раз экономия серверного времени. Но это в тему по JS.
     
  16. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    спасибо. по js я уже нашёл код, буду разбираться.

    если кому надо -
     
  17. argonn

    argonn New Member

    Joined:
    1 Mar 2008
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    up
     
  18. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    имхо с html такое невозможно. только если через логи сервера...
     
    1 person likes this.
  19. argonn

    argonn New Member

    Joined:
    1 Mar 2008
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    например, ложим хтаксесс в корень
    понятно что все достыпы походятчерез него, если взять прметивный пример, это защита от хотлинка


    родилась мысль, можно ли используя хтаксесс одать параллельно файлу обработчику на пхп
     
  20. temp_late

    temp_late Banned

    Joined:
    22 Aug 2006
    Messages:
    47
    Likes Received:
    7
    Reputations:
    2
    Есть предположение, что на подсчет длины через функцию на каждом цикле будет тратиться больше ресурсов, чем если подсчитать однажды и просто цеплять результат уже из переменной, если мое мнение ошибочно поправьте меня.

    Насчет $t++, согласен есть такое, можно, привычка.. вот научили на Pascale так делать. А что будет быстрее если сделать так?:

    PHP:
    <?php
    $text
    ='! ышвгфращфзышвгарзщыфшварышгвар!!!';
    $char=3;// насколько делить
    $sizet=strlen($text);
    $t=1;
    $out='';
    for (
    $i=0;$i<$sizet;$i++,$t++){    
        if(
    $t>$char){$t=1;$out.='-';}
        
    $out.=$text{$i};
    }
    echo 
    $out;
    ?>
    В твоем коде логическая ошибка, функция str_split() кромсает строку в масив по 3 символа, и потом собирает масив в едино, прибавляя в конце '-'.
    Ошибка в том что строка не всегда может делиться на три ровно, а тире по заданию нужно поставить через каждые 3 символа,
    $text='1234567';
    так будет выполнять твой код
    123-
    456-
    7-
    последние тире поставилось не через 3 символов, для этого нужно внести следующее условие в твой код:
    PHP:
    <?php
    $text 
    "ышвгфращфзышвгарзщыфшварышгва";
    $skoka 3//По сколько символов разбивать
    $arr str_split($text$skoka);
    for(
    $i=0$i count($arr); $i++)
        {
        if (
    strlen($arr[$i])==3){$str $arr[$i]."-";}
        else{
    $str $arr[$i];}
        echo 
    $str;
    }
    ?>
    тогда будет правильно, но мне кажется мой код будет проще, и рациональней использовать системные ресусры.


    PS:Правильней было бы присвоить текст используя одинарный ковычки:
    $text = 'ышвга';
    //а так :
    $text = "ышвга"; //он будет тратить больше ресурсов, ибо будет искать в текст переменные для их замены.
     
    1 person likes this.
Thread Status:
Not open for further replies.