Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 016 112 раз!

Форум

Добро пожаловать, Гость!

Ввод в базу данных

Обсуждение вопросов на другие темы связанные с веб-разработкой
RazerVGolub
Сообщения: 9
C нами: 2 года 11 мес

Непрочитанное сообщение RazerVGolub » 09 дек 2013, 14:34

Мои действия: открываю phpmyadmin смотрю там хост базы данных.
В моем случае это 127.0.0.1:3306


Пишу функцию подключения к БД:

<?
function db_connect()
{
   $host = 'localhost';
   $user = 'chat';
   $pswd = '1234';
   $db = 'chat';

   

   $connection = mysql_connect($host, $user, $pswd);
   mysql_set_charset( 'utf8' , $connection);
   if(!$connection || !mysql_select_db($db,$connection))
   {
        return false;   
   }
   return $connection;
}

?>


Далее пишу функцию для вывода содержимого

<?
function db_result_to_array($result)
{
   $res_array = array();

   $count = 0;

   while($row = mysql_fetch_array($result))
           {
              $res_array[$count] = $row;
              $count++;
           }
    return $res_array;
}


function get_masseng()
{
   db_connect();

    $query = "SELECT * FROM massage ORDER BY id DESC";

    $result = mysql_query($query);

    $result = db_result_to_array($result);

    return $result;
}
?>


Далее в файл самой страницы пишу вывод предварительно с помощью phpmyadmin заношу туда примерные значения

<?
         $masseges = get_masseng();
         foreach ($masseges as $item):?>

      <h1 class="vivodlogin"><?=$item['login']?></h1>
      <div class="vivodsoobsheni"><?=$item['text']?></div>

      <?endforeach;?>


Все что я внес выводится. Это работает !!!

А вот теперь проблема. Создаю форму для ввода в БД.

<form class="forma" name="email-form" action="http://192.168.1.2/index.php?view=home" method="post">
        <label class="login" for="name">Логин:</label>
        <input class="w-input loginvvod" type="text" placeholder="Введите свой логин" name="login" ></input>
        <label class="masseng" for="email">Сообщение:</label>
        <input class="w-input massengvvod" type="text" placeholder="Введите сообщение" name="text" ></input>
        <input class="w-button otpravka" name="otpravka" type="submit" value="Отправить" ></input>
      </form>

      <?PHP
         if(isset($_POST['otpravka']))
        {
            $login = $_POST['login'];
            $text = $_POST['text'];
            $query = mysql_query("INSERT INTO 'massage'('login', 'text') VALUES ('$login', '$text')");
        }
      ?>


так вот после нажатия кнопки выводятся следующие сообщения об ошибках

Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in C:\OpenServer\domains\mysite.local\layouts\home.php on line 45

Warning: mysql_query(): A link to the server could not be established in C:\OpenServer\domains\mysite.local\layouts\home.php on line 45



Указываемая строка

$query = mysql_query("INSERT INTO 'massage'('login', 'text') VALUES ('$login', '$text')");



Как исправить данную проблему?

Добавлено спустя 1 минуту 52 секунды:
А также забыл добавить пользователя я создаю

Логин chat
Хост localhost
Пароль 1234

И отмечаю все привелегии

Аватара пользователя
Максим
Сообщения: 4868
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 09 дек 2013, 14:41

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

RazerVGolub
Сообщения: 9
C нами: 2 года 11 мес

Непрочитанное сообщение RazerVGolub » 09 дек 2013, 14:54

Сейчас опишу подробнее. При входе на сайт главный файл:

<?

include('db_fns.php');



$view = empty ($_GET['view']) ? 'index' : $_GET['view'];

include($_SERVER['DOCUMENT_ROOT'].'/layouts/'.$view.'.php');

?>


Файл db_fns.php

<? 

function db_connect()
{
   $host = '127.0.0.1';
   $user = 'chat';
   $pswd = '1234';
   $db = 'chat';

   

   $connection = mysql_connect($host, $user, $pswd);
   mysql_set_charset( 'utf8' , $connection);
   if(!$connection || !mysql_select_db($db,$connection))
   {
        return false;   
   }
   return $connection;
}


function db_result_to_array($result)
{
   $res_array = array();

   $count = 0;

   while($row = mysql_fetch_array($result))
           {
              $res_array[$count] = $row;
              $count++;
           }
    return $res_array;
}


function get_masseng()
{
   db_connect();

    $query = "SELECT * FROM massage ORDER BY id DESC";

    $result = mysql_query($query);

    $result = db_result_to_array($result);

    return $result;
}

?>


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

Добавлено спустя 4 минуты 8 секунд:
То есть главный файл это файл которые лежит в папке mysite.local(index.php)
он и грузит все остальное.

Аватара пользователя
Максим
Сообщения: 4868
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 09 дек 2013, 14:56

Возьмите учебник в руки, посмотрите несколько раз как там происходит подключение к БД. А потом посмотрите на это свое сообщение, которое вы сейчас написали, и найдите там место, где вы подключаетесь к БД. Вы будете искать его долго, потому что его там нет. У вас есть функция подключения, но вы нигде не вызываете эту функцию.

RazerVGolub
Сообщения: 9
C нами: 2 года 11 мес

Непрочитанное сообщение RazerVGolub » 09 дек 2013, 15:43

Исправил

<?PHP

         
         if(isset($_POST['otpravka']))
        {
            $dbc = mysql_connect('localhost','chat','1234','chat');
            $login = $_POST['login'];
            $text = $_POST['text'];
            $query = "INSERT INTO 'massage'('login', 'text') VALUES ('$login', '$text')";
            mysql_close($dbc);
        }

      ?>


теперь ошибок нет но в БД ничего не занесено

Аватара пользователя
Максим
Сообщения: 4868
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 09 дек 2013, 15:48

'massage'('login', 'text') здесь пробел должен быть, плюс вы подключаетесь к базе через домен localhost, убедитесь что этот домен существует в open server.

RazerVGolub
Сообщения: 9
C нами: 2 года 11 мес

Непрочитанное сообщение RazerVGolub » 09 дек 2013, 15:56

<?PHP

         
         if(isset($_POST['otpravka']))
        {
            $dbc = mysql_connect('localhost','chat','1234','chat');
            $login = $_POST['login'];
            $text = $_POST['text'];
            $query = "INSERT INTO massage(login, text) VALUES ('$login' , '$text')";
            $result = mysql_query($dbc, $query);

            mysql_close($dbc);
        }

      ?>


Вот последняя функция все сделал как учебнике ошибка

Warning: mysql_query() expects parameter 1 to be string, resource given in C:\OpenServer\domains\mysite.local\layouts\home.php on line 49


Ошибка в строке
$result = mysql_query($dbc, $query);


Добавлено спустя 1 минуту 11 секунд:
пробел тоже не помогает

Аватара пользователя
Максим
Сообщения: 4868
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 09 дек 2013, 16:04

$result = mysql_query($dbc, $query);

Естественно там ошибка, в функции mysql_query сначала нужно указывать запрос, а потом уже указатель на подключение, а не наоборот.

Аватара пользователя
duxabilii
Сообщения: 216
C нами: 5 лет 5 мес
Контакты:

Непрочитанное сообщение duxabilii » 09 дек 2013, 16:09

RazerVGolub писал(а):
Ошибка в строке [code]$result = mysql_query($dbc, $query);


При использовании функции mysql_query первым параметром идет запрос, вторым (необязатльным) ссылка на соединение с БД. Учите матчасть
http://php.net/manual/ru/function.mysql-query.php И обратите внимание на выделенное красным...

RazerVGolub
Сообщения: 9
C нами: 2 года 11 мес

Непрочитанное сообщение RazerVGolub » 09 дек 2013, 16:45

Спасибо все получилось

Вот конечный результат

<?PHP

         
         if(isset($_POST['otpravka']))
        {
            $dbc = mysqli_connect('localhost','chat','1234','chat');
            $login = $_POST['login'];
            $text = $_POST['text'];
            $query = "INSERT INTO massage (login, text) VALUES ('$login' , '$text')";
            $result = mysqli_query($dbc , $query);

            mysqli_close($dbc);
        }

      ?>


Вернуться в «Оффтоп и другие темы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость