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

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

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

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Сравни вариант с флагами и с goto, что будет выглядеть понятнее и проще реализовано. (уровень вложенности может быть и не два, а больше, сколько тогда флагов будет...).

    А насчет continue - это отдельный вопрос, который break'а не касался)
     
  2. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    в пхп есть оператор ? ?
     
    #302 scrat, 3 Aug 2007
    Last edited: 3 Aug 2007
  3. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    кхм...
    PHP:
    $var $condition $v1 $v2;
    если ты об этом, то да
     
  4. _kREveDKo_

    _kREveDKo_ _kREveDKo_

    Joined:
    4 Dec 2005
    Messages:
    778
    Likes Received:
    620
    Reputations:
    1,040
    Есть ли ф-ция, выплёвывающая нам номер строки где на данный момент находится указатель?
     
  5. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    2b00zy_c0d3r

     
    1 person likes this.
  6. _kREveDKo_

    _kREveDKo_ _kREveDKo_

    Joined:
    4 Dec 2005
    Messages:
    778
    Likes Received:
    620
    Reputations:
    1,040
    Не, не то. Ситуация такая: нужно открыть файл с неопределённым кол-вом строчек и дописать туда ещё строку (режим a+), прилепив к ней номер записанной строки в файле. Нужен именно рациональный способ. если он есть конечно. Понятно, что можно читать файл до конца, посчитав скока там строчек и когда дописываешь ещё одну - приплюсовать ещё +1, но это мне кажется ресурсоёмким. Что-нить более рациональное есть?

    [upd]
    И ещё: нужно принудительно поставить указатель на определённую строку
     
    #306 _kREveDKo_, 6 Aug 2007
    Last edited: 6 Aug 2007
    1 person likes this.
  7. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Если у тебя все строчки добавлялись в файл по этому принципу, то можно считать последнюю строку, "выдрать" из нее номер, добавить к нему единицу и записать в новую:

    PHP:

    $f 
    fopen('file''a+');

    $str '';

    for (
    $i = -1$cnt=0$cnt 1$i--) // <2 если после добавления строки перевод на новую строку
    {
       
    fseek($f$iSEEK_END);
       
    $tmp fread($f1);
       if (
    $tmp == "\n")
       {
           
    $cnt--;
       }
       else
       {
           
    $str .= $tmp;
       }
    }

    fseek($f0SEEK_END);
    $str strrev($str);

    Как выдрать номер, одному богу да тому, кто в файл писал, известно. Используй регексп

    [upd]
    А по поводу установки указателя в нужное место, имхо тут нужен поиск по файлу по методу (не помню как называется, поэтому будет так) случайных чисел.

    Суть метода:

    • fseek'ом переещаемся в позицию rand(0, filesize($file))

    • считываем ближайшую строку

    • выдираем из нее номер, если он больше нужного, то изменяем большую границу в rand на текущее положение, меньше - меньшую соответственно.

    • возвращаемся в первый пункт

    Таким образом гуляем по файлу, пока е найдем нужную строку.

    Хоть алгоритм и кажется долгодействующим и неработоспособным - это далеко не так. На ленте препод за 10 переходов угадал загаданное от 0 до 1000 число.
     
    #307 Helios, 6 Aug 2007
    Last edited: 6 Aug 2007
  8. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Code:
    $sourceimg = imagecreatefromjpeg($url);
    какой функцией можно данное изображение сделать бинарным (черное и белое)?
     
  9. Dr.Frank

    Dr.Frank Elder - Старейшина

    Joined:
    31 Jul 2002
    Messages:
    301
    Likes Received:
    72
    Reputations:
    12
    Если при сохранении, то imagewbmp($im); или image2wbmp($im);
    wbmp - формат ч/б изображений для мобилы(большие размеры коряво переделываются)
     
  10. Hormold

    Hormold Banned

    Joined:
    26 Jun 2007
    Messages:
    43
    Likes Received:
    9
    Reputations:
    -14
    Помогите! У меня есть скрпт на php отображающий статистику.
    Всё что-нужно есть...
    Теперь нужно слева прилипить картинку вытащиную с сайта и уменьшиную до 60x50.
    Плиз помогите!
    Размер фона 350x50
     
  11. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Hormold, кто ясно мыслит, тот ясно говорит. К тебе по-видимому это не относится. По нормальному напиши что требуется.
     
  12. Hormold

    Hormold Banned

    Joined:
    26 Jun 2007
    Messages:
    43
    Likes Received:
    9
    Reputations:
    -14
    Нужно вставить в юзер бар(с cs-статой) на php слево картинку(например http://img.ru/img.jpg).
    Размер юзер бара 350x50
    Картинку нужно уменьшить до 60x50.
     
  13. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Работаю с mod_rewrite, вот правило:
    Code:
    RewriteRule ^tyres/brand/(.*)$ index.php?do=tyres_brand&tmark=$1 [L]
    
    Есть также ссылка
    Code:
    http://xxxx.xx/tyres/brand/Nexen+%26+Roadstone
    
    Последняя часть это "Nexen & Roadshore", прогнанная через urlencode()

    Суть проблемы:
    в $_GET['tmark'] попадает только Nexen, т.е.
    Code:
    $_GET:
    
    Array
    (
        [do] => tyres_brand
        [tmark] => Nexen
        [Roadstone] => 
    )
    
    Т.е. хоть амперсанд и прогнан через urlencode, он все равно определяется, как разделитель переменных.

    Вопрос: как этого избежать?
    P.S.: При этом не хотелось бы потерять сам смысл ЧПУ /о варианте с base64 я уже думал/
     
  14. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Хм..так подумал..
    Может попробовать
    Code:
    RewriteRule ^/tyres/brand/([^/]+)$ index.php?do=tyres_brand&tmark=$1 [L,QSA]
     
  15. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Это, собственно, ничего не меняет, т.к. mod_rewrite перенаправление делает правильное.

    Только при этом он, по всей видимости, прогоняет через аналог urldecode() переменную $1, которую берет из URI.

    Можно ли это отключить?
     
  16. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    В общем, сделал так:

    .htaccess:
    Code:
    RewriteRule ^tyres/brand/([^/]+)$ index.php?do=tyres_brand&tmark=$1 [E=TMARK:$1] [L]
    
    А нужную переменную беру из $_SERVER['REDIRECT_TMARK'], туда попадает в целости и сохранности)
     
  17. myp3zz

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

    Joined:
    10 Jun 2007
    Messages:
    26
    Likes Received:
    15
    Reputations:
    0
    у меня вопрос, вот есть форма, пользователь вводит данные, как сделать чтобы при нажатии на кнопку отсылки данных данные передавались одному файлу а пользователь переходил на другой?
     
  18. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    Дана Mysql таблица:
    Code:
    create table lala(ID int,someshit text,primary key(ID));
    как инсертить в эту таблицу записи чтобы ID у записи был на 1 больше чем у максимального ID(последней записи)?
     
  19. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    myp3zz, просто location меняй, header('Location: script2.php');
     
  20. Dr.Frank

    Dr.Frank Elder - Старейшина

    Joined:
    31 Jul 2002
    Messages:
    301
    Likes Received:
    72
    Reputations:
    12
    2scrat
    Code:
    create table lala(ID int auto_increment,someshit text,primary key(ID));
    Или что-то похожее, т.е. чтоб при добавлении автоматически присваивался ID на единицу больше
     
Thread Status:
Not open for further replies.