Что нетак?

Программирование, которое не связано с API.
Ответить
Sasha
Сообщения: 53
Зарегистрирован: 18 дек 2010, 20:48

Что нетак?

Сообщение Sasha »

Подскажите пожалуйста, что нетак в этом коде?

Код: Выделить всё

<?php// данные доступа к базе данных$db_host="localhost";   // обычно не нужно изменять$db_user="****";    // имя пользователя БД$db_password="******";    // пароль БД$db_name = "*********";  // имя БД$table_name = "stat";   // имя таблицы статистики $auth_key  = $_POST['auth_key'];$viewer_id = $_POST['viewer_id']; // соединение с БДmysql_connect($db_host, $db_user, $db_password) or die (mysql_error());mysql_select_db($db_name) or die (mysql_error());mysql_query("SET NAMES 'utf8'"); // Выполняем запрос: выбрать ID пользователей, которые посетили приложение более 10 раз$query = 'SELECT * FROM `'.$table_name.'` WHERE `uid`=$viewer_id';$sql = @mysql_query($query); // обрабатываем полученный результатecho '<?xml version="1.0" encoding="UTF-8"?><response>';while ($sql_data = @mysql_fetch_array($sql)) {    echo '<item><uid>', $sql_data['uid'], '</uid><visits>', $sql_data['visits'], '</visits></item>';}echo '</response>'; // выводим данныеwhile ($sql_data = @mysql_fetch_array($sql)) {    echo $sql_data['uid'].' - '.$sql_data['visits'].'<br />';} ?>
по идее код должен возвращать данные о пользователе чей id есть в базе!

Я новичок в php но мне неясно почему php возвращает таой код :

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?><response></response>
а должен такой :

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?><response><item><uid>id юзера</uid><visit>1</visit></item></response>
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Что нетак?

Сообщение Евгений »

У меня похожая проблема...в этих строках:

Код: Выделить всё

$id = $_GET['id'];$query = 'SELECT * FROM `'.$table_name.'` WHERE `user_id`=$id';
как правильно вывести по user_id равному переменной id?
а так всё работает:

Код: Выделить всё

$query = 'SELECT * FROM `'.$table_name.'` WHERE `user_id`=20035313';
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Что нетак?

Сообщение bodnar »

у тебя кавычки одинарны, внутри них переменные не обрабатываются, смени на двойные, или вынеси переменную так же как $table_name
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Что нетак?

Сообщение Евгений »

bodnar, спасибо!) Заработало!
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Что нетак?

Сообщение bodnar »

Sasha мне вот интересно, какова цель того что вы ставите @?
Sasha
Сообщения: 53
Зарегистрирован: 18 дек 2010, 20:48

Re: Что нетак?

Сообщение Sasha »

bodnar писал(а):Sasha мне вот интересно, какова цель того что вы ставите @?

Где именно???
Укажите строку.

____________________________________________________________________________
Я не профессионал в php поэтому врядли отвечу на твой вопрос! |
____________________________________________________________________________|
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Что нетак?

Сообщение bodnar »

везде, во всех строках где бы он стоял
@ - принудительно скрывает сообщений об ошибках.
 Подсказка
Чтобы понять где неправильно нужно знать на какое место и как ругается интерпретатор.
Sasha
Сообщения: 53
Зарегистрирован: 18 дек 2010, 20:48

Re: Что нетак?

Сообщение Sasha »

Я слабо знаю php и пользуюсь чужим кодом просто меняя его.
Можешь сказать правильный код?
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

Re: Что нетак?

Сообщение Nick Lisogor »

Если бы ты прочитал хотя бы первые главы любого учебника по php, ты бы много чего понял.
Например, зачем тебе выводить вот это:

Код: Выделить всё

// обрабатываем полученный результатecho '<?xml version="1.0" encoding="UTF-8"?><response>';while ($sql_data = @mysql_fetch_array($sql)) {    echo '<item><uid>', $sql_data['uid'], '</uid><visits>', $sql_data['visits'], '</visits></item>';}echo '</response>'; // выводим данныеwhile ($sql_data = @mysql_fetch_array($sql)) {    echo $sql_data['uid'].' - '.$sql_data['visits'].'<br />';}
Даже если каждая строчка твоего кода будет верной, то ответ будет таким(при одном пользователе в бд):

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?><response><item><uid>id</uid><visit>1</visit></item></response>id - 1<br />
Потом, зачем тебе $auth_key , если ты его даже не используешь?

Ну и самая главная твоя ошибка:

Код: Выделить всё

$query = 'SELECT * FROM `'.$table_name.'` WHERE `uid`=$viewer_id';
Ошибка в синтаксисе, а именно в кавычках, попробуй исправить её сам, поскольку, если я тебе и её объясню, ничему не научишься.
Ответить