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

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

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

    foma9999 New Member

    Joined:
    5 Jan 2010
    Messages:
    83
    Likes Received:
    2
    Reputations:
    -5
    PHP:
    $page ='http://?k=123123123' ;
    preg_match('#http://?k=(.+?)#',$page,$cap);
    print_r($cap);
    ничего....
    помогите ;)
     
  2. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    <?php

    $page 
    ='http://?k=123123123' 
    preg_match('#http://\?k=(.+?)#',$page,$cap); 
    print_r($cap); 


    ?>
    ? необходимо экранировать.
     
  3. Ifrit

    Ifrit New Member

    Joined:
    10 Feb 2011
    Messages:
    33
    Likes Received:
    3
    Reputations:
    5
    доброго времени суток!
    прошу помощи в доведении до ума следующего кода

    PHP:
    <?php
    error_reporting 
    (0);
    set_time_limit(2000);
    //Включаю файл доступа, где описаны хосты, имя пользователя и пароль
    include ('access.inc');

    //Скрипты хранятся в отдельной папке в текстовых файлах
    $filename "c:\\project11\\queries\\20.txt";
    $handle fopen($filename"r");
    $sql fread($handle,20000);
    fclose($handle);
    //Данные представляются в табличной форме
    echo '<table border="1"'
    //Цикл для прохода по всем хостам
    foreach ($hosts as $state=>$host)
        {
    echo 
    '<tr>';
    echo 
    '<td>';
    echo 
    "$state";
    //В случае наличия соединения проводит запрос, в случае отстуствия переходит к следующему
    if ($connect=mssql_connect($host,$account,$password)==TRUE)
        {
        
    $connect=mssql_connect($host,$account,$password);
        }
        else 
        {
        continue;
        }
    //Результат обрабатывается с помощью fetch_row и элементы массива вставляются в таблицу
    $result=mssql_query($sql);
    $results=mssql_fetch_row ($result);
    foreach (
    $results as $value);
        {
        
    $end[]=$value;
        }    
    foreach (
    $end as $data)
        {
        echo 
    '<td>',$data;
        }
    unset (
    $end);
        }
    echo 
    '</table>';
    }
    ?>
    код индусский =)
    так вот, я написал и использовал этот код для снятия информации со всех подконтрольных мне хостов одним запросом, выводящим информацию одной строкой и >=1 рядами
    правда после того как я полез его модифицировать под многострочный вывод, я что то напортачил и теперь вывод в несколько колонок не работает корректно
    понятно, что мог бы решить проблему и сам если бы постарался, но уже запарился, глаз замылен знание похапэ стремится к нулю =)
    Пожалуйста помогите в исправлении ошибки с многостолбцовым выводом и еще:
    Сервер, на котором размещается web сервер находится в одном городе, сервера с базами данных MS SQL в других городах. Соответсвенно связь между ними оставляет желать лучшего. Скажите пожалуйста - можно ли создать с помощью средств PHP и MS SQL схему, благодаря
    которой запросы будут отправлятся на локальные сервера, сохранятся в их памяти и проводится по
    базе как локальный запрос, после чего результат будет сохранен там же, а уже после передан
    на веб сервер? Дело в том, что сложностей не возникает покамест не приходится проводить
    тяжелые запросы, которые зачастую просто не проводятся, а код переключается на следующий хост.
    В приведенном выше коде для прохода по массиву хостов используется цикл. В этом случае
    проведение запроса на хосте №2 невозможно без окончания процедуры на №1 и т.д.
    Подскажите пожалуйста, как сделать так, чтобы скрипты проводились на всех базах одновременно.
    П.С. извините за много букв =)
     
    #17643 Ifrit, 11 Feb 2011
    Last edited: 11 Feb 2011
  4. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Ifrit, это у вас весь код? А где закрытие тэгов TD и TR?
     
  5. Ifrit

    Ifrit New Member

    Joined:
    10 Feb 2011
    Messages:
    33
    Likes Received:
    3
    Reputations:
    5
    ну какбэ в спецификации HTML сказано, что закрывающие тэги <tr> и <td> не обязательны...
    код нормально работал с одностроковым выводом с каждого хоста, пока я не начал его "подкручивать" =)
     
  6. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    А в спецификации сказано, что замыкающая угловая скобка в тэге TABLE, не обязательна?)
    Code:
    echo '<table border="1"';
    
     
  7. Ifrit

    Ifrit New Member

    Joined:
    10 Feb 2011
    Messages:
    33
    Likes Received:
    3
    Reputations:
    5
    спасибо, но основная ошибка оказалась в
    PHP:
    foreach ($results as $value);
    знаке точки запятой после оператора foreach =/
    теперь код нормально работает на одностроковый вывод, осталось 3 проблемки =)
    1. как корректно вывести многострочный ответ
    2. как проводить запрос одновременно на нескольких хостах.
    3. как проводить скрипт на удаленном хосте как локальный =)
    спасибо :)
     
  8. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    после реги
    как сделать чтоб сайт был test1.ru/страницюзера

    ну типа test1.ru/nelz

    покажите пример итд??
     
  9. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    подскажите, вот такое дело
    PHP:
    < ?
    i f i s s e t ( $ _ G E T ' i d ' ] ) )
    {
    i n c l u d e " d b c o n n e c t . p h p " ) ;
    q p u " S E L E C T ` c a t `
    F R O M ` t o p k a t `
    w h e r e ` c a t ` = ' " 
    . $ _ G E T ' i d ' ] . " ' " ;
    s p u m y s q l _ q u e r y ( $ q p u o r d i e m y s q l _ e r r o r ( ) ) ;
    w h i l e ( $ r o p u m y s q l _ f e t c h _ a r r a y ( $ s p u ) )
    {
    a a z = $ r o p u ' c a t ' ] ;
    }
    q p z " S E L E C T ` n a m e ` , ` s s i l k a ` , ` o p i s `
    F R O M ` t o p s i t e `
    w h e r e ` k a t e ` = ' $ a a z ' a n d ` z n ` = ' н а п р о в е р к е ' " 
    ;
    s p z m y s q l _ q u e r y ( $ q p z o r d i e m y s q l _ e r r o r ( ) ) ;
    w h i l e ( $ r o p z m y s q l _ f e t c h _ a r r a y ( $ s p z ) )
    {
    e c h o " < t r > " ;
    e c h o " < t d > " ;
    e c h o r o p z ' n a m e ' ] ;
    e c h o " < / t d > " ;
    e c h o " < / t r > " ;
    e c h o " < t r > " ;
    e c h o " < t d > " ;
    e c h o r o p z ' s s i l k a ' ] ;
    e c h o " < / t d > " ;
    e c h o " < / t r > " ;
    e c h o " < t r > " ;
    e c h o " < t d > " ;
    e c h o r o p z ' o p i s ' ] ;
    e c h o " < / t d > " ;
    e c h o " < / t r > " ;
    }
    }
    e l s e
    {
    и т д .
    ошибка
    Notice: Undefined variable: aaz
    in /usr/home/ma
    почему? как исправить?
     
  10. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    это значит что у тебя не задана переменная. нужно копать в сторону запроса из БД. видимо не правильно получаешь. попробуй вывести просто так
     
  11. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    вопрос совсем не корректный...

    берешь имя юзера и прикрепляешь его допустим к:
    index.php?user=nelz
    так чтобы по этому адресу выводилось нужное.
    берешь .htaccess и прописываешь там доступ по
    /nelz/ то что на index.php
    делаешь все это через регулярки
     
  12. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    а это нормально, что у тебя между буквами пробелы ?
     
  13. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    та не, просто я с телефона, а он у меня почемуто при копировании ставит пробелы
     
  14. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    я это знаю
    ---------------------------

    ох спасебо вспомнил о другом :rolleyes:
     
  15. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    может быть так?

    PHP:
    $aaz[] = $ropu['cat'];
     
  16. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    да нет, так точно не правильно
     
  17. ~d0s~

    ~d0s~ Banned

    Joined:
    17 Apr 2010
    Messages:
    246
    Likes Received:
    257
    Reputations:
    154
    qaz
    PHP:
    $qpu "SELECT `cat` 
    FROM `topkat` 
    where `cat` = ' "
    .$_GET['id' ]." ' " ;
    С такими запросами твой сайт долго не проживет
    Сделал бы инициализацию:
    PHP:
    $id = !empty($_GET['id']) ? abs(intval($_GET['id'])) : NULL;
    И в запросе уже подставлял переменную $id
    Так ну опустим этом момент, объясни нахера вообще SELECT cat ... WHERE cat=...
    А еще потом фетчить тоже непонятно накой, сразу mysql_result , чтобы получить 1 переменную и потом уже второй запрос делать я не понимаю смысл етого кода
    Затем еще генерация хтмла с помощью эхо,мда. Не проще когда проходит вайл занести все ето дело в массив $arr[] = $ropz;
    А потом уже foreach($arr as $krutoymagaz):
    закрываешь пхп и рисуешь хтмл, а затем просто endforeach;

    кароче быдлокод, прости, но это так
     
  18. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz проблема в том, что первый запрос может вернуть корректный результат не содержащий ни одной строки, но при этом это не будет ошибкой отлавливаемой конструкцией or die(mysql_error()). Поэтому вам надо пересмотреть логику скрипта. Либо добавьте в начало строку $aaz = '';
    Либо после цикла создающего эту переменную добавьте что-то вроде:
    PHP:
    if (!isset($aaz)) die('категория не найдена');
     
    _________________________
  19. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Как сделать так чтобы строка "11111111111111111111111111111111111111111111111" стала "1111111111111111 1111111111111111 111111111111111" т.е. разделялась пробелами через каждые 16 символов?
     
  20. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    <?php
    $str 
    rtrim(str_replace('1111111111111111''1111111111111111 ''11111111111111111111111111111111111111111111111'));
    echo 
    $str;
     
    #17660 Chaak, 13 Feb 2011
    Last edited: 13 Feb 2011
    1 person likes this.
Thread Status:
Not open for further replies.