Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы. 17 вопросов за истекший период


PHP  для начинающих (с помощью профессионалов). Программирование на PHP в вопросах и ответах.

 

Тема: 17 вопросов за истекший период

 

На заданные в прошлом выпуске вопросы были присланы ответы, от наших профессионалов – подписчиков рассылки. Также были присланы новые вопросы. Ответами и вопросами сегодня и займёмся.

 

P.s.

Вы можете Задать свой вопрос. И отправить свой ответ собрату по php программированию.

 

"Вопрос-ответ"

Вопрос 5 Задать свой вопрос


Здравствуйте, phperru.

 

Задача: необходимо чтобы при заполнении формы на сайте посетитель мог выбрать

с помощью группы переключателей определенную строку, и в зависимости от того

какой из переключателей оказался включеным, при нажатии на кнопку "ОК", попадал

на определенную страницу (присвоенную тому или иному переключателю...), + на

этой странице в определенные места должны будут вставляться данные введенные в

форму...

 

Подскажите как это можно реализовать?

 

--

С уважением,

BestManifest

Ответ 5 Прислать ответ


При обработке формы (после нажатия на кнопку), заполненые данные формы

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

форме-источнике. Если путь и файл не указан - то управление передается

этому же файлу, откуда и был запрос. Но уже выполняется не вывод формы

для заполнения, а обработка данных. Для начинающих это несколько

сложнее и не совсем удачно, т.к. и при выводе формы и при обработке

приходится загружать полностью файл (форма+обработчик), а использовать

лишь половину :) Но т.к. обработка происходит на стороне сервера, то

скорость при этом не страдает. Но файл довольно громоздкий и много

аналитических тегов для того, что бы определить так что же выводить

саму форму или  уже результат. Так, что на первых порах не советую

"злоупотреблять" объединением в один файл "всего и вся" -

запутаетесь...

 

Ну, а по сути после отправки заполненой формы, в файле-обработчике

данных, необходимо провести "анализ", какой из ключей-идентификаторов

какое имеет состояние и значение. Напомню, что можно анализировать не

только само значение переменной, но и само состояние переменной, к

примеру:

 

if (a==1) {операторы выполняемого действия по условию, когда оно верно

ВЕРНО или (как горят) TRUE}

else {операторы выполняемые по FALSE т.е. когда первое условие НЕ

ВЕРНО}

 

здесь анализируем переменную "а" - равнали она "1" или нет и в

зависимости от анализа выполняем или первую ветвь или вторую.

 

А вот если записать так, то будем анализировать не содержание

переменной (её значение - равенство или не равенство чему либо), а её

состояние - есть ли она вообще:

 

if (!a || a==0) {операторы выполняемого действия при отсутствии переменной или

равенстве её НУЛЮ} // можно заменить || на логический оператор OR

else {операторы выполняемые по FALSE т.е. когда первое условие НЕ

ВЕРНО т.е. переменная отлична от НУЛЯ и (само собой по этой причине)имеется в наличии}

 

 

Проверка на равенство НУЛЮ приведена просто для примера того,что можно

анализировать в одном операторе несколько условий... и только!

 

Напомню, что при проверке нескольких условий, лучше (и наглядней)

применять более расширенную структуру операторов IF

 

IF (1 условие){первое действие}

ELSEIF (2 условие) {второе действие}

ELSEIF (3 условие) {третье действие}

ELSE {4 действие, когда всё что выше НЕ ВЕРНО т.е. FALSE}

 

Ну, вот столь простыми способами можно реализовать хоть "черта

лысого..." :))))

 

Готов помочь советами начинающим по программированию на PHP - пишите

мне на alexsu100w@mtu-net.ru  (только тему заполнять не забывайте, а

то СПАМА много...)

 

--

С уважением,

 Alex

Вопрос 6 Задать свой вопрос


Здравствуйте.

 

Вопрос:

Подскажите пожалуйста, как узнать имя файла зная только его дескриптор? Например имя файла создаваемого функцией

tmpfile().

 

Спасибо!

Ответ 6 Прислать ответ


Кто знает ответ на этот вопрос, присылайте свои письма сюда:
Прислать ответ

 

Вопрос 7 Задать свой вопрос


Здравствуйте,

Я скачал несколько php-файлсерверов, для закачки файлов на сайт и управление ими.

Попытка установки к положительным результатам не привела.

 

Вопрос:

Посоветуйте, какой файлменджер лучше использовать?

Как установить и запустить его.

 

С уважением,

Руслан

 

Вопрос 8 Задать свой вопрос


Здравствуйте, phperru.

 

Вопрос.

Как с помощью PHP определить IP адрес и вывести его для просмотра на страницу.

По подробнее.

 

--

С уважением,

igorkr

 

Ответ 8 Прислать ответ

<?php echo "ваш IP адрес:", "\t","$HTTP_SERVER_VARS[REMOTE_ADDR]"; ?>

--

Best regards,

 Антонов


Кто знает ответ на этот вопрос, присылайте свои письма сюда:
Прислать ответ

 

Вопрос 9 Задать свой вопрос


При установке Apache 2.2.4, указывая путь на виртуальный диск (созданный через комманду subst), выходит ошибка "too long path". И он не в какую другую директорию кроме как Program Files "идти" не хочет.

 

То, что я не могу настроить его, я связываю как раз с этой ошибкой. Или дело в чём другом???

Ответ 9 Прислать ответ


Кто знает ответ на этот вопрос, присылайте свои письма сюда:
Прислать ответ

 

 

Вопрос 10 Задать свой вопрос


Нуждаюсь в помощи

Нужно перевести функцию с запросами в MySQL, на запросы через ADODB

Сама функция:

[PHP]function lastMes(){

global $dbhost, $dblogin, $dbpassword, $dbname, $newsid, $fPrefics, $fURL, $lang, $newsL;

mysql_connect($dbhost, $dblogin, $dbpassword);

mysql_select_db($dbname);

mysql_query("set character set cp1251");

$query_id=mysql_query('SELECT post, topic_id, post_date, pid FROM '.$fPrefics.'posts ORDER BY `post_date` DESC LIMIT 0 , 3');

while($data=mysql_fetch_row($query_id)) {

$cN = strlen($data[0]);

if ($cN>$newsL){

$data[0] = substr($data[0],0, $newsL);

$p = explode(' ', $data[0]);

$cN = count($p);

$p[$cN-1] = '...';

$post[] = implode(' ', $p);

}else{

$post[] = $data[0];

}

$tid[] = $data[1];

$pDate[]= $data[2];

$pid[] = $data[3];

}

$iMax = count($tid);

for($i=0; $i<$iMax; $i++){

$query_id = mysql_query('SELECT forum_id, title, last_poster_name, last_poster_id FROM '.$fPrefics.'topics WHERE tid='.$tid[$i]);

$data=mysql_fetch_row($query_id);

echo '<b><a href="'.$fURL.'index.php?showtopic='.$tid[$i].'&view=findpost&p='.$pid[$i].'">'.$data[1].'</a></b><br>';

echo $post[$i].'<br><br>';

}

}[/PHP]

Пытакля сам наковырять и вот что вышло:

[PHP]function lastMes(){

global $db, $newsid, $fPrefics, $fURL, $lang, $newsL;

$db->execute("SET character SET cp1251");

$result = $db->execute('SELECT post, topic_id, post_date, pid FROM '.$fPrefics.'posts ORDER BY `post_date` DESC LIMIT 0 , 3');

if ($result === false) die("failed");

while (!$result->EOF) {

$data = $result->FieldCount();

$cN = strlen($data[0]);

if ($cN>$newsL){

$data[0] = substr($data[0],0, $newsL);

$p = explode(' ', $data[0]);

$cN = count($p);

$p[$cN-1] = '...';

$post[] = implode(' ', $p);

}else{

$post[] = $data[0];

}

$tid[] = $data[1];

$pDate[]= $data[2];

$pid[] = $data[3];

}

for ($i=0, $max= count($tid); $i < $max; $i++){

$result = $db->execute('SELECT forum_id, title, last_poster_name, last_poster_id FROM '.$fPrefics.'topics WHERE tid='.$tid[$i]);

if ($result === false) die("failed");

$data= !$result->EOF ;

echo '<b><a href="'.$fURL.'index.php?showtopic='.$tid[$i].'&view=findpost&p='.$pid[$i].'">'.$data[1].'</a></b><br>';

$result->MoveNext();

echo $post[$i].'<br><br>';

}

}[/PHP]

При запуске выдает:

[PHP]Fatal error: Maximum execution time of 30 seconds exceeded in z:\home\buxarnet.co\script\includes\functions.php on line 237[/PHP]

Это строка $post[] = $data[0];

Что делать?

Ответ 10 Прислать ответ


Кто знает ответ на этот вопрос, присылайте свои письма сюда:
Прислать ответ

 

Вопрос 11 Задать свой вопрос

Здравствуйте!

У меня такой вопрос: как мне создать бегущую строку которая бы сама загружала текст из текстового файла?

 Большое спасибо, заранее благодарен.

Алексей

Ответ 11 Прислать ответ


Вам необходимо использовать JavaScript, т.к. он работает на стороне

клиента. Средствами PHP бегущую строку не сделать, т.к. PHP работает

на стороне сервера и формирует код страницы непосредственно там.

 

--

 С уважением,

 Манза Игорь

Самый простой способ: создаём текстовый файл, на пример, file.txt. Пишем

туда нужный текст, а на страницу где нужна бегущая строка вставляем:

<marquee>

<?php

include("file.txt");

?>

</marquee>

С уважением Вадим Бакланов.

Кто знает ответ на этот вопрос, присылайте свои письма сюда: Прислать ответ

 

Вопрос 12 Задать свой вопрос

Priwet Admin snowa ja u menja eschö wot takoj wopros est. A est li seit ili kto nebut kto pomogaet programirowat. naprimer chto nebut programiruju koe chego nepolutchjaetsja. esli code poslat i napisat chto nado mogut peredelat? ili hotjabi abjasnit chto tam neprawelno.

 

Ja bi hatel zadat wot takoj wopros. gde mne moschna nautschitsja programirowat. S chego mne nachenat wopche nado?

Schelatelno po russki,

 

 

Poka

Ответ 12 Прислать ответ


Кто знает ответ на этот вопрос, присылайте свои письма сюда:
Прислать ответ

 

Вопрос 13 Задать свой вопрос

Здравствуйте, с PHP недавно, вопрос такой:

Требуется сделать страницу (табличную), по функциональности, как фреймовая. Т.е. в определенную ячейку, загружается определенный файл *.htm или *.php. Так вот, так у меня работает. Как сделать, чтоб в зависимомти от выбранной ссылки на странице, в ячейку загружался определенный файл (как фрейм), не перезагружая остальные части страницы. Я так думаю, нужно получить что-то вроде CMS. Если без перезагрузки всей страници не возможно, то как получить параметр по ссылке? чтоб определить какой файл загружать в ячейку в этот раз?

Помогите пожалуйста. Александр.

Ответ 13 Прислать ответ

Надо использовать AJAX, но он не будет работать если нет JavaScript. Использую библиотеку от ДК JsHttpRequest

С уважением,

Nikitian1

Здравствуйте, phperru.

 

Без перезагрузки страницы (без использования фреймов) не получится.

т.к. нет поименованных областей (как во фреймовой структуре).

А вообще сделать указанное просто. Пишите таблицу на HTML , а в нужной

ячейке выводите переменную, которую определяете при клике по ссылке.

ПРИМЕР: Нужно, что бы при клике по ссылке "документ №1" его содержание

выводилось в ячейку таблицы. Для этого в нужной ячейке делаем загрузку

 

<?

include "document1.txt"; // загружать можно любой файл, с любым

                         //расширением и даже без него....

?>

 

А что бы привязать к событию (нажатие ссылки) загрузку того или иного

файла, в принципе... способов много. Но в любом случае придется писать

процедуру анализа переданной переменной. Ну например по ссылкам типа:

 

http://www.domen.ru/index.html?a=doc1

http://www.domen.ru/index.html?a=doc2

http://www.domen.ru/index.html?a=doc3

 

Мы передаем для анализа указания на то, что нужно грузить, и в

дальнейшем укажем переменной a=doc1 или doc2 или doc3 те или иные

файлы "document1.txt" или "documen2.inc" или documentic.html" при

анализе присланного ключа в ссылке. Проанализируем с использованием

операторов сравнения

 

<?

IF (a==doc1){include "document1.txt";} // если первый - грузим 1файл

elseif (a==doc2) {include "document2.inc";} // если ВТОРОЙ - то второй

else {include "documentic.html";}           // если иначе - то третий

?>

 

Можно конечно и оценивать наличие самой переменной, а не только её

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

т.е. заменить последнюю стоку с "else" так

 

else {}

 

или

 

else { echo "Ничего не выбрано";}

 

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

что ничего не выбрано для загрузки.

 

Если вместо гиперссылок использовать пункты из формы, то передавать имена

переменных и их значения еще проще... но это уже отдельная тема!

--

С уважением,

 Alex

Чтобы не перегружалась вся страница, можно попробовать использовать фреймовую

структуру HTML (<FRAME> или <IFRAME>) в этом случае будет перегружаться

непосредственно фрейм, не затрагивая содержимое основной страницы.

Немного не понятно, что Вы имеете в виду: 'то как получить

> параметр по ссылке? чтоб определить какой файл загружать в ячейку в этот раз?'

Если необходимо передавать переменную, то проще всего сделать примерно

так:

Во фрейме пишем:

.....

<a href="bigpage.php?fr=first">Нажмите здесь и передастся переменная

"fr" со значением "first"</a>

<a href="bigpage.php?fr=second">Нажмите здесь и передастся переменная

"fr" со значением "second"</a>

.....

 

В в обработчике пишем, например так:

<?php

switch ($_GET['fr'])

{

   case 'first':

      $fr_name='first_frame.php';

      break;

   case 'second':

      $fr_name='second_frame.php';

      break;

   default:

      $fr_name='def_frame.php';

}

?>

.....

<IFRAME src="<?php

echo $fr_name;

?>" width="400" height="500" scrolling="auto" frameborder="1">

 

Код очень сырой, но идея, думаю, понятна.

Будут вопросы - пишите :)

 

--

 С уважением,

 Манза Игорь

 

Вопрос 14 Задать свой вопрос

Есть сайты знакомств,объявлениний и им подобные.При подаче объявления (комментария) оно добавляется на страницу сайта автоматически при нажатии кнопки отправить (добавить),у меня такой вопрос: как сделать так,чтобы посетитель сайта смог написать текст (ссылку и т.п.) на сайте и она автоматически добавилась на страницу сайта? Зарание благодарен!

Модем

Ответ 14 Прислать ответ


Кто знает ответ на этот вопрос, присылайте свои письма сюда:
Прислать ответ

 

Вопрос 15 Задать свой вопрос

Какими программами можно переконвертировать HTML сайт в PHP?

 

--

С уважением,

Alexandr

 

Ответ 15 Прислать ответ


Кто знает ответ на этот вопрос, присылайте свои письма сюда:
Прислать ответ

Вопрос 16 Задать свой вопрос

Не могли бы вы выложить пример кода для .htaccess который заменяет слово или несколько конкретных слов в url

И возможно ли через htaccess таким же способом заменять строки в документах, по конкретным словам? и пример кода тоже хотелось бы увидеть.


--

Best regards,
SERGAY MARKIN



Ответ 16 Прислать ответ


Кто знает ответ на этот вопрос, присылайте свои письма сюда: Прислать ответ

 

Вопрос 17 Задать свой вопрос

Что нужно написать в .htaccess (с использованием МodRewrite)

чтобы вместо адреса http://site.org.ua/?page=stati/stati было просто http://site.org.ua/stati/stati.html

 

С наилучшими пожеланиями, Боровок Сергей.

 

Ответ 17 Прислать ответ


Кто знает ответ на этот вопрос, присылайте свои письма сюда:
Прислать ответ

 

 

"ОЧЕПЯТКИ"

Здравствуйте!!!

В выпуске PHP для начинающих Функции постраничного вывода в PHP от 06/06/07 , похоже допущены какие то ОПЕЧАТКИ :-(((

1. Перенеся ОДИН В ОДИН пример на страничку - сразу только на этапе загрузки получаю ошибки.......

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING

для строк.......

$beginPage="<a href="".getenv('PHP_SELF')."?start=0".$andere."" ".$stylePage.">перв</a>"; //--------Первая страница
$endPage="<a href="".getenv('PHP_SELF')."?start=".(($count-1)*10).$andere."" ".$stylePage.">посл</a>"; //-----Последняя страница

else $href=$href." <a href="".getenv('PHP_SELF')."?start=".(($i - 1)*10).$andere."" ".$class.">".$i."</a> "; //------Вывод следующих страниц

Вначале я предположил, что вместо ДВОЙНЫХ КАВЫЧЕК (которых ну оч. мног в литерале) для STRING надо поставить, к примеру ОДИНАРНЫЕ, но .... это не решило дела !!!!!!!!!!!

ОШИБКА ОСТАЛАСЬ !!!!!!!!!!!!!!!!!

2. Непонятно КУДА надо ставить этот скрипт ??? Хорошо бы и ДЕМО-пример приложить

С П А С И Б О !!!!!!!!

Nick Sviridov

"ИСПРАВЛЕНИЯ ОЧЕПЯТОК"

надо не все двойные кавычки менять:

$beginPage="<a href='".getenv('PHP_SELF')."?start=0".$andere."'".$stylePage.">перв</a>"; //--------Первая страница

$endPage="<a href='".getenv('PHP_SELF')."?start=".(($count-1)*10).$andere."'".$stylePage.">посл</a>"; //-----Последняя страница

else $href=$href." <a href='".getenv('PHP_SELF')."?start=".(($i - 1)*10).$andere."'".$class.">".$i."</a> "; //------Вывод следующих страниц

С уважением,

Nikitian1

 

=======

PHP Задать свой вопрос


В избранное