Рекомендованные сообщения

Обсуждаем данную тему тут...

Изменено пользователем TWINc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос чисто для интереса: вот у меня есть скрипт который ищет в таблице есть ли данные с каким-то номером (их может быть и 500 с одинаковым номером), я задаю ввиде 'SELECT * FROM la-la-la WHERE id='.$id

Но мне не важно сколько найдено, главное если больше 0 то просто вывести картинку (ну или что то другое сделать). Вот если я напишу в конце 'LIMIT 1' это снизит нагрузку на программы типа апача или скул и улучшит время выполнения запроса?

 

И еще вопрос: как заставить правильно работать функцию strpos если мне нужно найти в тексте определенное слово, но если оно встречается первым (то есть по идее позиция равна 0) то позиция почему то получается равной пустоте. Единственное что пока придумал так это добавлять к строке впереди 1 любую букву и уже в полученной строке искать слово, так работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

zed, ну в Руководстве по PHP есть описание как правильно использовать strpos. Скачай.

 

А на сайте разработчиков есть комментарии и другие примеры кода.

http://www.php.net/strpos

 

$pos = strpos($mystring, $findme);

 

 

if ($pos === false) {

echo "Строка не найдена";

} else {

echo "Строка найдена'";

}

 

 

>Вот если я напишу в конце 'LIMIT 1' это снизит нагрузку на программы типа апача или скул и улучшит время выполнения запроса?

На mysql+php снизит нагрузку.

Изменено пользователем tommy-kun

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

tommy-kun, да тот мануал весь перечитал... там вариантов ее использования не так уж то и много, там же просто strpos(что_искать,где_искать) но я пробовал не работает функция если слово встречается в фарзе первым символом (точнее 0 если считает компьютер). Но на практике выходит даже не true если писать if(strpos(что_искать,где_искать))===true , а просто NULL... вообщем пока буду прибавлять букву к строке, не так уж это и сложно (не говорю еще про то как я избавлялся от ненужных нулей на конце чисел в другойтеме...)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

zed, описанный пример не работать не может.

Если не работает - ты не то делаешь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос чисто для интереса: вот у меня есть скрипт который ищет в таблице есть ли данные с каким-то номером (их может быть и 500 с одинаковым номером), я задаю ввиде 'SELECT * FROM la-la-la WHERE id='.$id

Но мне не важно сколько найдено, главное если больше 0 то просто вывести картинку (ну или что то другое сделать). Вот если я напишу в конце 'LIMIT 1' это снизит нагрузку на программы типа апача или скул и улучшит время выполнения запроса?

 

И еще вопрос: как заставить правильно работать функцию strpos если мне нужно найти в тексте определенное слово, но если оно встречается первым (то есть по идее позиция равна 0) то позиция почему то получается равной пустоте. Единственное что пока придумал так это добавлять к строке впереди 1 любую букву и уже в полученной строке искать слово, так работает.

 

у тебя условие, наверно, стоит типа

$pos=strpos($text,$search);

 

if ($pos)

{

?>Нашли<?

}

else

{

?>Не нашли<?

}

 

понимаешь, strpos возрашает false если ничего не найдено, и 0 если искомое в начале текста, следовательно надо конкретизировать условие:

 

if ($pos!==false)....

 

а про LIMIT, чес слово опять загнались :wacko:... это означает количество считываемых строк из базы по запросу..

 

Типа "SELECT * FROM table WHERE id=5 LIMIT 1", в результате вернется только одна строка, из таблицы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

есть функция, чесно спёртая из phpBB

 

 

function link_protect($text) 
{ 
$ret = ' ' . $text; 
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://test.ru\">test.ru</a>", $ret); 
$ret = preg_replace("#(^|[\n ])((wap|www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://test.ru\">test.ru</a>", $ret); 
$ret = substr($ret, 1); 
return($ret); 
}

 

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

Пример

 

test.ru www.test.ru http://test.ru http://www.test.ru http://sub.test.ru заменяются

test.ru/img.gif test.ru/zip.zip не заменяются.

 

необходимо мне это для чата или гостевой, чтобы избежать флуд-рекламу других сайтов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуй проверять в ссылке наличие точки на 4 позиции с конца, я так проверяю, является ли ссылка папкой или файлом.

Например

if ($url[strlen($url)-4]=='.')

echo "Это файл";

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Предлагаю заценить чат, написал недавно, просто для проверки своих знаний :)...

Чат написан на PHP+Ajax... наглядный пример применения Ajax'а, все его плюсы на глаза.

 

вот собственно ссылка http://cosmetik.jino-net.ru/chat/

 

поместил сюда потому что ну не сайт это, а скрипт :)

 

Также можно наворотить до биспредела, только руки не доходят... на написание кода ушло около 4 часов, плюс приведение в божеский вид еще часик..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Fatalius, почемутио пустые мессаги иногда сами всплывают от пользователя. А так прикольно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Fatalius, почемутио пустые мессаги иногда сами всплывают от пользователя. А так прикольно

Я тоже заметил. Правда ещё и пустые сообщения тоже проходят. Зажал Ctrl+Enter и ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я тоже заметил. Правда ещё и пустые сообщения тоже проходят. Зажал Ctrl+Enter и ...

ну дык просто не ставил проверку на пустое сообщение и все, главное не это, а то, что страница не абнавляеца... удобно, и все работает... Ж)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это не вопрос, а информация.

РНР, mysql

Как сделать, чтобы при добавлении в базу символов типа Ă русские буквы не превращались в иероглифы?

Выхода два: либо трем их из переменной, либо конвертируем.

Конвертация:

Для начала отконвертируем строку стандартной функцией:

$str=htmlentities($str,ENT_QUOTES);

Как бы не так, все равно иероглифы, потому как мы добавили отконвертированные русские символы. Чтобы этого избежать, на странице, которая должна вывести из базы переменную, пишем:

function unhtmlentities ($string)

{

$trans_tbl = get_html_translation_table (HTML_ENTITIES);

$trans_tbl = array_flip ($trans_tbl);

return strtr ($string, $trans_tbl);

}

 

$str=unhtmlentities($str);

Вобщем-то все.

 

Теперь как удалить - это все то же самое, но в другом пордяке. Перед тем как добавить в базу, делаем следующее:

 

function unhtmlentities ($string)

{

$trans_tbl = get_html_translation_table (HTML_ENTITIES);

$trans_tbl = array_flip ($trans_tbl);

return strtr ($string, $trans_tbl);

}

$str=unhtmlentities(htmlentities($str,ENT_QUOTES));

все... В базе будут нормальные русские символы.

В результате такой нехитрой операции удалятся все нестандартные символы, а кавычки отконвертируются в html-мнемоники.

 

Сорри, что изобрел велосипед, но никто не знает (или знает, но молчит), как это осуществить... Сам нашел решение методом великого тыка (почти месяц тыкал).

Изменено пользователем RPG

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

RPG, зачем вы всё это написали?

 

Что за "база" при записи в которую Русские буквы превращаются в иероглифы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
RPG, зачем вы всё это написали?

Потому что везде, где бы я не задавал этот вопрос, мне не отвечали.

Что за "база" при записи в которую Русские буквы превращаются в иероглифы.

mysql

 

Только заметил: форум тупит. Я печатал другое!

 

Короче это полная ерунда, форум мне просто не дает это напечатать (заметка для администрации форума)

смотрите тут

http://forum.atom.ru/showthread.php?p=19181#post19181

 

 

Попробуйте скопировать оттуда весь текст из первого сообщения, и вставить в эту форму:

 

<form method=post><input name=val><input type=submit value=go></form>

<?

if($val){

echo $val;

}

?>

Изменено пользователем RPG

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос у меня по библиотеке PHP_GD

Проблема следующая.

У меня получилось использовать её только с файлами .jpg. С gif не работает, это документировано, с png после обработки изображения выходит чёрный квадрат малевича. Вещь, конечно имиджевая, но мне не подходит. С bmp тоже не получилось. Как я понял по форумам, не у одного меня.

Может даст кто нибудь разъяснения по этой теме? Очень хочется со всеми картинками работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это не вопрос, а информация.

РНР, mysql

Как сделать, чтобы при добавлении в базу символов типа Ă русские буквы не превращались в иероглифы?

...

А не легче сроку с твоими символами пропустить через urlencode и занести в бд, а после выборки, воспользоватся urldecode?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>С gif не работает, это документировано, с png после обработки изображения выходит чёрный квадрат малевича. Вещь, конечно имиджевая, но мне не подходит. С bmp тоже не получилось. Как я понял по форумам, не у одного меня.

 

Некоторые хостеры не умеют нормально настроить php + gd.

 

Другие даже в то время когда на много лет поддержка формата GIF была исключена из GD они (хостеры) всё равно поддерживали работу с этим форматом.

Ну мало ли что я сам лично с таким сталкивался.

Руки у тех админов были кривые.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

DeGeneration X, пробовал, та же петрушка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это не вопрос, а информация.

РНР, mysql

Как сделать, чтобы при добавлении в базу символов типа Ă русские буквы не превращались в иероглифы?

 

Или просто, после mysql_connect(...), написать mysql_query('SET NAMES cp1251'), если работаем с windows-1251 кодировкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще для таких целей есть кодировка utf8.

Тогда любые символы будут в нормальном виде сохраняться в базе.

В версиях mysql от 4.1 можно вибирать кодировку для отдельных таблиц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Fatalius, кодировка по умолчанию и есть 1251

tommy-kun, было дело, только все равно даже в этой кодировке иероглифы рисовались...

А чем мой вариант не нравится? Он используется практически на всех движках, пока никто не жаловался...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>кодировка по умолчанию и есть 1251

 

Не на всех хостингах (на что напарывался :P ). Так что его совет может пригодиться.

 

>было дело, только все равно даже в этой кодировке иероглифы рисовались...

 

Хм. У меня проблем с utf8 не было. Подробностей не помню уже.

 

>А чем мой вариант не нравится?

 

Да нравится. Хотя сам делал по другому (там Русский язык был не основной).

Намёки на такое решение есть на php.net в описаннии get_html_translation_table() насколько я помню.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите где смотреть описания про такую строчку (В частности интересует при каких услових будет tdrow2 или tdrow1...)

$td_col = $i % 2 ? 'tdrow2' : 'tdrow1';

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите где смотреть описания про такую строчку (В частности интересует при каких услових будет tdrow2 или tdrow1...)

$td_col = $i % 2 ? 'tdrow2' : 'tdrow1';

 

Это не РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ!!!!

 

это знач так, строчка, наверна, в цикле.... а условие здесь следуещее, типа если i делится на 2, то выводить "tdrow1", а иначе "tdrow2".

 

a % b = остаток от деления.

 

Теперь разберем подробнее что здесь и как:

 

$td_col = $i % 2 ? 'tdrow2' : 'tdrow1'; - это типа условие следующего вида

 

переменная = {условие} ? {если выполняеца условие, в переменную то что здесь написано} : {если не выполняеца, то что здесь};

 

простой пример:

 

b=true;

c=1;

d=0;

 

a= b==true ? c : d ; итак если b равняеца true, то в a пишем c, иначе d;

 

все элеминтарно, Ватсон :-D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Fatalius, а не кто и не говорил что это регулярное выражение!!!

Это тернарное выражение (Смотри мануалы), вот :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Fatalius, а не кто и не говорил что это регулярное выражение!!!

Это тернарное выражение (Смотри мануалы), вот <_<

так я не смотрел, просто увидал слово expressions и все... у меня в мозгу чо то переключилось :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Народ, как PHP5 научить по русски разговаривать? Нужно чтобы

date('F Y');

возвращало не September 2006, а Сентябрь 2006.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас