как я могу получить это, если заявления работают - PullRequest
0 голосов
/ 23 мая 2011

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

function homethumb(){ $this->count; $i = 0;
   while($row = mysqli_fetch_object($this->result))
   {
      $this->count++; $i++;
      if($i == 1){echo '<div class="gal1">';}
      echo '<a href="portfolio.php?id=' . $row->id . '"> <div class="gal"><img src="img/' . $row->thumb2 . '.jpg"></div></a>';
      if($i == 2){
      echo '</div> <!-- gal1 -->';
      $i=0;
      } 
   }
}

Здесь я получаю все из базы данных (выберите * из портфолио), но в моем портфолио есть веб-сайты, демонстрации и графика; поэтому я хотел получить только данные, где category = "web" из приведенного выше кода, поэтому я попробовал это:

function homethumb(){ $this->count; $i = 0;
   while($row = mysqli_fetch_object($this->result))
   {
      if($row->category = "web"){
               $this->count++; $i++;
         if($i == 1){echo '<div class="gal1">';}
         echo '<a href="portfolio.php?id=' . $row->id . '"> <div class="gal"><img src="img/' . $row->thumb2 . '.jpg"></div></a>';
         if($i == 2){
         echo '</div> <!-- gal1 -->';
         $i=0;
         } 
      }
   }
}

теперь вложенные операторы if не генерируют нужные мне div, как мне заставить это работать

спасибо за вашу помощь

Ответы [ 5 ]

2 голосов
/ 23 мая 2011

Вам просто нужно иметь == вместо =?

if($row->category == "web"){

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

2 голосов
/ 23 мая 2011

Я не вижу ваш SQL на основе вашего вопроса, но вы можете просто изменить свой запрос SELECT, включив в него WHERE category="web"

Таким образом, вы выбираете только те строки, которые нужны , вместо циклического перебора каждой строки в этой таблице.

Кроме того, похоже, что вы используете присваивание = вместо сравнения == для оператора if.

1 голос
/ 23 мая 2011

1) Вы пропустили знак равенства:

if($row->category = "web") => if($row->category == "web")

Или еще лучше

if($row->category === "web")

2) Если вы хотите получить только поля с определенным полем category, вы можете просто изменить свой запрос:

[rest of your query] WHERE category="web"

0 голосов
/ 23 мая 2011

1) Измените свой запрос, чтобы он содержал предложение WHERE category = "web"

2) У вас есть оператор присваивания в предложении if (=), когда вам нужен оператор равенства (==)

0 голосов
/ 23 мая 2011

ОК, должно получиться так, при условии, что поля отсортированы следующим образом

ID, категория, веб-сайт, thumb2, демо, графика

function homethumb(){ $this->count; $i = 0;
   while($row = mysqli_fetch_object($this->result))
   {
      if($row[1] == "web"){
               $this->count++; $i++;
         if($i == 1){echo '<div class="gal1">';}
         echo '<a href="portfolio.php?id=' . $row[0] . '"> <div class="gal"><img src="img/' . $row[3] . '.jpg"></div></a>';
         if($i == 2){
         echo '</div> <!-- gal1 -->';
         $i=0;
         } 
      }
   }
}

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

if($row[1] = "web")
{
    echo '<div class="gal1">';
    echo '<a href="portfolio.php?id=' . $row[0] . '"> <div class="gal"><img src="img/' . $row[3] . '.jpg"></div></a>';
    echo '</div> <!-- gal1 -->';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...