Страница 1 из 1

Что нетак?

Добавлено: 01 фев 2011, 21:18
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>

Re: Что нетак?

Добавлено: 02 фев 2011, 08:21
Евгений
У меня похожая проблема...в этих строках:

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

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

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

$query = 'SELECT * FROM `'.$table_name.'` WHERE `user_id`=20035313';

Re: Что нетак?

Добавлено: 02 фев 2011, 09:47
bodnar
у тебя кавычки одинарны, внутри них переменные не обрабатываются, смени на двойные, или вынеси переменную так же как $table_name

Re: Что нетак?

Добавлено: 02 фев 2011, 10:25
Евгений
bodnar, спасибо!) Заработало!

Re: Что нетак?

Добавлено: 02 фев 2011, 10:45
bodnar
Sasha мне вот интересно, какова цель того что вы ставите @?

Re: Что нетак?

Добавлено: 02 фев 2011, 16:14
Sasha
bodnar писал(а):Sasha мне вот интересно, какова цель того что вы ставите @?

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

____________________________________________________________________________
Я не профессионал в php поэтому врядли отвечу на твой вопрос! |
____________________________________________________________________________|

Re: Что нетак?

Добавлено: 02 фев 2011, 16:35
bodnar
везде, во всех строках где бы он стоял
@ - принудительно скрывает сообщений об ошибках.
 Подсказка
Чтобы понять где неправильно нужно знать на какое место и как ругается интерпретатор.

Re: Что нетак?

Добавлено: 02 фев 2011, 16:45
Sasha
Я слабо знаю php и пользуюсь чужим кодом просто меняя его.
Можешь сказать правильный код?

Re: Что нетак?

Добавлено: 07 фев 2011, 00:39
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';
Ошибка в синтаксисе, а именно в кавычках, попробуй исправить её сам, поскольку, если я тебе и её объясню, ничему не научишься.