Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу найти ошибку, Помогите-) 
:(
    Опции темы
BuShaRt
Дата 14.9.2006, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Уж к неграмотности кода не придерайтесь =) Как раз сейчас переписываю в режиме полного вывода ошибок.
Вообше еще до кода саомого не добрался, исправляю ошибки мелочные, а именно:
Код

Notice: Undefined variable: rch in z:\home\localhost\www\baner\view.php on line 22

Я склонен думать, что виной всему неправильное написание этой строки
Код

$query = "SELECT * FROM ban_user WHERE id = '$rch[random]' ";

Но как кавычки не ставил, не чего не получалось.... Но может и ошибаюсь...


Код

//Загрузка библиотек.
include ("config/config_index.php");   
global $link; 
//Загрузка шаблона вывода баннера
$banner = file ("html/sh_banner.html");
//Выборка данных о баннире, на котором есть показы    
$query = "SELECT * FROM ban_user WHERE printing > 0";
$result= mysql_query ($query, $link) or die ("Ошибка:". mysql_error());
//Созданние массива чисел, для преоритетного вывода баннеров
while ($table = mysql_fetch_array($result)) 
    {
        for ($i=0;$i<$table['printlvl'];$i++) 
            {
                $rch[]=$table['id'];
            }
    }
//Рандом
$xx = mt_rand (0,1000); mt_srand (time() + (double)microtime() * $xx);
$random = mt_rand (0, count('$rch')-1);
//Выборка данных о баннере, выбранном рандомом 
$query = "SELECT * FROM ban_user WHERE id = '$rch[$random]' ";
$result= mysql_query ($query, $link) or die ("<b>Ошибка: нету активных баннеров</b>");



Добавлено @ 22:21 
 smile Ув. админы. извеняюсь, поздно вспомнил, что нельзя так называть топики smile

Это сообщение отредактировал(а) BuShaRt - 14.9.2006, 22:45
PM MAIL   Вверх
Vaulter
Дата 14.9.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



$rch[$random]
развивая:
Код

$query = sprintf("SELECT * FROM ban_user WHERE id = '%d'", $rch[$random]);


Это сообщение отредактировал(а) Vaulter - 14.9.2006, 22:30


--------------------
PM MAIL WWW ICQ   Вверх
BuShaRt
Дата 14.9.2006, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Код

Notice: Undefined variable: rch in z:\home\localhost\www\baner\view.php on line 22


Добавлено @ 22:40 
Не помогает хотелс сказать =)
PM MAIL   Вверх
Vaulter
Дата 15.9.2006, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



BuShaRt, сделай так:
Код

//Рандом
//Выборка данных о баннере, выбранном рандомом 
$query = sprintf("SELECT * FROM ban_user WHERE id = '%d'", 
      array_rand($rch));
$result= mysql_query ($query, $link) or die ("<b>Ошибка: нету активных баннеров</b>");



--------------------
PM MAIL WWW ICQ   Вверх
ewolf
Дата 15.9.2006, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 8
Всего: 18



Необъявленная переменная возникает из-за участка кода строк 10-16, там видимо не выполняется цикл - while или вложенный for. Возможно в базе нет ни одной записи, возможно ты забыл указать переменную $table['printlvl'] или не добавил ее через global, если все это дело происходит в функции.

Кстати, а что это за ужас?

$random = mt_rand (0, count('$rch')-1);

?

В одинарных кавычках переменные не обрабатываются, но даже если бы и обрабатывались, все равно это бессмысленный кусок кода, следует только так:

$random = mt_rand (0, count($rch)-1);
PM MAIL ICQ   Вверх
BuShaRt
Дата 15.9.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



 smile На деле, после часа поэтмпной откладки было выясненно, что ошибка в следуюшем коде:
Код

$query = "SELECT * FROM ban_user WHERE printing > 0";
$result= mysql_query ($query, $link) or die ("Ошибка:". mysql_error());


Только вот я не могу понять, как исправить: он не выводит сообшение об ошибки, а продолжает исполнение программы, даже если не выделил не одной записи...
PM MAIL   Вверх
-=Ustas=-
Дата 15.9.2006, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Цитата(BuShaRt @  15.9.2006,  08:32 Найти цитируемый пост)
Только вот я не могу понять, как исправить: он не выводит сообшение об ошибки, а продолжает исполнение программы, даже если не выделил не одной записи... 


А с чего бы это он тебе завершил бы программу?!!! Тут идет завершение на ошибку в SQL-запросе, но не на нулевой результат. Делай проверки на то, что он вернул.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Maxci
Дата 3.8.2007, 21:36 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 3.8.2007

Репутация: нет
Всего: нет



++++++++++++++++ПОМОГИТЕ РАЗОБРАТЬСЯ+++++++++++++++++++++
Я уже как 2 недели пытаюсь разобраться почему у меня наработает код на PHP. Я пытаюсь создать собственную регистрацию на сайте. Пользователь нажимает на ссылку РЕГИСТРАЦИЯ, заполняет там анкету и вся информация записываеться в обычный блокнот, только в разных строчках, а также ник пользователя записывается в отдельный txt-файл, чтобы они не повторялись.  После регистрации пользователь должен ввести в специальную форму свой ник и пароль, если они совпадают с теми что находиться в блокноте, то пользователь вошел на сайт. Я сделал чтобы при регистрации у меня данные записывались в блокнот. А вот когда при входе вводешь ник и пароль, то пишет что пользователь ненайден.  Как быть?  Помогите написать код на PHP. Надо чтобы из txt-файла с именем users проверялась каждая строчка на наличие одинаковости с введеным ником. У меня получаеться только что проверяеться первая строчка а остальное пропускаеться. Отрывок кода:

$f=fopen("users.txt","rt") or die("Не могу открыть файл Users!");
while(!feof(users.txt)) 
{
$a=fgets($f);
if(nick==$a) { header("location:error.php" };
}

Я только пытаюсь разобраться в PHP, но пока я не вижу своих ошибок. Помогите разобраться! Если что-то не понятно написал, спросите разъясню.
PM MAIL   Вверх
reich
Дата 4.8.2007, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 3.8.2007
Где: UA

Репутация: -1
Всего: -6



Самая большая ошибка в том, что ты делаешь регистрацию с помощью текстовых файлов.
Это делается с помощью базы данных MySQL. Например код авторизации:
Код

<?php
/* Проверяем сначала, не нажал ли авторизованный юзер кнопку "Выход"
*  Если он нажал кнопку "Выход", на сервер отправилась переменная $unlogin. */
if (isset($_POST['unlogin']) && $_POST['unlogin']=='ok')
{
// убиваем сессию авторизации
    session_unregister('autorisation'); 

// вызываем функцию для авторизации(ввод логина и пароля)
    loginForm();
}
/* если переменная сессии, которая показывает, авторизован ли пользователь, 
* установлена, мы вызываем функцию loginTrue(), которая работает с авторизованными юзерами */
elseif(session_is_registered('autorisation')) loginTrue();

/*если юзер не авторизован, проверяем, вводил ли он логин в форме авторизации
* до нажатия submit
* если нет, вызываем loginForm(); */
elseif(!isset($_POST['user'])) loginForm();

elseif(isset($_POST['user']) && isset($_POST['pass']))
{
/*если юзер ввел и логин и пароль, тогда выполняем следующее:
* вызываем функцию, которая проверяет в базе данных совпадения такого ника и пароля,
* то есть, если существует строка, в которой есть введенный логин и пароль, функция
* возвращает true. В данном случае autorise(), в нее мы передаем 
* 2 аргумента - логин и пароль.
* Если autorise() возвращает true, мы регистрируем переменную сессии, 
*о которой говорилось вначале.
* Если autorise() возвращает false, мы пишем, что логин или пароль неверны.
* Это делает функция Errors('aut'), с входным аргументом aut.
* И вызываем форму для ввода логина и пароля. */
    if (autorise($_POST['user'], $_POST['pass'])){session_register('autorisation'); loginTrue();}
    else{Errors('aut'); loginForm();}
}
/*Если ничего из выше перечисленного не выполнилось,
*вызываем форму аторизации */
else loginForm();
?>

в следующем коде представлена функция, которая проверяет совпадение логина и пароля
в базе данных
Код

function autorise($user,$pass)
{
    $query="SELECT count(*) FROM `user` WHERE user='".$user."' && pass='".md5($pass)."'";
    $result=mysql_query($query);
    $count=mysql_result($result,0,0);
    if ($count > 0) return true;
    else return false;
}


Это сообщение отредактировал(а) reich - 4.8.2007, 00:41
PM MAIL ICQ   Вверх
Glip
Дата 4.8.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 7
Всего: 18



Maxci
Код

$f=fopen("users.txt","rt") or die("Не могу открыть файл Users!");
while(!feof(users.txt)) 
{
$a=fgets($f);
if(nick==$a) { header("location:error.php" };
}

что такое nick - константа? возможно она не определена. если всетаки переменная, то не nick а $nick

внимательнее к синтаксису. smile

Добавлено через 2 минуты и 47 секунд
reich, не всегда есть возможность использовать субд


--------------------
user posted image
PM MAIL   Вверх
Anarki
Дата 5.8.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 7
Всего: 11



BuShaRt
Самый простой метод - определеить заранее массив $rch. А при выборе случайного баннера определять не пустой ли массив
Код

//Созданние массива чисел, для преоритетного вывода баннеров
$rch = array(); // объявили массив
while ($table = mysql_fetch_array($result)) 
    {
        for ($i=0;$i<$table['printlvl'];$i++) 
            {
                $rch[]=$table['id'];
            }
    }
if (empty($rch)) {
    die ("<b>Ошибка: нету активных баннеров</b>");
}
//Рандом
$xx = mt_rand (0,1000); mt_srand (time() + (double)microtime() * $xx);
$random = mt_rand (0, count($rch)-1);
//Выборка данных о баннере, выбранном рандомом
$query = "SELECT * FROM ban_user WHERE id = '$rch[$random]' ";
$result= mysql_query ($query, $link) or die ("<b>Ошибка: нету активных баннеров</b>");

или же через mysql_num_rows
Код

$query = "SELECT * FROM ban_user WHERE printing > 0";
$result= mysql_query ($query, $link) or die ("Ошибка:". mysql_error());
if (mysql_num_rows($result) > 0) {
 // делаем что нужно
} else {
  die('Нет данных');
}



--------------------
PM WWW   Вверх
Maxci
  Дата 6.8.2007, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 3.8.2007

Репутация: нет
Всего: нет



Цитата(Glip @  4.8.2007,  11:28 Найти цитируемый пост)
что такое nick - константа? возможно она не определена. если всетаки переменная, то не nick а $nick

в место nick я пишу $_POST['nick']   
А почему у меня  в текстовом редакторе несколько ников вписано, а проверяеться только один (непомню или последний или первый) ???

Добавлено через 1 минуту и 53 секунды
Цитата(reich @  4.8.2007,  00:39 Найти цитируемый пост)
Самая большая ошибка в том, что ты делаешь регистрацию с помощью текстовых файлов.
Это делается с помощью базы данных MySQL.

Я просто еще неумею  создавать базы данных MySQL. Может подскажешь хороший электронный учебник?
PM MAIL   Вверх
reich
Дата 6.8.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 3.8.2007
Где: UA

Репутация: -1
Всего: -6



MySQL
е ище есть такая интересная штуковина... read
PM MAIL ICQ   Вверх
Severyanin
Дата 7.8.2007, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



Maxci, лучше будет, если ты свой текстовик перегонишь в массив функцией file, а потом уже будешь просматривать именно его. Это будет быстрее и надежнее smile 


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Maxci
Дата 7.8.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 3.8.2007

Репутация: нет
Всего: нет



Цитата(Severyanin @  7.8.2007,  07:44 Найти цитируемый пост)
Maxci, лучше будет, если ты свой текстовик перегонишь в массив функцией file, а потом уже будешь просматривать именно его. Это будет быстрее и надежнее   

Я так тоже думал. Но эффекта никакого не было. Щас еще разок просматрю код, может найду какую-нитбудь ошибку из-за которой не работает. 

А может какие нибуть настроики надо в php.ini изменить чтоб заработало?????
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0972 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.