[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод
DmitryOpalev
Здравствйте!
У меня есть код, где по таблице происходит поиск, и вывод результатов:

$query = mysql_query("SELECT * FROM ds WHERE cost < 1500"); //ds - имя таблицы, cost - имя столбца и цена
$query; //Сам вывод

Разумеется, код не статический.
Ошибок mysql_error() не выдает, php тоже. Данные, меньшие 1500 есть, что делать?
P.S. если нужно дам полный код.



Спустя 16 минут, 15 секунд (25.09.2010 - 16:53) sergeiss написал(а):
Ты показывай полный код, относящийся к этой части. "Разумеется, код не статический" - то есть, у тебя в скрипте другой код? Так ты его и показывай!!!

Спустя 13 минут, 25 секунд (25.09.2010 - 17:06) DmitryOpalev написал(а):
<?php
$link = mysql_connect("localhost","root","");
$link;
$cost_max = $_POST['cost_max']; //Максимальная цена
mysql_select_db('katalog', $link); //Выбор Базы данных
mysql_query("SELECT * FROM ds WHERE cost < 1500"); //ds - имя таблицы, cost - имя столбца
echo "По цене до <b>$cost_max</b> р. получен следующий результат:";
$query;
mysql_error();
?>

Спустя 57 минут, 6 секунд (25.09.2010 - 18:03) sergeiss написал(а):
Очень странный код, мало похожий на тот, что был в первом сообщении темы... И явно неправильный. Делаются действия какие-то, результаты никуда не назначаются. Зачем-то "просто так" пишутся переменные...
Короче говоря, ты можешь объяснить, что делается в каждой строке? Когда сумеешь, то сам поймешь, что надо изменить smile.gif

Спустя 1 час, 15 минут, 17 секунд (25.09.2010 - 19:18) DmitryOpalev написал(а):
Да, действительно были ошибки. Вот вроде исправил:
<?php
$link = mysql_connect("localhost","root",""); //Подключение
$link;
$cost_max = $_POST['cost_max']; //Максимальная цена, передается из формы
mysql_select_db("katalog", $link); //Выбор Базы данных
$query = mysql_query("SELECT * FROM ds WHERE cost < 1500"); //ds - имя таблицы, cost - имя столбца
echo "По цене до <b>$cost_max</b> р. получен следующий результат:";
$query;
mysql_error();
?>

Данные всеравно не вывелись.
Суть в том, что и ошибок не выводиться, и кроме строки echo на экран тоже баольше ничего не выводиться, вот я и подумал, что я нерпавильно достаю данные из MySQL. Так что же делать? У вас правильный варант?

Спустя 22 минуты, 31 секунда (25.09.2010 - 19:41) Mizka написал(а):
$link = mysql_connect("localhost","root",""); //Подключение
mysql_select_db("katalog", $link); //Выбор Базы данных
$cost_max = !empty($_POST['cost_max']) ? $_POST['cost_max'] : 1500;; //Максимальная цена, передается из формы
$query = mysql_query("SELECT * FROM ds WHERE cost < '".intval($cost_max)."'"); //ds - имя таблицы, cost - имя столбца
echo 'По цене до <b>'.$cost_max.'</b> р. получен следующий результат:';
while($data = mysql_fetch_assoc($query)){
// http://php.net/manual/en/function.mysql-fetch-assoc.php
}

Спустя 7 минут, 20 секунд (25.09.2010 - 19:48) DmitryOpalev написал(а):
Объясните пожалуйста строчку
 !empty($_POST['cost_max']) ? $_POST['cost_max'] : 1500;

Если переменная не передана, переменная будет делиться на 1500... или как?

Спустя 7 минут, 23 секунды (25.09.2010 - 19:56) Mizka написал(а):
Цитата
Если переменная не передана, переменная будет делиться на 1500... или как?

она будет = 1500... там просто непонятно зачем у вас эта 1500 в коде

Спустя 14 минут, 5 секунд (25.09.2010 - 20:10) twin написал(а):
DmitryOpalev
Цитата
Объясните пожалуйста строчку

Спустя 14 минут, 48 секунд (25.09.2010 - 20:25) aH6y написал(а):
как-то так:
<?php
$link = mysql_connect("localhost","root",""); //Подключение
$cost_max = $_POST['cost_max']; //Максимальная цена, передается из формы
mysql_select_db("katalog", $link); //Выбор Базы данных
$query = mysql_query("SELECT * FROM ds WHERE cost < 1500"); //ds - имя таблицы, cost - имя столбца
while ($row = mysql_fetch_assoc($query))
{
echo "По цене до <b>$cost_max</b> р. получен следующий результат: ".$row['cost']."<br>";
}
?>


хошь пиши в icq - помогу)

Спустя 1 минута, 55 секунд (25.09.2010 - 20:27) mad/crs написал(а):
И наверное для надёжности (лучше перебздеть... smile.gif ) делать не так:

$cost_max = !empty($_POST['cost_max']) ? $_POST['cost_max'] : 1500;


а так:

$cost_max = !empty($_POST['cost_max']) ? 0 + $_POST['cost_max'] : 1500;


или как-то по другому страховатся если ПОСТ переменная не число а квери-вражеское smile.gif

Спустя 2 минуты, 58 секунд (25.09.2010 - 20:29) twin написал(а):
Цитата
или как-то по другому страховатся

именно.

Спустя 2 минуты, 34 секунды (25.09.2010 - 20:32) mad/crs написал(а):
а чем плох вариант с :
0 + $_POST['cost_max']


просто ради любопытства спрашиваю smile.gif

Спустя 2 минуты, 34 секунды (25.09.2010 - 20:35) sergeiss написал(а):
DmitryOpalev - у тебя в коде куча ошибок. Поэтому иди сюда http://phpforum.ru/index.php?showtopic=21916 и читай внимательно.

Спустя 3 минуты, 28 секунд (25.09.2010 - 20:38) twin написал(а):
Цитата
а чем плох вариант с :

1. неоднозначностью
2. несвойственностью
3. скоростью.

По идее - наплевать на принципы, но сушить носки феном...

$cost_max = !empty($_POST['cost_max']) ? (int)$_POST['cost_max'] : 1500;

Спустя 11 минут, 42 секунды (25.09.2010 - 20:50) mad/crs написал(а):
Ммм а если данные могут быть BIGINT? (int) убъёт же их нафик, нет?
Про скорость тогда наверное intval($_POST[]) будет быстрей или тоже нет?

Спустя 31 минута, 31 секунда (25.09.2010 - 21:21) Mizka написал(а):
Цитата
Ммм а если данные могут быть BIGINT? (int) убъёт же их нафик, нет?

в php нету типов таких как BIGINT, long, etc... или о чем ты вообще говоришь

Спустя 20 минут, 58 секунд (25.09.2010 - 21:42) inpost написал(а):
mad/crs
(int) выполняет скрипт в 2,2-2,3 раза быстрее (в чистом поле), чем intval.

Спустя 19 минут, 29 секунд (25.09.2010 - 22:02) SlavaFr написал(а):
к стате mysql_error показывает ошибки когда их в output посылают. например при помощи echo

Спустя 9 минут, 35 секунд (25.09.2010 - 22:11) mad/crs написал(а):
Цитата
в php нету типов таких как BIGINT, long, etc... или о чем ты вообще говоришь

ну может и нету, но попробуйте для проверки получить из мускула BIGINT и "обкусить" его через (int). Увидите что получится smile.gif

Цитата
(int) выполняет скрипт в 2,2-2,3 раза быстрее (в чистом поле), чем intval.

ну нам по идее чистое поле не показатель, мы же ждём данных, если я правильно понял. хотя спасибо за ответ. интересно бенчмарки какие проводили самостоятельно или где в нэте нашли?

Спустя 41 минута, 40 секунд (25.09.2010 - 22:53) Mizka написал(а):
Цитата
ну может и нету, но попробуйте для проверки получить из мускула BIGINT и "обкусить" его через (int). Увидите что получится

обрежется до PHP_INT_MAX smile.gif можно разве что через sprintf попробовать привести к другому типу... вот к примеру:

<?php
$bigintMaxVal = '9223372036854775807';
echo (int)$bigintMaxVal.'</br>'; //2147483647
echo PHP_INT_MAX.'</br>'; //2147483647

echo sprintf("%f", $bigintMaxVal); //9223372036854775808.000000 странности флоата

Спустя 1 час, 42 минуты, 45 секунд (26.09.2010 - 00:36) mad/crs написал(а):
про "обкусывание" я и писал - в вопросе небыло указано на сколько большим может быть число поэтому и вариант с 0 + $_POST['..'] smile.gif

Спустя 6 минут, 19 секунд (26.09.2010 - 00:42) inpost написал(а):
mad/crs
Чистый, это имел ввиду, что на странице не было никаких других операций, которые могли нагрузить сервер + тестировал на сайте, который ещё не начал свою работу, а значит кроме меня никто более не нагружал мой сайт.
Я решил сам проверить и убедиться в результате. Как говорится, доверяй но проверяй:
<?php
$a = microtime(true);
for($i=0;$i<10000;$i++)
{
$text = "50";
$text = (integer)$text;
}
$final = microtime(true) - $a;
echo "<br>";
echo $final;
echo "<br>";
$a = microtime(true);
for($i=0;$i<10000;$i++)
{
$text = "50";
$text = (int)$text;
}
$final = microtime(true) - $a;
echo "<br>";
echo $final;
echo "<br>";

$a = microtime(true);
for($i=0;$i<10000;$i++)
{
$text = "50";
$text = intval($text);
}
$final = microtime(true) - $a;
echo "<br>";
echo $final;
?>


Результат на этой странице: http://inpost.dp.ua/3/testtime.php
Как видишь, последний результат - это intval.

Спустя 9 часов, 16 минут, 6 секунд (26.09.2010 - 09:58) Mizka написал(а):
Цитата
про "обкусывание" я и писал - в вопросе небыло указано на сколько большим может быть число поэтому и вариант с 0 + $_POST['..']

ну а чем это поможет? к стать результат вообще странный:

$bigintMaxVal = '9223372036854775807';
$test= intval(0 + $bigintMaxVal);
$test2 = 0 + $bigintMaxVal;
echo (int)$test.'</br>'; //0
echo (int)$test2.'</br>'; //0
можно использовать (integer) оно больше чем (int)...но все ровно не то...

Спустя 22 минуты, 59 секунд (26.09.2010 - 10:21) Mizka написал(а):
Цитата
mad/crs
(int) выполняет скрипт в 2,2-2,3 раза быстрее (в чистом поле), чем intval.

(int) это просто кастинг переменной к другому типу, а intval это функция... логично, что второе работает медленнее.
по поводу результатов в том числе и +0:

http://hakre.wordpress.com/2010/05/13/php-casting-vs-intval/

Спустя 56 минут, 24 секунды (26.09.2010 - 11:18) inpost написал(а):
3  '42'                    : 0.087305       / 0.469350             537%  

Это показатели с того сайта. Что они дурят, или сервер у них фиговый? Они проверяли точно так же как делал я, но у меня разница в 2,2 раза, у них в 6,5. Может там черепаший сервер или беда в вордпрессе...

Спустя 8 минут, 6 секунд (26.09.2010 - 11:26) Mizka написал(а):
Цитата
This has been done with 100 000 iterations each

а у тебя 10 000... попробуй у себя запустить скрипт и сравни результаты...

Спустя 6 минут, 13 секунд (26.09.2010 - 11:32) Mizka написал(а):
да и возможно он это у себя локально делал на компе... а не на полноценном сервере:)


_____________
Курс валют
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.