|
|
|
| Написал гостевую книгу с использованием БД с книги "Самоучитель-PHP5", Всё проверил всё верно! Но при нажатии на "Добавить сообщение", появляется пустая странница addrec.php, хотя должна быть выводится форма добавки сообщения.
В коде не могу найти ошибку!
Помогите разобратся в чём проблема? | |
|
|
|
|
|
|
|
для: Kront
(22.05.2005 в 16:31)
| | Чтобы не перебивать код из книги можно скачать гостевую из downloads.
http://www.softtime.ru/info/gbmysql.php
Код отличается, но по аналогии можно разобраться.
У меня нет сейчас исходников той гостевой, поэтому приложите ваши файлы в форум - попробуем разобраться. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(22.05.2005 в 17:02)
| | Ну значит вот коды гостевой книги, без страницы администрирования:
config.php:
<?php
$dblocation="localhost";
$dbname="guestbook";
$dbuser="root";
$dbpasswd="";
$dbcnx=@$mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbncx)
{
echo ("<p>В настоящий момент сервер базы данных не доступен, поэтому
корректное отображение невозможно</p>");
exit();
}
if (!@mysql_select_db($dbname,$dbcnx))
{
echo ("<p>В настоящий момент сервер базы данных не доступен, поэтому
корректное отображение невозможно</p>");
exit();
}
function puterror ($message)
{
echo ("<p>$message</p>");
exit();
}
?>
|
index.php:
<html>
<head>
<title>Гостевая книга</title>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251">
</head>
<body>
<p><a class=link href="addrec.php" title="">
Написать сообщение</a></p>
<table widh="85%" border="0">
<tr>
<td>
<?php
include "config.php";
//стартовая точка
if (empty($start)) $start=0;
if ($start < 0) $start=0;
$pnumber=10;
//Запрашиваем общее число выводимых сообщений
$tot=mysql_query("select count(*) from gues where hide=0;");
$query="select * from guest
where hide=0
order by puttime desc limit ".$start.", ".$pnumber.";";
$thm = mysql_query($query);
if ($tot && $thm)
{
$total=mysql_feth_array($tot);
$count=$total['count(*)'];
if ($start>0) print "<a class=link href=index.php?start=".($start - $pnumber).">Предыдущие</a>";
if ($count>$start + $pnumber) print "<a class=link href=index.php?start=".($start + $pnumber).">Следующие</a>";
while ($themes = mysql_feth_array($thm))
{
$name=trim($themes['name']);
$city=trim($themes['city']);
$email=trim($themes['email']);
$url=trim($themes['url']);
$msg=trim($themes['msg']);
$answer=trim($themes['answer']);
?>
<table border=1 widh="100%" cellpadding="0" cellspacing="0">
<tr>
<td>
<b><? echo $name;?></b>
<?if (!empty ($city)) print "$city";?>
</td>
<td widh="100%" valign="bottom" align="right">
от <b><?print $themes['puttime'];?></b>
</td>
</tr>
<tr valign="top">
<td colspan="2" height="25">
<?
if (!empty($email)) print "$email: <a class=link href=mailto:$email>$email</a> ";
if (!empty ($url)) print "www: <a class=link href='$url'>$url</a>";
?>
</td>
</tr>
<tr valign="top">
<td colspan="2">
<? echo $msg;
?>
<br>
<? if (!empty ($answer)&& $answer !="-")
{
print "<p class=panswer>Администратор: $answer</p>";
}
?>
</td>
</tr>
</table>
<?
}
}
else puterror("Ошибка при выборке сообщений...");
print "<a class=link href=addrec.php>Добавить сообщение</a> ";
if ($start !=0) print "<a class=link href=index.php?start=".($start - $pnumber).">Предыдущие</a>";
if ($count > $start + $pnumber) print "<a class=link href=index.php?start=".($start + $pnumber).">Следующие</a>";
?>
</td>
</tr>
</table>
</body>
</html>
|
addrec.php:
<?php
include "config.php";
$error="";
$action=$HTTP_POST_VARS["action"];
if ($action !="")
{
$lenmsg=strlen($msg);
$templen=0;
$temp=strtok($msg, " ");
if (strlen($msg) > 60)
{
while ($templen < $lenmsg)
{
if (strlen($temp) > 60)
{
$action="";
$error=$error."<li> Текст сообщения содержит слишком много символов без пробелов";
break;
}
else
{
$templen=$templen + $strlen($temp) + 1;
}
$temp=strtok(" ");
}
}
$name=trim($name);
$msg=trim($msg);
if (empty ($msg))
{
$action="";
$error=$error."<li> Вы не ввели сообщение";
}
if (empty ($name))
{
$action="";
$error=$error."<li> Вы не ввели имя";
}
if (!empty($email))
{
if (preg_match("/[0-9a-z]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{
$action="";
$error=$error."<li> Не верно введён e-mail. Ввдите e-mail в виде <i>admin@promoney.com.ru</i>";
}
}
$name=substr($HTTP_POST_VARS["name"],0,32);
$name=htmlspecialchars(stripslashes($name));
$city=substr($HTTP_POST_VARS["city"],0,32);
$city=htmlspecialchars(stripslashes($city));
$email=substr($HTTP_POST_VARS["email"],0,32);
$name=htmlspecialchars(stripslashes($email));
$url=substr($HTTP_POST_VARS["url"],0,32);
$url=htmlspecialchars(stripslashes($url));
$msg=substr($msg,0,1024);
if (empty($error))
{
$msg=nl2br($msg);
$msg=str_replace("[u]","<u>",$msg);
$msg=str_replace("[U]","<u>",$msg);
$msg=str_replace("","<i>",$msg);
$msg=str_replace("","<B>",$msg);
$msg=str_replace("[B]","<B>",$msg);
$msg=str_replace("","<SUB>",$msg);
$msg=str_replace("","<SUP>",$msg);
$msg=str_replace("[SUp]","<SUP>",$msg);
$msg=str_replace("[/u]","</u>",$msg);
$msg=str_replace("[/U]","</u>",$msg);
$msg=str_replace("","</i>",$msg);
$msg=str_replace("[/I]","</i>",$msg);
$msg=str_replace("","</B>",$msg);
$msg=str_replace("[/B]","</B>",$msg);
$msg=str_replace("","</SUB>",$msg);
$msg=str_replace("[/sub]","</SUB>",$msg);
$msg=str_replace("","</SUP>",$msg);
$msg=str_replace("[/sup]","</SUP>",$msg);
$msg=eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a href=\\2>\\2</a>\\3",$msg);
$query="insert into guest values (0,'$name','$city','$email','$url','$msg','-',now(),0);";
if (mysql_query($query))
{
print "<html><head>\n";
print "<meta http-equev='Refresh' content='0; url=index.php'>\n";
print "</head></html>\n";
exit();
}
else
{
echo "<a href='index.php'>Вернуться</a>";
echo ("<p>Ошибка при добавлении сообщения</p>");
echo("<p>$query</p>");
exit();
}
}
}
if (empty($action))
{
?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251">
<title>Новое сообщение</title>
</head>
<body bottommarign="0" marignheight="0" marignwidht="0" rightmarign="0" leftmarign="0" topmarign="0">
<table>
<tr>
<td>
<form action="addrec.php" method="post">
<input type="hidden" name="action" value="post">
<table aligne="center" cellpading="0" cellspacing="0">
<tr>
<td colspan=2><b>Добавление сообщения</b></td>
</tr>
<tr>
<td width="50"><b> Имя </b></td>
<td><input type="text" name="name" maxlength=32 size=25 value='<?echo $name;?>'></td>
<td rowspan="3" width="120">* Обязательные для заполнения поля</td>
</tr>
<tr>
<td><b> Город</b></td>
<td><input type="text" name="city" maxlength=32 size=25 value='<?echo $city;?>'></td>
</tr>
<tr>
<td><b> E-mail</b></td>
<td><input type="text" name="email" maxlength=32 size=25 value='<?echo $email;?>'></td>
</tr>
<tr>
<td><b> URL</b></td>
<td colspan="2"><input type="text" name="url" maxlength=36 size=40 value='<?echo $url;?>'></td>
</tr>
<tr>
<td colspan"3">
<b>Сообщение *</b><br>
<textarea name="msg" cols=42 rows=5><?echo $msg;?></textarea>
</td>
</tr>
<tr>
<td colspan"3">
<input type="submit" value="Добавить">
</td>
</tr>
</table>
<td>
<table border"0" cellspacing="1" cellpading="4">
<tr align="left">
<td>
<u><i><b>Поддерживаемые теги:</u></i></b>
</td>
</tr>
<tr><td><b>Жирный</b></td></tr>
<tr><td><i>Наклонный</i></td></tr>
<tr><td>[u]<u>Подчёркнутый</u>[/u]</td></tr>
<tr><td><sup>Верхний индекс</sup></td></tr>
<tr><td><sub>Нижний индекс</sub></td></tr>
</table>
</td>
</form>
</td>
</tr>
</table>
</body>
</html>
<?
if (!empty($error))
{
print "<P>Во время добавления записи произошли следующие ошибки:</P>";
print "<UL>\n";
print $error;
print "</UL>\n";
}
?>
<?}?>
|
В некоторых местах я кое- что убирал, так как это мне не нужно, но совсем мало убирал. | |
|
|
|
|
|
|
|
для: Kront
(22.05.2005 в 20:31)
| | Хитрая ошибка :) В config.php
Вместо
<?
$dbcnx=@$mysql_connect($dblocation,$dbuser,$dbpasswd);
?>
|
Нужно писать
<?
$dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);
?>
|
Символ @ запрешает вывод ошибок от функции mysql_connect(). Поэтому, хотя ошибка была вы ее не видели. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(22.05.2005 в 23:52)
| | еили я слепой, или вы ошиблись, но я не вижу разнецы между этими кусками кода. | |
|
|
|
|
|
|
|
для: JIEXA
(23.05.2005 в 00:42)
| | Функция mysql_connect начинается со знака $, а не должна, так как это не переменная. | |
|
|
|
|