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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Условие выборки из базы
 
 автор: Leg1oneR   (10.08.2009 в 10:48)   письмо автору
 
 

Добрый день форумчане. Есть скрипт который открывает .txt Файл с ценами и заносит их в базу MySQL. у каждого товара теперь есть плюс ко всему и цена в базе. Таблица products, поле price

В разметку HTML из базы посредствам php кода выдирается информация. Уже какой день бьюсь над условием но не могу понять. Условие нужно такое:

Если у товара в поле price есть значение, т.е там не пусто то выводить цену (Цена: ... ), если пусто, то выводить (Цена: по запросу)
Очень нужна Ваша помощь, заранее большое спасибо!


<table cellpadding="0" cellspacing="0" class="bookmark">
<tr>
<td valign="top" style="background: url(/block_hd_tp_bg_l.gif) left #bdd1e6 repeat-y;"><img src="/tp_bg_l.gif" width="17" height="9" style="border-top:1px solid #A3B5C6;" alt=""></td>
<td class="block_hd_tp">
<div class="BookmarkName">
<h1><? print stripslashes($res->name); ?></h1>
</div>
<div class="BookmarkDate">
Артикул: <?=$res->number?>

< условие для выдирания цены из базы >
</div>
</td>
<td valign="top" style="background: url(/block_hd_tp_bg_r.gif) right #bdd1e6 repeat-y"><img src="/block_hd_tp_bg_r.gif" width="17" height="9" style="border-top:1px solid #A3B5C6;" alt=""></td>
</tr>
<tr valign="bottom">
<td style="background: url(/block_bd_bg_l.gif) left #ebebeb repeat-y; border-bottom: 1px solid #c8c8c8;">&nbsp;</td>
<td class="block_bd">
<div style="padding: 16px;">
<div style="height:305px;"><img src="/products/<?=$res->photo1?>" name="picture" width="508" height="288" alt="<?=stripslashes($res->alt)?>" ></div>
</div>
</td>
<td style="background: url(/block_bd_bg_r.gif) right #ebebeb repeat-y; border-bottom: 1px solid #c8c8c8;">&nbsp;</td>
</tr>
</table>

  Ответить  
 
 автор: t3ma   (10.08.2009 в 11:05)   письмо автору
 
   для: Leg1oneR   (10.08.2009 в 10:48)
 

ну и чего вы тут выложили ? неодного условия я здесь не вижу.. где SQL запросы ??

что у Вас таблица products из одного поля price состоит чтоли ???


примрено показываю как делается:


<?php
$sql 
= @mysql_query("SELECT * FROM products");
  
$products = @mysql_fetch_array($sql);

if (!empty(
$products['price']))
echo 
"Цена:" .$products['price'];

?>

  Ответить  
 
 автор: Leg1oneR   (10.08.2009 в 11:34)   письмо автору
 
   для: t3ma   (10.08.2009 в 11:05)
 

t3ma, пасиба большое, я правда немного ошибся в описании, вот щас подправил.
Код который написали, сработал все ок, но внужен цикл видимо для переборки по базе)

SQL запросы в самом скрипте. Я это кусок из php файла, который выбирает инфу из базы.

Если у товара в поле price есть значение, т.е там не пусто то выводить цену (Цена: ... ), если пусто, то выводить (Цена: по запросу)

  Ответить  
 
 автор: t3ma   (10.08.2009 в 12:56)   письмо автору
 
   для: Leg1oneR   (10.08.2009 в 11:34)
 

как-нибудь так


<?php 
$sql 
= @mysql_query("SELECT * FROM products"); 
$count 0;
while (
$products = @mysql_fetch_array($sql))
{

if (!empty(
$products['price'])) 
echo 
"Цена:" .$products['price']; 
else
echo 
"Цена: по запросу";

$count++;
}

?>

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 13:12)   письмо автору
 
   для: t3ma   (10.08.2009 в 12:56)
 

Вот только тут бы, имхо, было логичнее использовать
if (isset($products['price'])) 

Все-таки здесь нам интересно присутствие цены, а не ее не отсутсвие %)

  Ответить  
 
 автор: Trianon   (10.08.2009 в 13:19)   письмо автору
 
   для: neadekvat   (10.08.2009 в 13:12)
 

Абсолютно верное замечание.
null в поле строки результата отлавливает именно isset()

с другой стороны, эту нагрузку можно было возложить на сторону СУБД.
См. COALESCE()

  Ответить  
 
 автор: Leg1oneR   (10.08.2009 в 13:46)   письмо автору
 
   для: t3ma   (10.08.2009 в 12:56)
 

скрипт работает, но к сожалению выводит все записи для каждого продукта..
Я не силен конечно, но может как нить так:



<?php 
$sql 
= @mysql_query("SELECT * FROM products"); 
$count 0;
while (
$products = @mysql_fetch_array($sql))
{
echo 
"Цена:" .$products['price']; 
if (empty(
$products['price'])) 
echo 
"Цена: по запросу"

$count++;
}


  Ответить  
 
 автор: Trianon   (10.08.2009 в 13:51)   письмо автору
 
   для: Leg1oneR   (10.08.2009 в 13:46)
 

привели бы чтоли фрагмент дампа таблицы...
со строками разных типов, само собой.

  Ответить  
 
 автор: t3ma   (10.08.2009 в 13:55)   письмо автору
 
   для: Leg1oneR   (10.08.2009 в 13:46)
 

<?php  
// pole - это поле в таблице где содержится нименование товара
// $name - это наименование товара
$sql mysql_query("SELECT price FROM products WHERE pole='$name'");  

if (
mysql_num_rows() == 1)   {
$price mysql_result($sql0);
echo 
"Цена:" .$price;
}
else
echo 
"Цена: по запросу";  
?>

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 13:57)   письмо автору
 
   для: Leg1oneR   (10.08.2009 в 13:46)
 

а зачем тут $count++; если он нигде не используется?

  Ответить  
 
 автор: t3ma   (10.08.2009 в 14:01)   письмо автору
 
   для: neadekvat   (10.08.2009 в 13:57)
 

+1)) ет я ошибся)

  Ответить  
 
 автор: Trianon   (10.08.2009 в 13:12)   письмо автору
 
   для: t3ma   (10.08.2009 в 11:05)
 

1. Зачем собаки перед именами функций?
2. Где проверки успешности выполнения запроса?

  Ответить  
 
 автор: t3ma   (10.08.2009 в 13:40)   письмо автору
 
   для: Trianon   (10.08.2009 в 13:12)
 

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

  Ответить  
 
 автор: Trianon   (10.08.2009 в 13:41)   письмо автору
 
   для: t3ma   (10.08.2009 в 13:40)
 

>@ - принудительно отключает ошибку при выполнении

Чушь.
Ошибку невозможно отключить.


>хм.. ну а проверку если надо то думаю сами сделают, этож необязательно

И полбеды, что Вы так считаете.
Беда в том, что как следствие Вы пытаетесь давать такие советы другим.
А люди не виноваты, между прочим.

  Ответить  
 
 автор: neadekvat   (10.08.2009 в 13:44)   письмо автору
 
   для: Trianon   (10.08.2009 в 13:41)
 

Нуу, зато можно её заставить не показываться нам на глаза.
Будет белый лист, а нифига не работает. Кто виноват? php.. А кто-то просто в названии таблицы ошибся.

  Ответить  
 
 автор: Trianon   (10.08.2009 в 13:45)   письмо автору
 
   для: neadekvat   (10.08.2009 в 13:44)
 

Я о том и говорю.
Глаза зажмурил - и как в танке.

  Ответить  
Rambler's Top100
вверх

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