|
|
|
|
|
для: cheops
(07.11.2004 в 12:26)
| | Что касается баннеров:
Предложенный вами механизм, Cheops, был мною адаптирован, проверен, опробован. Результат - успешно работает. Большое спасибо.
Что касается проверки ввода:
Я все же решил выбрать вариант с использованием регулярных выражений, так как в данном случае я на 100% могу быть уверен, что PHP интерпретатор "поймет" меня правильно. | |
|
|
|
|
|
|
|
для: antf
(07.11.2004 в 13:56)
| | >> И еще один небольшой вопрос: как проверить, что данные, введенные пользователем в поле типа text являются целым числом? Оправдано ли здесь приведение типов?
Думаю да. Надо только не забыть сделать проверку на "0" (строка автоматически преобразуется в 0).
Что же качается рег. выражений, то они не всегда удобны. Так например 1234r будит после преобразования 1234 - что и нужно, а рег. выражение выдаст ошибку. Возможно же случайное добавление буквы. Хотя все зависит от задачи. | |
|
|
|
|
|
|
|
для: antf
(07.11.2004 в 13:56)
| | > И еще один небольшой вопрос: как проверить, что данные,
>введенные пользователем в поле типа text являются целым
>числом? Оправдано ли здесь приведение типов?
С типами всё очень плохо - так как PHP преобразует типы в зависимости от контекста, лучше сразу вопользоваться регулярными выражениями
<?php
$number = 1234;
$notnumber = "1234r";
if (preg_match("|^[\d]+$|i", $number))
{
echo $number." - число<br>";
}
else
{
echo $number." - не число<br>";
}
if (preg_match("|^[\d]+$|i", $notnumber))
{
echo $notnumber." - число<br>";
}
else
{
echo $notnumber." - не число<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.11.2004 в 12:26)
| | То есть, как я понимаю, нужно создать в БД(таблица bannersystem) колонку priority - int(3), где будет настроен приоритет показа каждого баннера. Тогда массив $banners будет заполняться примерно следующим образом:
<?php
$query="SELECT id, priority FROM bannersystem";
$result=mysql_query($query);
while($Column=mysql_fetch_array($result))
{
$Priority=$Column['priority'];
for($i=1; $i<=$Priority; $i++)
{
$banners[]=$Column['id'];
}
}
$index = rand(1, count($banner));
?>
|
И еще один небольшой вопрос: как проверить, что данные, введенные пользователем в поле типа text являются целым числом? Оправдано ли здесь приведение типов? | |
|
|
|
|
|
|
|
для: antf
(07.11.2004 в 12:02)
| | Хм... банеры показываются по закону случайных чисел. Пусть имеется 10 банеров, которым соотвествует массив $banner
<?php
$banner = array(1,2,3,4,5,6,7,8,9,10);
?>
|
В котором приведены первичные ключи 10 баннеров. Современные генераторы случайных чисел достаточно равномерны, т.е. каждый банер будет показываться примерно одинаковое число раз по сравнению с другими. Поэтому при отображении баннера индекс массива можно вычислять следующим образом
<?php
// $index - случайный индекс массива $banner
$index = rand(1, count($banner));
// $banner[$index]
?>
|
Теперь чтобы увеличить приоретет баннера 1 нужно добавить в массив ещё значений этого баннера:
<?php
$banner = array(1,1,1,2,3,4,5,6,7,8,9,10);
?>
|
Теперь баннер 1 будет показываться в 3 раза чаще чем остальные баннеры. | |
|
|
|
|
|
|
| Здравствуйте. Помогите, пожалуйста, разобраться в следующей ситуации: на странице имеется два места для баннеров. Самих же баннеров может быть сколько угодно (их параметры, такие как само изображение, url, спрятать/показать и др. настраиваются в CMS). Требуется написать такой код, чтобы администратор мог настраивать приоритет их показов. Какие параметры для этого можно использовать и каков механизм их функционирования?
Примечание: можно (и нужно) использовать БД. | |
|
|
|
|