|
|
|
|
|
для: cheops
(02.09.2005 в 12:56)
| | аааа.... ну да, может быть поэтому... =) Попробую исправить... | |
|
|
|
|
|
|
|
для: Zew
(02.09.2005 в 00:07)
| | Пока сложно сказать... а почему у вас под name, copyright и text используются отдельные INSERT-запросы, ведь каждый отдельный запрос вставляет новую запись, присваивая остальным полям значения по умолчанию - т.е. нули, может дело в этом? | |
|
|
|
|
автор: Zew (02.09.2005 в 00:07) |
|
|
для: cheops
(01.09.2005 в 20:09)
| | Ааа, понятненько. =) Еще раз пасибочки.
Хм, а вот вопрос на засыпку: почему русские буквы в базу не переправляются через форму? )) вот тут: http://art.hellsinguniverse.ru/fanfiction/admin.php я пыталась расширить форму отправки, изменила код до:
<form name="add" method="post" action="admin.php" style="width: 90% ">
<p align="left"><span class="text4">Название фанфика:</span>
<input name="name" type="text" value="<?
if (empty($name)){echo "до 100 любых символов";}
else {$query_a = "INSERT INTO $author (name) values($name)";
mysql_query($query_a);} ?>" size="50" maxlength="100"></p>
<p align="left"><span class="text4">От автора:<br></span>
<textarea name="copyright" cols="50" wrap="VIRTUAL">
<? if (empty($copyright)){echo "Ваш копирайт, возможно небольшое вступление, опровержения и т.п.";}
else {$query_c = "INSERT INTO $author (copyright) values($copyright)";
mysql_query($query_c);} ?></textarea></p>
<p align="left" class="text4">Фанфик:<br>
<textarea name="text" cols="100" rows="20" wrap="VIRTUAL"><? if (empty($text)){echo "Заполнять в формате HTML.
Основные теги:
<br> - переход на новую строку
<em>текст</em> - курсив;
<strong>text</strong> - жирный
<center>text</center> - по центру
<p>абзац текста<p><p></p> - абзац (аналогично 2 <br>)";}
else {$query_t = "INSERT INTO $author (text) values($text)";
mysql_query($query_t);} ?></textarea></p>
<p align="left"><input name="Submit" type="submit" class="butt" value="Submit"></p></form><br></div>
<ul><?
echo "<strong>Уже в базе:</strong><br>";
$query = mysql_query("select name, id from Aneris order by id");
for($i = 0; $i < mysql_num_rows($query); $i++)
{$sdf = mysql_fetch_array($query);
echo '<li>' . $sdf[id] . ' | ' . $sdf[name] . '</li>';}
?></ul>
|
И если записать туда цифры, они отлично переправляются в базу. Но вот с кирилицей что-то не работает, и получаются пустые ячейки (то, что внизу под номерами 20, 21, 23 и 24 должно было быть написано по-русски, а полчилось вообще ничего...) | |
|
|
|
|
|
|
|
для: Zew
(01.09.2005 в 19:32)
| | Теперь будет работать и без неё, достаточно оставить
<?php
mysql_query($query)
?>
|
Эта часть нужна была для отладки, функция mysql_query() возвращает дескриптор запроса или false, если база данных возвращает ошибку, поэтому применяя конструкцию
<?php
if(!mysql_query($query))
{
// ...
}
?>
|
мы всегда можем определить ошибка в PHP или в MySQL. Строка
<?php
echo $query."<br>";
?>
|
Выводит сам запрос, иногда одного взляда на SQL-запрос достаточно чтобы определить в чём проблема. Функция exit() останавливает работу скрипта и выводит строку, пераданную ей в качестве аргумента в окно браузера
<?php
exit("Ошибка - ".mysql_error());
?>
|
Здесь мы к сообщению прикрепляем сообщение, возвращаемое функцией mysql_error(), которая возвращает текст об ошибке от базы данных. Использование этой функции полезно, так как всегда можно узнать, что не понравилось СУБД и в каком месте запроса. Иногда без этой функции можно очень долго вылизывать запрос, а в результате оказывается, что забыл установить соединение с сервером базы данных. Поэтому хорошей практикой при отладке является вывод сообщений mysql_error() - это экономит массу времени. | |
|
|
|
|
автор: Zew (01.09.2005 в 19:32) |
|
|
для: cheops
(01.09.2005 в 19:12)
| | Работает! )) Спасибо огромное! =)
Эм, а вот чтобы окончательно расставить все точки над i, не могли бы вы объяснить, что означает часть
if(!mysql_query($query))
{
echo $query."<br>";
exit("Ошибка - ".mysql_error());
}
|
и почему не работало без нее?.. | |
|
|
|
|
|
|
|
для: Zew
(01.09.2005 в 19:06)
| | >Эмм... Т.е. как я понимаю, ошибка в запросе?..
да, попробуйте исправить код следующим образом
<?
if (empty($author)){echo "<center>Введите имя автора</center><br><br>";}
else
{
$query = "INSERT INTO authors (author) values($author)";
if(!mysql_query($query))
{
echo $query."<br>";
exit("Ошибка - ".mysql_error());
}
}
?>
|
Что пишет на этот раз (если пишет)? | |
|
|
|
|
автор: Zew (01.09.2005 в 19:06) |
|
|
для: cheops
(01.09.2005 в 18:55)
| | Исправила. Выводит следующее:
INSERT INTO authors ('author') values(333)
Ошибка - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''author') values(333)' at line 1
Эмм... Т.е. как я понимаю, ошибка в запросе?.. | |
|
|
|
|
|
|
|
для: Zew
(01.09.2005 в 17:57)
| | Так как SQL - это отдельный мини-язык, то PHP не сообщает о возникающих проблемах - их следует обрабатывать самостоятельно. Пожалуйста исправьте код
<?
if (empty($author)){echo "<center>Введите имя автора</center><br><br>";}
else {mysql_query("INSERT INTO authors ('author') values($author)");}
?>
|
следующим образом
<?
if (empty($author)){echo "<center>Введите имя автора</center><br><br>";}
else
{
$query = "INSERT INTO authors ('author') values($author)";
if(!mysql_query($query))
{
echo $query."<br>";
exit("Ошибка - ".mysql_error());
}
}
?>
|
Что-нибудь дополнительно выводится? | |
|
|
|
|
автор: Zew (01.09.2005 в 18:40) |
|
|
для: napTu3aH
(01.09.2005 в 18:29)
| | выделила. эффект тот же... =(( | |
|
|
|
|
|
|
|
для: Zew
(01.09.2005 в 17:57)
| | Попробуйте выделить кавычками переменную $author
<?
if (empty($author)){echo "<center>Введите имя автора</center><br><br>";}
else {mysql_query("INSERT INTO authors (author) values('$author')");}
?>
|
| |
|
|
|
|