Вопрос № 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