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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Помогите найти ошибку.
 
 автор: Andreano   (20.03.2010 в 20:04)   письмо автору
 
 

Помогите найти ошибку)
Через форму не добавляются данные в mySQL

Вот форма:
<form action="" method="post" name="form"></form>
<p>Введите имя: </p> <input name="name" type="text" size="20" maxlength="40"><br>
<p>Введите фамилию: </p><input name="lastname" type="text" size="20" maxlength="40"><br>
<p>Должность:</p><input name="dol" type="text" size="20" maxlength="40"><br>
<input name="sumbit" type="submit" value="Отправить в базу">

Вот PHP:
<?php

if (isset($_POST['name']))
{
$name = $_POST['name'];
}

if (isset($_POST['lastname']))
{
$lastname = $_POST['name'];
}

if (isset($_POST['dol']))
{
$dol = $_POST['dol'];
}

$db = mysql_connect("localhost","admin","12345");
mysql_select_db ("firstBD",$db);

$result = mysql_query ("INSERT INTO '1th' ('name','lastname','dol') VALUES (" . $_POST['name'] . ", " . $_POST['lastname'] . ", " . $_POST['dol'] . ")");

if ($result == 'true')
{
echo "inter cool";
}
else
{
echo "not cool";
}
?>

  Ответить  
 
 автор: Commander (чужой комп)   (20.03.2010 в 20:23)
 
   для: Andreano   (20.03.2010 в 20:04)
 

Попробуйте так:

<?php
if (!empty($_POST)){
    
$name $_POST['name'];
    
$lastname $_POST['lastname'];
    
$dol $_POST['dol'];
}
$db mysql_connect("localhost","admin","12345");
mysql_select_db ("firstBD",$db);
$result mysql_query("INSERT INTO `1th`(`name`,`lastname`,`dol`) VALUES('$name','$lastname','$dol')");
?>

  Ответить  
 
 автор: Andreano   (20.03.2010 в 20:30)   письмо автору
 
   для: Commander (чужой комп)   (20.03.2010 в 20:23)
 

не работает)
Там проблема скорей всего в граммотности)) я только изучать начал php поэтому мог что то упустить))

  Ответить  
 
 автор: Yuriev   (20.03.2010 в 20:32)   письмо автору
 
   для: Andreano   (20.03.2010 в 20:30)
 

В запросе должно быть три вида кавычек:
двойные " " ;
одинарные ' ';
и где буква ё ` `

  Ответить  
 
 автор: Andreano   (20.03.2010 в 20:36)   письмо автору
 
   для: Yuriev   (20.03.2010 в 20:32)
 

Стой.. я не понял... у мня кавычки не правильно стоят или что?
просто про `(ё) впервый раз слышу))

  Ответить  
 
 автор: Yuriev   (20.03.2010 в 20:44)   письмо автору
 
   для: Andreano   (20.03.2010 в 20:36)
 

Имя таблицы и имена колонок надо писать без кавычек, если они из одного слова, или в кавычках, где буква ё
INSERT INTO `1th` (`name`, `lastname`, `dol`)
или
INSERT INTO 1th (name, lastname, dol)

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 20:48)   письмо автору
 
   для: Yuriev   (20.03.2010 в 20:44)
 

Это почему же прямо надо без кавычек (кстати, в примере у вас апострофы, а не обратные кавычки, как должно было бы быть)? Где такое сказано? Ответить лучше ссылкой на документацию.

  Ответить  
 
 автор: Yuriev   (20.03.2010 в 20:54)   письмо автору
 
   для: neadekvat   (20.03.2010 в 20:48)
 

Имелось ввиду, что надо ставить правильные кавычки или не ставить никаких в случаях, когда это допустимо

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 20:59)   письмо автору
 
   для: Yuriev   (20.03.2010 в 20:54)
 

Вот и объясните мне, почему их не надо ставить, даже когда это допустимо.

  Ответить  
 
 автор: Yuriev   (20.03.2010 в 21:29)   письмо автору
 
   для: neadekvat   (20.03.2010 в 20:59)
 

Потому, что когда это допустимо, лучше не ставить, чем ставить не те, что надо

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 20:46)   письмо автору
 
   для: Andreano   (20.03.2010 в 20:30)
 

Учитесь и ошибки находить.
Добавьте смерть() в конец запроса и посмотрите, что вам сам mysql скажет на ваше обращение с ним:
<?php
$result 
mysql_query("INSERT INTO `1th` (`name`,`lastname`,`dol`) VALUES('$name', '$lastname', '$dol')") or die( mysql_error() );


А в самом начале скрипта выставьте уровень ошибок:
error_reporting(E_ALL);

  Ответить  
 
 автор: Andreano   (20.03.2010 в 20:50)   письмо автору
 
   для: neadekvat   (20.03.2010 в 20:46)
 

Все равно форма ни добавляет в базу, ни по нажатии кнопки ошибка не выскакивает)

  Ответить  
 
 автор: Ури Геллер   (20.03.2010 в 20:55)   письмо автору
 
   для: Andreano   (20.03.2010 в 20:50)
 


<?php 

if (isset($_POST['name']))
{
$name $_POST['name']; 
}

if (isset(
$_POST['lastname']))
{
$lastname $_POST['name']; 
}

if (isset(
$_POST['dol']))
{
$dol $_POST['dol']; 
}

$db mysql_connect("localhost","admin","12345");
mysql_select_db ("firstBD",$db);

$result mysql_query ("INSERT INTO '1th' ('name','lastname','dol') VALUES (" $_POST['name'] . ", " $_POST['lastname'] . ", " $_POST['dol'] . ")");

if (
$result == 'true')
{
echo 
"inter cool";
}
else
{
echo 
"not cool";
}


синтаксических ошибок нет

  Ответить  
 
 автор: Andreano   (20.03.2010 в 20:59)   письмо автору
 
   для: Ури Геллер   (20.03.2010 в 20:55)
 

Ну если ошибок нет) тогда в чем проблема?

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 21:05)   письмо автору
 
   для: Andreano   (20.03.2010 в 20:59)
 

<?php
error_reporting
(E_ALL);

if (isset(
$_POST['name'])) {
  
$name mysql_real_escape_string($_POST['name']); 
} else {
  
$name '';
}

if (isset(
$_POST['lastname'])) {
  
$lastname mysql_real_escape_string($_POST['name']); 
} else {
  
$lastname '';
}

if (isset(
$_POST['dol'])) {
  
$dol mysql_real_escape_string($_POST['dol']); 
} else {
  
$dol '';
}

$db mysql_connect("localhost""admin""12345");
if(!
$db) {
  echo 
'Подключиться не удалось';
}

mysql_select_db("firstBD");

$result mysql_query ("INSERT INTO `1th` (`name`, `lastname`, `dol`)
                        VALUES ('
$name', '$lastname', '$dol')")
                        or die ( 
mysql_error() );

if (
$result) {
  echo 
"inter cool";
} else {
  echo 
"not cool";
}
?>

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

  Ответить  
 
 автор: Andreano   (20.03.2010 в 21:08)   письмо автору
 
   для: neadekvat   (20.03.2010 в 21:05)
 

Если вводить в форму и отправить, опять же ничего не происходит)
ТАк что может в форме проблема?

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 21:14)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:08)
 

</form> должен стоять в конце формы...

  Ответить  
 
 автор: Andreano   (20.03.2010 в 21:20)   письмо автору
 
   для: neadekvat   (20.03.2010 в 21:14)
 

Точно)) глупая ошибка))
НО форма как бы отправляет но не появляется страница с надписью inter cool)
и в базе данных не появляется(

  Ответить  
 
 автор: Yuriev   (20.03.2010 в 21:22)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:20)
 

А not cool пишет?

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 21:22)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:20)
 

А что на страницу выводится? not cool?

  Ответить  
 
 автор: Andreano   (20.03.2010 в 21:23)   письмо автору
 
   для: neadekvat   (20.03.2010 в 21:22)
 

Нет.. форма и остается... просто заполнение её исчезает и все))

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 21:25)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:23)
 

<?php
error_reporting
(E_ALL);

if (isset(
$_POST['name'])) {
  
$name mysql_real_escape_string($_POST['name']); 
} else {
  
$name '';
}

if (isset(
$_POST['lastname'])) {
  
$lastname mysql_real_escape_string($_POST['name']); 
} else {
  
$lastname '';
}

if (isset(
$_POST['dol'])) {
  
$dol mysql_real_escape_string($_POST['dol']); 
} else {
  
$dol '';
}

/*
$db = mysql_connect("localhost", "admin", "12345");
if(!$db) {
  echo 'Подключиться не удалось';
}

mysql_select_db("firstBD");

$result = mysql_query ("INSERT INTO `1th` (`name`, `lastname`, `dol`)
                        VALUES ('$name', '$lastname', '$dol')")
                        or die ( mysql_error() );


if ($result) {
  echo "inter cool";
} else {
  echo "not cool";
}
*/

$sql "INSERT INTO `1th` (`name`, `lastname`, `dol`)
                        VALUES ('
$name', '$lastname', '$dol')";
echo 
$sql;
?>

<form action="" method="post" name="form">
<p>Введите имя: </p> <input name="name" type="text" size="20" maxlength="40"><br>
<p>Введите фамилию: </p><input name="lastname" type="text" size="20" maxlength="40"><br>
<p>Должность:</p><input name="dol" type="text" size="20" maxlength="40"><br>
<input name="sumbit" type="submit" value="Отправить в базу">
</form>

Этот код что на страницу выводит?

  Ответить  
 
 автор: Andreano   (20.03.2010 в 21:28)   письмо автору
 
   для: neadekvat   (20.03.2010 в 21:25)
 

ввожу в форму нажимаю отправить и выводит


Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'Друнька'@'localhost' (using password: NO) in Z:\home\localhost\www\PHP\mysqlinsert.php on line 12

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in Z:\home\localhost\www\PHP\mysqlinsert.php on line 12

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'Друнька'@'localhost' (using password: NO) in Z:\home\localhost\www\PHP\mysqlinsert.php on line 18

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in Z:\home\localhost\www\PHP\mysqlinsert.php on line 18

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'Друнька'@'localhost' (using password: NO) in Z:\home\localhost\www\PHP\mysqlinsert.php on line 24

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in Z:\home\localhost\www\PHP\mysqlinsert.php on line 24
INSERT INTO `1th` (`name`, `lastname`, `dol`) VALUES ('', '', '')
Введите имя:


Введите фамилию:


Должность:

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 21:34)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:28)
 

Добавьте в самое начало скрипта эти строки:
$db = mysql_connect("localhost", "admin", "12345"); 
if(!$db) { 
  echo 'Подключиться не удалось'; 


mysql_select_db("firstBD");

  Ответить  
 
 автор: Andreano   (20.03.2010 в 21:38)   письмо автору
 
   для: neadekvat   (20.03.2010 в 21:34)
 

выводит INSERT INTO `1th` (`name`, `lastname`, `dol`) VALUES ('Андрей', 'Андрей', 'Люд')
+ форму)) но в базу ничего не добавляется))
Вобсче ладно)) Огромное всем спасибо... походу будет проще не искать тут проблему, а если комуто не лень

Пожалуйсто напишите короткий пример как с помощью формы и тега ПОСТ
добавлять данные в mysql

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 21:46)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:38)
 

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

  Ответить  
 
 автор: Slo_Nik   (20.03.2010 в 21:46)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:38)
 

у Вас ошибка при обращении к базе данных, скрипт не может соедениться с базой, проверте настройки соединения

  Ответить  
 
 автор: Andreano   (20.03.2010 в 21:51)   письмо автору
 
   для: Slo_Nik   (20.03.2010 в 21:46)
 

База данных на локальном сервере, другой пример который я разбирал(по урокам), без всяких проблем выводит данные)

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 21:59)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:51)
 

Ну что-то же возвращает база? кул или не кул?

  Ответить  
 
 автор: Slo_Nik   (20.03.2010 в 22:01)   письмо автору
 
   для: Andreano   (20.03.2010 в 21:51)
 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Доступ закрыт для пользователя'Друнька'@'localhost' (using password: NO) in Z:\home\localhost\www\PHP\mysqlinsert.php on line 12

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Связь с сервером не может быть создана in Z:\home\localhost\www\PHP\mysqlinsert.php on line 12

ВЫДЕЛЕНО ЖИРНЫМ ШРИФТОМ, проверяй настройки соединения...

  Ответить  
 
 автор: Andreano   (20.03.2010 в 22:02)   письмо автору
 
   для: Slo_Nik   (20.03.2010 в 22:01)
 

А где эти настройки то)?

  Ответить  
 
 автор: Slo_Nik   (20.03.2010 в 22:06)   письмо автору
 
   для: Andreano   (20.03.2010 в 22:02)
 

$db = mysql_connect("localhost", "admin", "12345");

вот твои настройки - имя хоста, имя пользователя, пароль

mysql_select_db("firstBD")

выбранная база данных


и вот это смущает Друнька'@'localhost

имя юзера ну очень странно отображается....

  Ответить  
 
 автор: Andreano   (20.03.2010 в 22:08)   письмо автору
 
   для: Slo_Nik   (20.03.2010 в 22:06)
 

Вот имя юзера:

root@localhost

Только почему оно так криво отображается)

  Ответить  
 
 автор: Slo_Nik   (20.03.2010 в 22:16)   письмо автору
 
   для: Andreano   (20.03.2010 в 22:08)
 

можно поменять через phpmyadmin, в разделе "привилегии"...

  Ответить  
 
 автор: Andreano   (20.03.2010 в 22:22)   письмо автору
 
   для: Slo_Nik   (20.03.2010 в 22:16)
 

User Host Password Global privileges 1 Grant
admin localhost 12345 Yes ALL PRIVILEGES Yes

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

  Ответить  
 
 автор: Slo_Nik   (20.03.2010 в 22:42)   письмо автору
 
   для: Andreano   (20.03.2010 в 22:22)
 

у тебя проблемы с соединением с базой, вот с этого и начинай
создай отдельный файл для подключения к базе
назови данный файл, например, connect.php

<?php 
//подставь свои значения
$user "";
$password "";
$host "";
$database "";
// соединяемся с сервером
 
$db mysql_connect($host,$user,$password) or die ("в данный момент сервер mysql недоступен");
// выбираем базу данных
mysl_select_db($database) or die ("в данный момент БД недоступна");;
// настраиваем кодировку соединения
mysql_query("SET NAMES 'cp1251'");
?>


следующий файл с формой и запросом


<?php
// настраиваем уровень ошибок
error_reporting(E_ALL); 
// подключаем файл connect.php
 
require_once("connect.php");
 if(isset(
$_POST['submit')){
 
$query="UPDATE  `table` SET `name` = '".$_POST['name']."'";
  if(
mysql_query($query)){
   echo 
"данные записаны";
 }
 else{
  echo 
"данные не записаны";
 }
}
?>
<form action="" method="post">
 <input type="text" name="name">
 <input type="submit" name="submit" value="отправить">
</form>

  Ответить  
 
 автор: Andreano   (20.03.2010 в 22:49)   письмо автору
 
   для: Slo_Nik   (20.03.2010 в 22:42)
 

Пасиба)) большое)) завтро опробую)) сейчас спать уже пора)))

  Ответить  
 
 автор: Slo_Nik   (20.03.2010 в 22:59)   письмо автору
 
   для: Andreano   (20.03.2010 в 22:49)
 

> я просто это изучаю по видео уроку трех летней давности))вот и возникают проблемы совместимости))

это здесь ни при чём...

  Ответить  
 
 автор: Slo_Nik   (20.03.2010 в 22:19)   письмо автору
 
   для: Andreano   (20.03.2010 в 22:08)
 

скорей всего не в той кодировке к базе данных запрос поступает

mysq_query("SET NAMES 'cp1251'");

вот там можно настроить кодировку соединения.

  Ответить  
 
 автор: .heed   (20.03.2010 в 22:37)
 
   для: Andreano   (20.03.2010 в 22:08)
 

> автор: neadekvat (20.03.2010 в 21:34) письмо автору
>Добавьте в самое начало скрипта эти строки: $db = mysql_connect ......

или попробуйте в например таком скрипте с вашим паролем менять местами соединение с сервером и вызов mysql_real_escape_string()

<?
//error_reporting(E_ALL);

//1.
if (!$link mysql_connect('localhost''root''root'))
    exit(
'exit'mysql_error());
//2.
$txt mysql_real_escape_string('abc');

  Ответить  
 
 автор: Andreano   (20.03.2010 в 22:39)   письмо автору
 
   для: .heed   (20.03.2010 в 22:37)
 

Вот что вывело)

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in Z:\home\localhost\www\PHP\mysqlinsert.php on line 12
exitAccess denied for user 'root'@'localhost' (using password: YES)

  Ответить  
 
 автор: Slo_Nik   (20.03.2010 в 22:46)   письмо автору
 
   для: Andreano   (20.03.2010 в 22:39)
 

опять же повторю, здесь говорится, что отказано в доступе...
сначала подключайся к базе данных, потом обрабатывай и записывай данные....

  Ответить  
 
 автор: heed   (20.03.2010 в 22:49)   письмо автору
 
   для: Andreano   (20.03.2010 в 22:39)
 

> с вашим паролем
Вы пароль ставили свой ? пользователь "root" с паролем "root" это у меня такой

  Ответить  
 
 автор: Andreano   (20.03.2010 в 22:56)   письмо автору
 
   для: heed   (20.03.2010 в 22:49)
 

Да свой)) пользователь админ пароль 12345)) в этом уверен)) я ниже описался0) перепутал))

  Ответить  
 
 автор: heed   (20.03.2010 в 23:07)   письмо автору
 
   для: Andreano   (20.03.2010 в 22:56)
 

>пользователь админ

если имя пользователя русскими буквами, то ещё под вопросом в какой кодировке оно записалось в базу данных (взависимости от того какой программой создавался этот пользователь)
и кодировка соединения по умолчанию должна быть точно той-же в которой это имя пользователя пишите в скрипте (если конечно там вообще правильно записалось это имя)

Не парьте мозг,) и зарегистрируйте в mysql нового пользователя назвав его английскими буквами
, или если ничего не меняли пользователь 'root' пароль '' (пустая строка)

  Ответить  
 
 автор: Andreano   (20.03.2010 в 23:13)   письмо автору
 
   для: heed   (20.03.2010 в 23:07)
 

я латиницей зареген))
просто лень было переклучать раскладку) )вот и напечатал рускими)))

  Ответить  
 
 автор: heed   (20.03.2010 в 23:22)   письмо автору
 
   для: Andreano   (20.03.2010 в 23:13)
 

Остаётся только догадываться что это у Вас не пароль и имя пользователя mysql а просто от учётной записи в виндовс :)
Так меняли пользователя по умолчанию "root" c паролем "" ?

  Ответить  
 
 автор: neadekvat   (20.03.2010 в 23:45)   письмо автору
 
   для: heed   (20.03.2010 в 23:22)
 

Что-то мне подсказывает, что это denwer стоит, но утверждать не буду.
Если все-таки денвер - то нафига там вообще ковырятся в настройках? =)

  Ответить  
Rambler's Top100
вверх

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