Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: PHP + MySQL
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (6): [1] 2 3 4 5 6 »   

> Без описания
Systemnik Администратор
Отправлено: 11 Марта, 2008 - 08:33:10
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Приветик всем.
/// Удалено by Systemnik тк код неправильный.. ///

(Отредактировано автором: 12 Марта, 2008 - 03:11:23)

 
 Top
Furax
Отправлено: 11 Марта, 2008 - 22:07:42
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Systemnik
Первое. Что за дебильные имена столбцов БД? Почему нельзя заюзать нормальные слова (id, title, text)?

Второе. Не в коем случае нельзя загружать всё из базы данных в PHP-скрипт и средствами PHP производить фильтрацию! Во-первых, когда у тебя будет несколько тысяч записей, всё станет страшно тормозить; во-вторых, теряются все преимущества от использования базы данных; в третьих, лишний трафик между PHP-машиной и сервером MySQL; и т. д. и т. д. и т. д.

Запрос нужно делать так:
CODE:
$sql = @mysql_query("SELECT * FROM x_name WHERE `$11` = " . (int)$_GET['page'] . " LIMIT 1")


Третье.У тебя для каждой полученной строки из базы выполняется проверка, и в случае неудачи выводится сообщение "404 - нет такой записи в бд". Соответственно, когда у тебя будет 10 000 записей, будет 9 999 раз написано "404" и только один - то, что надо. Причина? См. второй пункт. Извлекай из базы только то, что действительно нужно использовать. Вместо твоего условия должна быть проверка на то, извлеклось ли хоть что-то (mysql_num_rows($sql) != 0).

Червёртое.
Это всё были общеидейные замечания. А ошибка в твоём случае в том, что данные извлекаются в переменную $strings (строка 14), а проверяется значение переменной $tablerows (строки 16, 18).
 
 Top
Systemnik Администратор
Отправлено: 12 Марта, 2008 - 02:56:19
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Цитата:
Первое. Что за дебильные имена столбцов БД? Почему нельзя заюзать нормальные слова (id, title, text)?

Заюзаю это просто первый раз пишу для теста.. Подмигивание
Цитата:
Второе. Не в коем случае нельзя загружать всё из базы данных в PHP-скрипт и средствами PHP производить фильтрацию! Во-первых, когда у тебя будет несколько тысяч записей, всё станет страшно тормозить; во-вторых, теряются все преимущества от использования базы данных; в третьих, лишний трафик между PHP-машиной и сервером MySQL; и т. д. и т. д. и т. д.

Кажется я понял в каком случае я буду использовать мой ариант...
при построении таблицы! Подмигивание
Цитата:
Третье.У тебя для каждой полученной строки из базы выполняется проверка, и в случае неудачи выводится сообщение "404 - нет такой записи в бд". Соответственно, когда у тебя будет 10 000 записей, будет 9 999 раз написано "404" и только один - то, что надо. Причина? См. второй пункт. Извлекай из базы только то, что действительно нужно использовать. Вместо твоего условия должна быть проверка на то, извлеклось ли хоть что-то (mysql_num_rows($sql) != 0).

Да точно так.. я уже увидел. Улыбка
Цитата:
Червёртое.
Это всё были общеидейные замечания. А ошибка в твоём случае в том, что данные извлекаются в переменную $strings (строка 14), а проверяется значение переменной $tablerows (строки 16, 18).

Спасибо! Растерялся
 
 Top
Systemnik Администратор
Отправлено: 12 Марта, 2008 - 03:09:29
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Вот выложен поправленный код:

CODE:
<?php
// Информация для досутпа к бд MySQL
$dbserver = "localhost"; // Имя сервера
$dbuser = "$$$$"; // Имя пользователя
$dbpasswd = "$$$$$"; // Пароль
$dbname = "$$$$$"; // Имя базы данных

// Основые запросы для начала работы с бд
@mysql_connect($dbserver,$dbuser,$dbpasswd);
@mysql_select_db($dbname);

// Работа с генерацией страницы засчет базы данных
$sql = @mysql_query("SELECT * FROM site_stranichki WHERE `id` = " . (int)$_GET['page'] . " LIMIT 1");
while($strings = @mysql_fetch_row($sql))
{
echo($strings[1]);
}

@mysql_close($db);
?>


Вот поправленый дамп:
CODE:

CREATE TABLE IF NOT EXISTS `site_stranichki` (
`id` char(1) NOT NULL default '',
`title` text NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


INSERT INTO `site_stranichki` (`id`, `title`, `text`) VALUES
('1', 'Chetatam 1', 'Polnii text'),
('2', 'Chetatam 2', 'Polnii text 2');


У меня остались неболшие вопросы.. теперь как сделать так.. что бы если в бд нужной информации не находилось выскакивал текст 404 не найдено

Кстати пробовал так:

CODE:
<?php
// Информация для досутпа к бд MySQL
$dbserver = "localhost"; // Имя сервера
$dbuser = "$$$$"; // Имя пользователя
$dbpasswd = "$$$$$"; // Пароль
$dbname = "$$$$$"; // Имя базы данных

// Основые запросы для начала работы с бд
@mysql_connect($dbserver,$dbuser,$dbpasswd);
@mysql_select_db($dbname);

// Работа с генерацией страницы засчет базы данных
$sql = @mysql_query("SELECT * FROM site_stranichki WHERE `id` = " . (int)$_GET['page'] . " LIMIT 1");
while($strings = @mysql_fetch_row($sql))
{
if($_GET['page'] == $strings[0])
{
echo($strings[1]);
} else {
echo("Данной страницы не существует.");
}
}

@mysql_close($db);
?>


ноль эмоции Огорчение

(Отредактировано автором: 12 Марта, 2008 - 03:16:06)

 
 Top
Ray Wen Администратор
Отправлено: 12 Марта, 2008 - 04:19:52
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




Systemnik
if(count($sql)) - вполне достаточно чтобы узнать нашлось ли... Если там что-нибудь есть, то вернется 1...
 
 Top
Systemnik Администратор
Отправлено: 12 Марта, 2008 - 05:49:30
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




стоп спасибо я все понял а теперь можете поподробне о теории.. этот count()
когда работает где используется только ли в мускуле? Растерялся



CODE:
while($strings = @mysql_fetch_row($sql))
{
if(count($sql) == true)
{
echo($strings[1]);
} else {
echo("Данной страницы не существует.");
}
}

ноль эмоции.. я пробовал 1 и true все равно true=1 false=0 Подмигивание

(Отредактировано автором: 12 Марта, 2008 - 05:52:22)

 
 Top
Ray Wen Администратор
Отправлено: 12 Марта, 2008 - 06:13:39
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




Systemnik
Где ты видел в моем примере == true ???!

http://ru2.php.net/manual/ru/function.count.php

В условии любое значение не равное 0 является true...


В данном случае можешь вообще создать условие if(mysql_num_rows($sql)) (без всяких while, вообще не пойму к чему это здесь), а потом уже если есть строка, то работать с ней, если нету, то else...
 
 Top
Systemnik Администратор
Отправлено: 12 Марта, 2008 - 09:21:38
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Ray Wen пишет:
Где ты видел в моем примере == true ???!

Смотрите, вы сказали:
Ray Wen пишет:
if(count($sql)) - вполне достаточно чтобы узнать нашлось ли... Если там что-нибудь есть, то вернется 1...

Следовательно если возвращаемое значение 1 = true то функция выполнилась успешно вот я и проверяю
Systemnik пишет:
if(count($sql) == true)

... простите если что не так понял.. я начинающий программер.. многово незнаю Растерялся Растерялся
Вот так сделал понял почему тут ненадо while
CODE:
// Работа с генерацией страницы засчет базы данных
$sql = @mysql_query("SELECT * FROM site_stranichki WHERE `id` = " . (int)$_GET['page'] . " LIMIT 1");
$strings = @mysql_fetch_row($sql);
if(count($sql))
{
echo($strings[1]);
} else {
echo("Данной страницы не существует.");
}


ноль эмоции.. а естати объясните уважаемый Furax что означает
CODE:

" . (int)$_GET['page'] . "

зачем эти точни и что такое (int)???

(Отредактировано автором: 12 Марта, 2008 - 09:22:31)

 
 Top
Ray Wen Администратор
Отправлено: 12 Марта, 2008 - 10:29:37
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




Systemnik
Тут я тебя в заблуждение ввел, привык к запросам через функции Joomla, а там результат сразу возвращается... count($strings) в твоем случае...
 
 Top
Systemnik Администратор
Отправлено: 12 Марта, 2008 - 10:34:24
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




CODE:
$sql = @mysql_query("SELECT * FROM site_stranichki WHERE `id` = " . (int)$_GET['page'] . " LIMIT 1");
$strings = @mysql_fetch_row($sql);
if(count($strings))
{
echo($strings[1]);
} else {
echo("Данной страницы не существует.");
}

ноль эмоции

Furax для чего написано
CODE:
" . (int)$_GET['page'] . "

а не
CODE:
"$_GET['page']"

??

(Отредактировано автором: 12 Марта, 2008 - 10:37:41)

 
 Top
Страниц (6): [1] 2 3 4 5 6 »
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0503]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33