За последние 24 часа нас посетил 17661 программист и 1721 робот. Сейчас ищут 1850 программистов ...

Подскажите как лучше реализовать

Тема в разделе "PHP для новичков", создана пользователем zarapyan, 4 май 2010.

  1. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Большинство последовательностей команд на PHP должны заканчиваться ;

    Где она?
     
  2. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    эээ добавил, но там что то вообще страшное получилось

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\Newjourn\file.php on line 27

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\Newjourn\file.php on line 27

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\Newjourn\file.php on line 28

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\Newjourn\file.php on line 28

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\Newjourn\file.php on line 29

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\Newjourn\file.php on line 29

    Fatal error: Call to a member function query() on a non-object in C:\WebServer\public\Newjourn\file.php on line 31
     
  3. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Начинаете разбираться с Fatal error.
    Затем Warning
    И последними Notice
     
  4. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    fatal error это как я понял
    PHP:
    1.  
    2. <?php
    3.         if ($result = $db->query($QUERY)) {?>
    4.  
    Но какую надлежащую функцию нужно подставить? в версии предложенной igordata объявлялась переменная $db..
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    А у тебя где эта переменная инициализируется?
     
  6. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    у меня её нет.. инициализация базы идет из db_confige.ini
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1.  
    2. <?php
    3. if ($result = $db->query($QUERY)) {
    4.          //создана запись о человеке
    5.            echo "добавлен человечек {$_POST['name']} {$_POST['surname']}  -  {$_POST['post']}.<br>\n"
    6.          } else {
    7.            //не прокатило. тут можно сделать запись в лог, и известить юзера о том, что запись не была добавлена.
    8.            echo 'облом, чел!'; ?>
    9.          }
    10.  
    11.  
    "echo 'облом, чел!'; ?>"
    заменить на "echo 'облом, чел!';"

    и добавить в самом конце уже эту ?> после всего-всего кода.
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может для начала без PDO попробуете? Тут пробовать минут двадцать-тридцать. Все должно будет работать.

    PHP:
    1.  
    2. <?php
    3. $db = new mysqli('127.0.0.1', 'login', 'password', 'DATABASE');
    4.   //debug('Облом!');
    5.   printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error());
    6.   exit;
    7. }
    8.  
    9. $QUERY = "INSERT INTO masters (`name`,`surname`,`post`)
    10.         VALUES ('".mysql_real_escape_string($_POST['name'])."',
    11.           '".mysql_real_escape_string($_POST['surname'])."',
    12.           '".mysql_real_escape_string($_POST['post'])."')";
    13.  
    14.       if ($result = $db->query($QUERY)) {
    15.         //создана запись о человеке
    16.          echo "добавлен человечек {$_POST['name']} {$_POST['surname']}  -  {$_POST['post']}.<br>\n";
    17.       } else {
    18.         //не прокатило. тут можно сделать запись в лог, и известить юзера о том, что запись не была добавлена.
    19.         echo 'облом, чел!';
    20.       }
    21. ?>
    22.  
    $db = new mysqli('127.0.0.1', 'login', 'password', 'DATABASE');
    тут как вы понимате надо вставить то, что подходит под вашу задачу: логин, пароль, базу данных, если потребуется - изменит 127.0.0.1 на localhost например.

    У вас ЭТО заработало?
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1.  
    2. <?php
    3.  
    4. //////////////////////////////////////////////////////////////////////////////
    5. ///  Инициализируем переменные. ВСЕ какие знаем, что будут и добавляем сюда
    6. //   по мере появления новых.
    7. $name    = '';
    8. $surname = '';
    9. $post    = ''; //по-английски пост это еще почта и столб =)
    10. $result  = false;
    11. //,
    12. ///, /инициализируем переменные
    13. //////////////////////////////////////////////////////////////////////////////
    14.  
    15.  
    16. //////////////////////////////////////////////////////////////////////////////
    17. ///  инициализируем подключение к базе данных
    18. //
    19. $db = new mysqli('127.0.0.1', 'login', 'password', 'DATABASE');
    20.   //debug('Облом!');
    21.   printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error());
    22.   exit;
    23. }
    24. //,
    25. ///, /инициализируем подключение к базе данных
    26. //////////////////////////////////////////////////////////////////////////////
    27.  
    28.  
    29. //////////////////////////////////////////////////////////////////////////////
    30. ///  Обрабатываем присланные значения. Пользователю верить нельзя, поэтому -
    31. //   буду резать буду бить =)
    32. if (isset($_POST['name'])) {
    33.   $name    = substr(trim($_POST['name']), 0, 255);
    34. } //255 символов должно хватить
    35. if (isset($_POST['surname'])) {
    36.   $surname = substr(trim($_POST['surname']), 0, 255);
    37. }
    38. if (isset($_POST['post'])) {
    39.   $post    = substr(trim($_POST['post']), 0, 255);
    40. }
    41. //,
    42. ///, /обработка присланного всякого
    43. //////////////////////////////////////////////////////////////////////////////
    44.  
    45. //////////////////////////////////////////////////////////////////////////////
    46. ///  если все хорошо - заносим в базу
    47. //
    48. if ($name != '' OR $surname != '') {
    49.   //если нету фамилии или имени - не дадим внести в базу запись! =)
    50.   $name    = mysql_real_escape_string($name);
    51.   $surname = mysql_real_escape_string($surname);
    52.   $post    = mysql_real_escape_string($post);
    53.  
    54.   $QUERY = "INSERT INTO masters (`name`, `surname`, `post`)
    55.                       VALUES ('$name','$surname','$post')";
    56.  
    57.   if ($result = $db->query($QUERY)) {
    58.     //создана запись о человеке
    59.     echo "$name $surname добавлен на должность $post.<br>\n";
    60.   } else {
    61.     //не прокатило. тут можно сделать запись в лог, и известить юзера о том, что запись не была добавлена.
    62.     echo 'облом, чел!<br>';
    63.   }
    64. } else {
    65.   echo 'Пожалуйста, введите имя <b>и</b> фамилию жертвы.<br>';
    66. }
    67. //,
    68. ///, /добавление записи в бд заканчивается тут
    69. //////////////////////////////////////////////////////////////////////////////
    70.  
    71. ?>
    72. <form method="post">
    73.   <input name="name">
    74.   <input name="surname">
    75.   <input name="postname">
    76.   <input type="submit">
    77. </form>
    78.  
     
  10. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    Fatal error: Class 'mysqli' not found in C:\WebServer\public\f.php on line 18
    к сожалению вот такая строчка выходит(((((
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну тут надо принять решение. установить это самое 'mysqli' или пользоваться другими методами.
    рекомендую для начала подключить. а дальше уже думать, надо ли =)
    но можно переписать на процедуры. я не люблю. поэтому не буду =)
     
  12. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    В файле php.ini я его раскомментировал, и посмотрел что сам php_mysqli.dll подключен, нужно ли его еще где то подключать????
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    phpinfo показывает что реально подключено.

    я к сожалению в подключении модулей не разбираюсь =)
     
  14. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    С mysqli разобрался - подключил.... Но блин. полезли другие ошибки...


    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\f.php on line 50

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\f.php on line 50

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\f.php on line 51

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\f.php on line 51

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\WebServer\public\f.php on line 52

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\WebServer\public\f.php on line 52

    Что с ним еще не так и в самом верху страницы кракозябры появились
    добавлен на должность .
     
  15. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    проблема решилась когда убрал
    mysql_real_escape_string, данные записываются в таблицу, единственный момент, что если данные на русском - то в таблице кракозябрики, если на латинице - то норм. Что делать дальше?
     
  16. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    mysqlI::real_escape_string
     
  17. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    Вот когда я эту функцию добавляю - появляется ошибка, которая описана выше. А без нее все работает нормально..
     
  18. zarapyan

    zarapyan Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    И столкнулся с еще одной проблемой, если работа с базой ведется только на 3 записи (Name,Surname and Post)-то все норм, а если добавить в базу еще несколько таблиц, и обозначить переменные (так же как в коде - все один в один) то выпадает ошибка добавления запис ("Облом,чел!")