Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Ввод данных через форму

Сообщения:  [1-10]   [11-16] 

 
 автор: Zew   (02.09.2005 в 17:16)   письмо автору
 
   для: cheops   (02.09.2005 в 12:56)
 

аааа.... ну да, может быть поэтому... =) Попробую исправить...

   
 
 автор: 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 должно было быть написано по-русски, а полчилось вообще ничего...)

   
 
 автор: cheops   (01.09.2005 в 20:09)   письмо автору
 
   для: 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()); 
  } 

и почему не работало без нее?..

   
 
 автор: cheops   (01.09.2005 в 19:12)   письмо автору
 
   для: 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

Эмм... Т.е. как я понимаю, ошибка в запросе?..

   
 
 автор: cheops   (01.09.2005 в 18:55)   письмо автору
 
   для: 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)
 

выделила. эффект тот же... =((

   
 
 автор: 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')");} 
?>

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования