Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Разные параметры выборки одним запросом

Сообщения:  [1-10]   [11-11] 

 
 автор: tvv123456   (29.09.2009 в 02:38)   письмо автору
 
   для: Trianon   (29.09.2009 в 02:24)
 

Да не, тут я код просто так для примера написал а так все будет чуток по другому и кстати все переменные которые могут содержать тольок числа, я проверяю на присутствие не цифр прежде чем сунуть их в sql

  Ответить  
 
 автор: Trianon   (29.09.2009 в 02:24)   письмо автору
 
   для: tvv123456   (29.09.2009 в 02:08)
 

>а переменную $list вот так определить можно?:
>$list=implode(',', $_POST['cena'])

Так - нельзя. SQL-инъекция чистом виде.

передавать id в переменной cena .... про луч анального поноса я надысь уже писал...
впрочем, у Вас вся таблица так называется... так что ... махнул рукой.

  Ответить  
 
 автор: tvv123456   (29.09.2009 в 02:16)   письмо автору
 
   для: Trianon   (29.09.2009 в 02:14)
 

Мда признаюсь: я туповат что-то стал
СПАСИБО!

  Ответить  
 
 автор: Trianon   (29.09.2009 в 02:14)   письмо автору
 
   для: tvv123456   (29.09.2009 в 02:13)
 

SELECT * FROM cena WHERE id IN ($list)
-это один запрос.

  Ответить  
 
 автор: tvv123456   (29.09.2009 в 02:13)   письмо автору
 
   для: Trianon   (29.09.2009 в 02:10)
 

Я если честно не могу понять как именно мне сократить количество запросов к базе?

  Ответить  
 
 автор: Trianon   (29.09.2009 в 02:10)   письмо автору
 
   для: tvv123456   (29.09.2009 в 02:08)
 

Я дописал там.

  Ответить  
 
 автор: tvv123456   (29.09.2009 в 02:08)   письмо автору
 
   для: Trianon   (29.09.2009 в 02:01)
 

Ну сумму мы посчитали а как насчет написать имена услуг?

...
echo $row['name']."<br>"; 
...

а переменную $list вот так определить можно?:

$list=implode(',', $_POST['cena'])

  Ответить  
 
 автор: Trianon   (29.09.2009 в 02:01)   письмо автору
 
   для: tvv123456   (29.09.2009 в 01:57)
 

Все еще непонятно, зачем выносить все эти вычисления в php, когда их в sql можно выполнить одним запросом.

SELECT SUM(cena) FROM cena WHERE id IN ($list) 


Хорошо, если нужны имена, можно вынести суммирование на php-уровень.
Но зачем гонять столько запросов все равно неясно.

За код do_while без должных причин здесь стало традицией подвергать оскоплению обструкции.

  Ответить  
 
 автор: tvv123456   (29.09.2009 в 01:57)   письмо автору
 
   для: Trianon   (29.09.2009 в 01:41)
 

мне надо организовать следующий момент:
Вот из такой формочки мы получаем данные, которые нужно обработать:

<? 
$result
=mysql_query("select * from cena order by cat",$db); 
$cat=0

while(
$row=mysql_fetch_array($result)){ 
      if(
$cat!=$row['cat']){ 
           if(
$cat!=0) echo '</p>'
           
$cat=$row['cat']; 
           echo
'<p><font size="+1">'.$row['tema'].'</font><br />'
             }
      echo
'<font style="margin-left:40px;"><input type="Checkbox" name="cena[]"  value="'.$row['id'].'" />'$row['name'].'('.$row['cena'].' руб.)</font><br />';
        

echo 
"<br><br>
<input name=\"cena_but\" type=\"submit\" value=\"Подсчитать\" />
</form>"
;
?>


Далее нужно получается что-то типа

<? $a=0;
    
$sum=0;
do
{
$id $POST['cena'][$a];
$result=mysql_query("select * from cena where id='$id'",$db); //вытащить за цикл эту штуку мешает условие id='$id'
$row=mysql_fetch_array($result);
echo 
$row[name]."<br>";
$sum=$sum+$_POST['cena'][$a];
$a++;
}
while(
$a<100);
                
   echo 
$sum;
?>

Все бы ничего, но меня не устраивает, что будет выполнено столько запросов к базе, вот я и задал свой вопрос: вытаскиваем все одним запросом а потом уже из $result вытягиваем в цикле нужные мне поля;

  Ответить  
 
 автор: Trianon   (29.09.2009 в 01:41)   письмо автору
 
   для: tvv123456   (29.09.2009 в 01:34)
 

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

php, по эффективности управления данными, SQLю в подметки не годится.

  Ответить  

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования