RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 425
от 10.08.2006, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 338, Экспертов: 41
В номере:Вопросов: 4, Ответов: 12


Вопрос № 51182: Здраствуйте уважаемые эксперты Я недавно начел учить php и както появилось много вопросов, я с книжки переписал скрипт (в приложении) всё работает хорошо за исключением добавления новых записей в БД, при нажатии на кнопку просто ничего непроисход...
Вопрос № 51204: Здравствуйте ув. эксперты! у меня 2 вопроса: 1. как засечь время выаполнения скрипта до 6 знаков после запятой? 2. как скриптом посчитать кол-во запросов к БД? ..
Вопрос № 51225: Еще раз здравствуйте, уважаемые эксперты. Не поможете ли вы мне вот с такой проблемкой: нужно определить размер переменной в виде численного значения(это нужно мне для проверки документа из которого пришли данные формы по схеме скрипт которой в прило...
Вопрос № 51243: все тот же самый код, но теперь проблема в том, чтобы при выводе сообщений, если там присутствуют ссылки, все ссылки становились ссылками, а не текстом <?php $cfg_nm_topics=2; $db=mysql_pconnect ('localhost','root',''); if (!$db...

Вопрос № 51.182
Здраствуйте уважаемые эксперты
Я недавно начел учить php и както появилось много вопросов, я с книжки переписал скрипт (в приложении) всё работает хорошо за исключением добавления новых записей в БД, при нажатии на кнопку просто ничего непроисходит, обясните пожалуйста в чём проблема, и еще 2 вопроса, в функций print можно неприменять скобки? в начале книги написано что надо со скобками print() но здесь их нету, и еще непонятно вот это:WHERE nr = ' ".$_GET['id']."';"); здесь поставленну две точки, в начале и конце переменной, обясните пожалуйста когда их надо ставить, а когда нет?
Заранее Спасибо.

Приложение:

Отправлен: 04.08.2006, 22:40
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Марк Крейн
Здравствуйте, Станислав!
1. Две точки обозначают слияние двух строк (конкатенация). В вашем случае после кавычки следует строка $_GET['id']. Поэтому две точки.

2. Ничего не работает потому что в форме не указан скрипт-обработчик. У Вас так:
<form method="post">

А должно быть так:
<form method="post" action="script.php"> где script.php - это скрипт, который обрабатывает данные из формы.

Совет: лучше выводить html и php отдельно. Во-первых код будет лучше читаться, во-вторых меньше будет тратиться ресурсов на вызовы print и echo.

Удачи!
Ответ отправил: Марк Крейн (статус: Студент)
Ответ отправлен: 04.08.2006, 22:51
Оценка за ответ: 4

Отвечает: Zysoftik
Здравствуйте, Станислав!

Я вижу проблемв запросе:
написано:
$query = "INSERT INTO ksiazkatelefoniczna (imie, nazwisko, numer) VALUES (' ".$_POST['imie']."', '". $_POST['nazwisko']."', '".$_POST['numer']."';";
А должно быть $query = "INSERT INTO ksiazkatelefoniczna (imie, nazwisko, numer) VALUES (' ".$_POST['imie']."', '". $_POST['nazwisko']."', '".$_POST['numer']."')";

Возможно Вы ошиблись при наборе.

Отжельно PHP и HTML можно писать так:

<?php

//Тут код на PHP
?>
<!-- Тут HTML -->
<html>
<head>
</head>
<body>

<?php

//тут опять PHP
?>
<!-- Тут снова HTML -->
</body>
</html>

Т.е. PHP код можно выполнять как вставки в HTML.
Ответ отправил: Zysoftik (статус: 6-ой класс)
Ответ отправлен: 04.08.2006, 23:25
Оценка за ответ: 5

Отвечает: Mamont
Здравствуйте, Станислав!

Не добавляет записи по двум причинам:
1. нет закрывающей скобки в INSERT INTO VALUES ();
2. в строке 39 при выводе формы убери символ "<" перед NAME, а то у тебя получается что NAME это тег а не имя поля.

Удачи !!!
---------
Иногда движение вперед-результат пинка под зад
Ответ отправил: Mamont (статус: 2-ой класс)
Ответ отправлен: 05.08.2006, 09:59

Отвечает: Козлов Алексей Сергеевич
Здравствуйте, Станислав!
В приложении я привел немного переделаный скрипт. А сейчас поясню некоторые вопросы.
1. Есть две способа объединения PHP и HTML. Первый - это вставка HTML в скрипт (т.е. то что было у тебя), второй вставка PHP в HTML (nj что приведено у меня).

2. Интерпретатор PHP обрабатывает только то, что заключено в теги <?php ?> и <?= ?>, остальное он выводит так как есть. Поэтому в следующем случае
<TD> <?=$nazwisko?> </TD>
мы получим <TD> значение переменной $nazwisko </TD>.

3. Имя скрипта обработчика лучше указывать явно, но чтобы не привязываться к имени файла используем следующее выражение:
$script = $_SERVER['SCRIPT_NAME'];
т.е. мы в переменную скрипт заносим название данного файла.

4.

Приложение:

---------
Версий еще много будет, пока есть фантазия...

Ответ отправил: Козлов Алексей Сергеевич (статус: 3-ий класс)
Ответ отправлен: 05.08.2006, 11:07

Отвечает: PVS
Здравствуйте, Станислав!
точка - это конкатенация строк
что касается того, что записи не добавляются в базу - у Вас там проверка
if ($_POST['imie'] && $_POST['nazwisko'] && $_POST['numer'])
попробуйте написать к ней
else {echo "Не все параметры заданы ";}
и если оно перейдет на это else, то поищите почему у Вас не передается какой-то параметр
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 07.08.2006, 10:34
Оценка за ответ: 5


Вопрос № 51.204
Здравствуйте ув. эксперты!
у меня 2 вопроса:

1. как засечь время выаполнения скрипта до 6 знаков после запятой?
2. как скриптом посчитать кол-во запросов к БД?

Приложение:

Отправлен: 05.08.2006, 02:53
Вопрос задал: Pessom (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Blestexx
Здравствуйте, Pessom!
Как к базе я не нашел, но вот Manlix писал статью по поводу генерации скрипта.

Приложение:

Ответ отправил: Blestexx (статус: 1-ый класс)
Ответ отправлен: 05.08.2006, 06:13
Оценка за ответ: 5

Отвечает: Rok-set
Здравствуйте, Pessom!
Ответ на Ваш первый вопрос смотрите в приложении. Правда там кусок не моего кода, но переделать его не составит особых трудностей ни под необходимую точглсть знаков, ни под подсчёт скорости выполнения определённой операции - включения счётчика в начало страницы, выключение и вывод результата - в конце страницы.
По второму вопросу ничего универсального и автоматического подсказать к сожалению не могу, только лишь предложить создать специальную переменную, и увеличивать её при каждом запросе к базе данных, но такой "ручной" подход зато даст возможность самостоятельно контролировать количество обращений к базе (увеличивать там, где считаете нужным)

Приложение:

---------
нет преград для разума!

Ответ отправил: Rok-set (статус: 6-ой класс)
Ответ отправлен: 05.08.2006, 06:20

Отвечает: Physicist
Здравствуйте, Pessom!

Ответ на первый вопрос Вы уже получили, а по поводу второго могу сказать следующее. Обычно те сайты, которые выдают такую информацию, используют отдельный класс для доступа к базе данных. В это классе хранится переменная, которая увеличивается на 1 при каждом SQL-запросе. Такой подход позволяет достаточно легко переходить с одной БД на другую (например, с MySQL на PostgreSQL). А считать запросы вручную - с одной стороны просто, а с другой стороны - при частом внесении изменений в скрипт очень быстро надоест везде дописывать $sql_count++;
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 05.08.2006, 11:10

Отвечает: Stamm
Здравствуйте, Pessom!
Можно намного проще с подчётом запросов к БД(используются регулярные выражения)
У меня есть на сайте действует скрипт, какой вам надо(я его сам написал). См. Приложение

Приложение:

---------
Этот мир обречён на нас
©Сергей Маврин

Ответ отправил: Stamm (статус: Студент)
Ответ отправлен: 05.08.2006, 23:02
Оценка за ответ: 5


Вопрос № 51.225
Еще раз здравствуйте, уважаемые эксперты. Не поможете ли вы мне вот с такой проблемкой: нужно определить размер переменной в виде численного значения(это нужно мне для проверки документа из которого пришли данные формы по схеме скрипт которой в приложении), либо же подсказать лучшее решения для проверки хоста. Заранее спасибо.

Приложение:

Отправлен: 05.08.2006, 11:05
Вопрос задал: Bolzamo (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Physicist
Здравствуйте, Bolzamo!

Длину строки возвращает
int strlen ( string string )
А Ваш код я бы переделал так (убираем везде http:// перед сравнением):

Приложение:

Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 05.08.2006, 11:22
Оценка за ответ: 4
Комментарий оценки:
Конечно этот вариант по идее должен работать но код уж слишком загроможден. Мне тут уже подсказали решение куда рациональнее

Отвечает: Константин
Здравствуйте, Bolzamo!
Для проверки хоста можно сделать так:
if (stristr($_SERVER['HTTP_REFERER'], 'mysite.com'))
{
//действия которые тебе нужны. Хост верный
}
---------
Лучше сделать и жалеть, чем жалеть о том что не сделал
Ответ отправил: Константин (статус: 6-ой класс)
Ответ отправлен: 05.08.2006, 11:37
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо! Очень рациональное решение проблемы, все работает.


Вопрос № 51.243
все тот же самый код, но теперь проблема в том, чтобы при выводе сообщений, если там присутствуют ссылки, все ссылки становились ссылками, а не текстом
<?php
$cfg_nm_topics=2;
$db=mysql_pconnect ('localhost','root','');
if (!$db)
{
echo 'Не могу подключиться к бд!!!';
}
mysql_select_db ('photofor_tsforum');
if (!mysql_select_db ('photofor_tsforum'))
{
echo 'Не могу выбрать бд!!!';
}

$ath=mysql_query("SELECT * FROM phpbb_posts_text order by post_id desc LIMIT $cfg_nm_topics;");
if (!$ath)
{
echo "Bad";
exit ();
}
else
{
echo "<table bgcolor="#FFFFFF" border="0" width="100%">";
while ($phpbb_posts_text=mysql_fetch_array($ath))
{
$text=$phpbb_posts_text['post_text'];
echo "<tr><td width="25" valign="top"><font size="2" face="Times New Roman, Times, serif"><strong>".$phpbb_posts_text['post_subject'].":"."</strong></font> </td><td valign="top" align="left">";
$words=explode(" ", $text);
for ($i=0; $i<10; $i++)
echo "<font size="2" face="Times New Roman, Times, serif">".$words[$i]." "."</font>";
echo "  <br><a href="http://localhost/forum/viewtopic.php?p=".$phpbb_posts_text['post_id']."#".$phpbb_posts_text['post_id']."">"."<font size="2" face="Times New Roman, Times, serif">Читать дальше</font></a>     <a href="http://localhost/forum/posting.php?mode=quote&p=".$phpbb_posts_text['post_id']."">"."<font size="2" face="Times New Roman, Times, serif">Оставить комментарий</font></a></td></tr>";
}
echo "</table>";
}
?>
Отправлен: 05.08.2006, 16:13
Вопрос задала: MadeInUSSR (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 11)

Отвечает: Physicist
Здравствуйте, MadeInUSSR!

Добавьте строки из Приложения вместо
for ($i=0; $i<10; $i++)
echo "<font size="2" face="Times New Roman, Times, serif">".$words[$i]." "."</font>";

Кстати, %lt;font size="2" face="Times New Roman, Times, serif"> я бы вынес в стиль, т.к. встречается у Вас регулярно.

Приложение:

Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 05.08.2006, 16:38


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное