Автор Тема: Добавление в базу.  (Прочитано 3960 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Добавление в базу.
« : 20 Февраля 2004, 21:27:33 »
Делаю программку на PHP+MySQL. Сделал форму для добавления данных, написал нужный PHP-код, создал базу и таблицы и т.д.

Тестирую программку у себя дома на системе Денвер(Apache у себя дома, где работает всё как в Вебе).

И вот данные то добавляются, то не добавляются. То выскакивает мною же предусмотренное сообщение "Данные не прошли, попробуйте ещё раз", то всё проходит нормально. Данные при этом совершенно одинаковые.

При этом, если один раз каким-то образом данные прошли, то и в дальнейшем данные будут проходить. Если же один раз что-то не прошло - то и в дальнейшем данные не будут проходить в течение долгого времени.

Всё это я делаю в Internet Explorer.

В чём здесь дело? Как исправить?
Чем меньше букв, тем ёмче слово.

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
Добавление в базу.
« Ответ #1 : 20 Февраля 2004, 21:38:39 »
выкинуть денвер, поставить все самому, разобраться в конфигах, научиться читать логи и выводить сообщения об ошибках и по ним отлаживать код. еще не помещает научиться нормально формулировать вопросы, а не тратить свое и чужое время на постинги типа: "чтото когда я с утра одеваю штаны они то красные, то желтые. не подскажите в чем может быть дело?"
ну, будем исповедоваться?

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Добавление в базу.
« Ответ #2 : 20 Февраля 2004, 21:47:04 »
Вопрос сформулирован нормально. Одинаковые данные то передаются то нет. Причина - непонятна. Уверен, что проблема - типичная, и не раз встречавшаяся.

А вот поставить всё самому пожалуй действительно стоит.
Чем меньше букв, тем ёмче слово.

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Добавление в базу.
« Ответ #3 : 20 Февраля 2004, 23:47:17 »
Цитировать
Skyer:
Вопрос сформулирован нормально.

http://www.ln.ua/~openxs/articles/smart-questions-ru.html почитай на досуге, как правильно задавать вопросы, хорошо?

Включи сначала в конфигах устройство мозг, потом включи в конфигах процесс отладки, выведи все ошибки в браузер. Покажи тот код, где ты говоришь, что данные не прошли, сделай хоть что-нибудь, чтобы тебе помогли.

Сообщение об ошибке должно описывать ошибку, я тоже когда для себя отладку делаю на быструю руку, то пишу вместо: Database connection error единственное слово: F*ck либо Shit, но потом все равно переписываю код как положено, чтобы я знал, какая именно ошибка!
работа в Украине

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Добавление в базу.
« Ответ #4 : 20 Февраля 2004, 23:59:11 »
Цитировать
Уверен, что проблема - типичная

ты ошибаешься.
Цитировать
Вопрос сформулирован нормально.

ты ошибаешься.
Проблема описана с точки зрения стороннего наблюдателя, юзера.
"нажал на кнопку - работает"
"нажал на кнопку - не работает"
В таком виде вопросы задавать смысла не имеет. НИКТО не знает, что там внутри твоего скрипта. И знать не может.
В таком виде вопросы на форуме задавать бессмысленно.

Читай http://faq.phpclub.net/debug и попытайся хотя бы примерно определить место где у тебя возникает проблема.

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Добавление в базу.
« Ответ #5 : 21 Февраля 2004, 19:37:33 »
Объясните тогда, как сделать так, чтобы все ошибки выводились!

В статье http://faq.phpclub.net/debug написано, что для этого нужно в начало скрипта вставить эти строчки.

ini_set(\'display_errors\',1);
error_reporting(E_ALL ~E_NOTICE);

Так скрипт на сами эти строчки ошибку пишет:

Parse error: parse error, unexpected \'~\' in z:\\home\\localhost\\www\\project\\add_form.php on line 4

Тильду убирал, всякие преобразования делал - всё равно ошибки.

Оставлял просто

error_reporting(E_ALL);

Никаких ошибок не выводится, скрипт работает нормально, но когда данные не передаются, ошибок никаких не пишет.

Привожу код программы с комментариями:


// Для якобы вывода всех ошибок
ini_set(\'display_errors\',1);
error_reporting(E_ALL);

// Проверка заполненности полей.
if (!$date || !$code || !$reason || !$solution)
{
   echo "Vy ne vveli odno iz obyazatel\'nyh polei, poprobuite esche raz";
   exit;
}

// перекодировка символов

$date = addslashes($date);
$code = addslashes($code);
$reason = addslashes($reason);
$solution = addslashes($solution);

// Проверка даты.
$today = date("Y-m-d");

if ($date>$today)
{
   echo "Дата не соответствует действительности";
   exit;
}

// Для отладки - пишет на экран данные из формы. Данные всегда корректны.
echo $date;
echo "

".$code;
echo "

".$reason;
echo "

".$solution."

";

// Соединение с БД
$db = mysql_pconnect();

// Проверка наличия соединения
if (!$db)
{
   echo "Net soedinenija s bazoj dannyh. Povtorite popytku pozzhe";
   exit;
}

// Обращение к БД
mysql_select_db("results");

// Сам запрос. Должен быть корректен, т.к. одни и те же данные то передаются, то не передаются
$query = "insert into results values(\'NULL\', \'".$date."\', \'".$code."\', \'".$reason."\', \'".$solution."\')";

// Выполнение запроса
$res = mysql_query($query);

// Проверка, был ли выполнен запрос
 if ($res)
   echo "Spasibo, dannye byli peredany";
else
   echo "Dannye ne proshli, poprobuite esche raz";

?>

« Последнее редактирование: 21 Февраля 2004, 20:04:01 от Skyer »
Чем меньше букв, тем ёмче слово.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Добавление в базу.
« Ответ #6 : 22 Февраля 2004, 13:28:54 »
1. mysql_pconnect замени на mysql_connect
2. на время отладки пиши:

mysql_query
($query) or die("Query: 
$query
"
.mysql_error());
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Добавление в базу.
« Ответ #7 : 22 Февраля 2004, 17:01:54 »
Макс
Спасибо!!! Проблема решена. Ошибка называлась "No database selected" и находилась здесь:

mysql_select_db("results"); // results - имя таблицы, а не базы данных.

Вот только мне интересно, почему иногда данные всё же проходили?
Чем меньше букв, тем ёмче слово.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Добавление в базу.
« Ответ #8 : 22 Февраля 2004, 21:50:43 »
интересно, в факе написано про mysql_error
однако использовал ее ты только поде того, как макс тебе на это указал. Так тяжело прочесть два экрана текста?
Или там непонятно написано?

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Добавление в базу.
« Ответ #9 : 25 Февраля 2004, 16:52:35 »
Я понятия не имел о том, что у меня не все ошибки пишутся. В факе об этом не написано.
Чем меньше букв, тем ёмче слово.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Добавление в базу.
« Ответ #10 : 25 Февраля 2004, 16:57:42 »
в факе не написано, что у тебя не все ошибки пишутся?!
ну и ну...
а текст своей программы ты в факе прочесть не рассчитывал?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28