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

Форум PHP

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

 

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

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

тема: Замена изображений
 
 автор: chexov   (20.04.2010 в 02:45)   письмо автору
 
 

Есть обыкновенный вывод изображений по 6 шт. на страницу


<?
$result 
mysql_query("SELECT * FROM `table` ORDER BY RAND() DESC LIMIT 6"); 
$allmysql_num_rows($result);
if (
$all>0)
  {
  while(
$arrmysql_fetch_assoc($result))
    {
    echo 
"<a href='ссылка на картинку'  title='".$arr['name']."' ><img src='ссылка на картинку' ></a>";
    }
  }
?>

Впорос:
Как производить замену отсутствующей картинки на картинку 1.jpeg, если в БД картинок меньше 6

т.е ряд из 6 картинок должен отображать существующие картинки в БД и если их меньше 6 то дополнять нехватающие изображения, картинкой 1.jpeg

делаю так:


<?
$result 
mysql_query("SELECT * FROM `table` ORDER BY RAND() DESC LIMIT 6"); 
$allmysql_num_rows($result);
while(
$arrmysql_fetch_assoc($result))
  {
  if (
$all>0)
    {
    echo 
"<a href='ссылка на картинку'  title='".$arr['name']."' ><img src='ссылка на картинку' ></a>";
    }
  if (
$all<=6
   {
   for (
$i=1$i<=(6-$all); $i++) 
      {
      echo 
"<img src='1.jpeg' >";
      }
    }
  }

?>

НО! если картинка меньше по размерам чем 1.jpeg то 1.jpeg видно....как произвести замену подскажите

  Ответить  
 
 автор: cheops   (20.04.2010 в 02:53)   письмо автору
 
   для: chexov   (20.04.2010 в 02:45)
 

Хм... может строки
<?php
echo "<a href='ссылка на картинку'  title='".$arr['name']."' ><img src='ссылка на картинку' ></a>";
?>

поместить в массив и уже от количества элементов в нём отталкиваться? Это позволит исключить вложенные циклы.

  Ответить  
 
 автор: chexov   (20.04.2010 в 02:57)   письмо автору
 
   для: cheops   (20.04.2010 в 02:53)
 


<? 
$result 
mysql_query("SELECT * FROM `table` ORDER BY RAND() DESC LIMIT 6");  
$allmysql_num_rows($result); 
while(
$arrmysql_fetch_assoc($result)) 
  { 
  
$array[] = "<a href='ссылка на картинку'  title='".$arr['name']."' ><img src='ссылка на картинку' ></a>"
  for (
$i=0$i<>count($array); $i++)
    {
    
//????????????
    
}
  } 
?>


А дальше? что-то не соображу как подставлять 1.jpeg и от циклов вложенных не избавился....

  Ответить  
 
 автор: cheops   (20.04.2010 в 03:03)   письмо автору
 
   для: chexov   (20.04.2010 в 02:57)
 

Я имею в виду вот что
<?  
$result 
mysql_query("SELECT * FROM `table` ORDER BY RAND() DESC LIMIT 6");   
$allmysql_num_rows($result);  
while(
$arrmysql_fetch_assoc($result))  
{  
    
$array[] = "<a href='ссылка на картинку'  title='".$arr['name']."' ><img src='ссылка на картинку' ></a>";  
}  
for (
$i=0$i<6$i++) 

     if(isset(
$array[$i])) echo $array[$i];
     else echo 
"<img src='1.jpg' >";

?>

  Ответить  
 
 автор: Trianon   (20.04.2010 в 03:24)   письмо автору
 
   для: cheops   (20.04.2010 в 03:03)
 

не нужен тут массив... да и цикл второй, по боьшому счету, тоже.
<?  

$result 
mysql_query("SELECT * FROM `table` ORDER BY RAND() DESC LIMIT" . ($n 6) );   
for(; 
$arr mysql_fetch_assoc($result); --$n)  
    echo 
"<a href='ссылка на картинку'  title='".$arr['name']."' ><img src='ссылка на картинку' ></a>";  

echo 
str_repeat("<img src='1.jpg' >"$n);

  Ответить  
 
 автор: chexov   (20.04.2010 в 04:32)   письмо автору
 
   для: Trianon   (20.04.2010 в 03:24)
 

Вариант Хеопса подошел , но возникла потребность изменить условие вывода

т.е выводится также 6 картинок на страницу, но выборка из БД осуществляется без LIMIT (всех записей), так вот, при таком условии

for ($i=0; $i<6; $i++) 


не работает, выводит только до 6! а нужно: только если меньше 6, заменять недостающие картинкой 1.jpeg, а если больше то вывод всех, по 6 на странице

  Ответить  
 
 автор: sim5   (20.04.2010 в 05:45)   письмо автору
 
   для: chexov   (20.04.2010 в 04:32)
 

Если нужно выводить по 6, зачем тогда выбирать из базы все?
Почему вы уверены, что может быть 5, а не 4, 3...?
В хвост массива всегда можно добавить его копию, и вывести.

  Ответить  
 
 автор: chexov   (20.04.2010 в 07:00)   письмо автору
 
   для: sim5   (20.04.2010 в 05:45)
 

Сделал так, если есть вариант попроще предлагайте:)

<?
if ($all<=6)  
  {
  for (
$i=0$i<6$i++)  
    {  
    if(isset(
$array[$i])) echo $array[$i]; 
    else echo 
"<img src='1.jpg' >"
    }  
  }
else 
  {
  for (
$i=0$i<$all$i++)  
    {  
    if(isset(
$array[$i])) echo $array[$i]; 
    else echo 
"<img src='1.jpg' >"
    }  
  }
?>

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

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