За последние 24 часа нас посетили 57910 программистов и 1845 роботов. Сейчас ищут 1040 программистов ...

Добавление данных в БД через форму

Тема в разделе "Прочие вопросы по PHP", создана пользователем moslem, 19 мар 2015.

  1. moslem

    moslem Новичок

    С нами с:
    19 мар 2015
    Сообщения:
    3
    Симпатии:
    0
    Выводить данные из БД научился, но когда добавляю данные через форму в БД выводятся ошибки следующие.

    Код (Text):
    1. Warning: mysql_real_escape_string(): Access denied for user ''@'localhost' (using password: NO) in C:\OpenServer\domains\php\add.php on line 8
    2.  
    3. Warning: mysql_real_escape_string(): A link to the server could not be established in C:\OpenServer\domains\php\add.php on line 8
    4.  
    5. Warning: mysql_real_escape_string(): Access denied for user ''@'localhost' (using password: NO) in C:\OpenServer\domains\php\add.php on line 9
    6.  
    7. Warning: mysql_real_escape_string(): A link to the server could not be established in C:\OpenServer\domains\php\add.php on line 9
    8.  
    9. Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\php\head.php:8) in C:\OpenServer\domains\php\add.php on line 29
    Вот сам архив с файлами PHP и MySQL дамп с данными так сказать http://rghost.ru/6DQD2vblp
    У кого есть время помочь мне, был бы благодарен )
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    переведу ошибку на русский: сервер базы данных отклонил подключении из-за того что у тебя нет к нему доступа, ошибка в логине или ещё где-то.
    Похоже ты просто не подключился и не создал соединение с базой данных.

    Почему в show.php есть <?php require_once 'connect.php' ?>
    а в add.php нету?
     
  3. moslem

    moslem Новичок

    С нами с:
    19 мар 2015
    Сообщения:
    3
    Симпатии:
    0
    denis01, спасибо, я не доглядел видимо. Еще есть вопрос, почему когда какую нибудь ошибку допускаю или добавляю данные новые не работают оповещения, типа успешно добавлено и т.д? Вроде сессии добавил, в чем может быть проблема?

    Код (Text):
    1. <?php session_start(); ?>
    2. <?php require_once 'connect.php' ?>
    3. <?php require_once 'head.php' ?>
    4. <?php require_once 'libs.php' ?>
    5. <?php require_once 'menu.php' ?>
    6. <?php
    7.  
    8. if($_POST['submit']) {
    9.     $name = trim(mysql_real_escape_string($_POST['name']));
    10.     $phone = trim(mysql_real_escape_string($_POST['phone']));
    11.     $age = trim((int)$_POST['age']);
    12.  
    13.     $error = '';
    14.     if(empty($name)) $error .= '<p>Не заполнено поле "Имя"</p>';
    15.     if(empty($phone)) $error .= '<p>Не заполнено поле "Телефон"</p>';
    16.     if(empty($age)) $error .= '<p>Не заполнено поле "Возраст"</p>';
    17.  
    18.     if(empty($error)) {
    19.         if(newContact($name, $phone, $age)) {
    20.             $_SESSION['res'] = '<p>Добавлено!</p>';
    21.             header("Location: add.php");
    22.             exit;
    23.         } else {
    24.             $_SESSION['res'] = '<p>Ошибка!</p>';
    25.             header("Location: add.php");
    26.             exit;
    27.         }
    28.     }else {
    29.         $_SESSION['res'] = $error;
    30.         header("Location: add.php");
    31.         exit;
    32.     }
    33. }
    34.  
    35. ?>
    36.  
    37. <form method="post">
    38.     <div class="field">
    39.         <div class="field-title"><label for="name">Имя</label></div>
    40.         <input type="text" name="name">
    41.     </div>
    42.     <div class="field">
    43.         <div class="field-title"><label for="phone">Телефон</label></div>
    44.         <input type="text" name="phone">
    45.     </div>
    46.     <div class="field">
    47.         <div class="field-title"><label for="age">Возраст</label></div>
    48.         <input type="text" name="age">
    49.     </div>
    50.     <div class="field">
    51.         <input type="submit" name="submit" value="Отправить">
    52.     </div>
    53. </form>
    54.  
    55. <?php
    56.  
    57. echo $_SESSION['res'];
    58. session_unset();
    59. session_destroy();
    60.  
    61. ?>
    62.  
    63. <?php require_once 'footer.php' ?>
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    заголовки нужно отправлять до вывода информации.
    сессии и header отсылают заголовки http протокола
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Можно просто поставить в саааамом начале ob_start() и забыть как о страшном сне эти вещи.
     
  6. moslem

    moslem Новичок

    С нами с:
    19 мар 2015
    Сообщения:
    3
    Симпатии:
    0
    Fell-x27, в самом начале это перед <?php session_start(); ?> ?

    Спасибо за подсказку, полезно будет знать.
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    В самом начале это сразу после <?php

    Иначе оно распознается как текст, а не как команда.

    Добавлено спустя 44 секунды:
    То, что я указал - вершина айсберга, чтобы прям полезно было, почитай про буфер вывода PHP. Там много интересных вещей есть.