php - 使用foreach进行查询优化?

标签 php html mysql

我针对 IF 进行了 3 个不同的查询($rs1、$rs2、$rs3)。它会在数据库中查找指定产品是否分配有任何图像。

问题是我不知道如何仅使用 1 个查询和 1 个 foreach 来优化所有这些。

如果有人可以帮助我,这是代码:

<?php use_helper("StaticUrl");?>
<?php
$rs1  = Doctrine_Query::create()->from("Product")
                          ->select("photo1")
                          ->where("title = ?", $product)
                          ->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);

$rs2  = Doctrine_Query::create()->from("Product")
                          ->select("photo2")
                          ->where("title = ?", $product)
                          ->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);

$rs3  = Doctrine_Query::create()->from("Product")
                          ->select("photo3")
                          ->where("title = ?", $product)
                          ->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);

                          ?>


<div class="product_image">
    <?php 
      $href = url_for($product->getRouteUrl(ESC_RAW));
      if ($sf_context->getActionName() == 'view')
    {
      $href = static_url_for($product->generatePhotoPath('large',ESC_RAW));
    }
    ?>

  <a <?php echo $sf_context->getActionName() == 'view' ? 'class="lightbox"' : ''; ?> href="<?php echo $href;?>" title="<?php echo $product; ?>">
        <img src="<?php echo  static_url_for($product->generatePhotoPath(ESC_RAW)); ?>" alt="<?php echo $product; ?>" data-zoom-image="<?php echo  static_url_for($product->generatePhotoPath('large',ESC_RAW)); ?>" id="zoomea<?php echo SITE_ID; ?>" />
  </a>


  <div id="gallery_01" style="position:absolute;">
    <?php if(!empty($rs1['photo1'])){ ?>

  <a href="#" data-image="<?php echo  static_url_for($product->generatePhotoPath("medium", 1, ESC_RAW)); ?>" data-zoom-image="<?php echo  static_url_for($product->generatePhotoPath("large", 1, ESC_RAW)); ?>" >
    <img class="zoomab" src="<?php echo  static_url_for($product->generatePhotoPath("small", 1, ESC_RAW)); ?>" width="50" height="60"/>
  </a>
    <?php } 

        if(!empty($rs2['photo2'])){
    ?>
  <a href="#" data-image="<?php echo  static_url_for($product->generatePhotoPath("medium", 2, ESC_RAW)); ?>" data-zoom-image="<?php echo  static_url_for($product->generatePhotoPath("large", 2, ESC_RAW)); ?>" >
    <img class="zoomab" src="<?php echo  static_url_for($product->generatePhotoPath("small", 2, ESC_RAW)); ?>" width="50" height="60" />
  </a>

    <?php } 

        if(!empty($rs3['photo3'])){
    ?>

  <a href="#" data-image="<?php echo  static_url_for($product->generatePhotoPath("medium", 3, ESC_RAW)); ?>" data-zoom-image="<?php echo  static_url_for($product->generatePhotoPath("large", 3, ESC_RAW)); ?>"  >
    <img class="zoomab" src="<?php echo  static_url_for($product->generatePhotoPath("small", 3, ESC_RAW)); ?>"  width="50" height="60" />
  </a>
<?php } ?>

</div>

</div>

<script src="/js/elevatezoom/jquery.elevatezoom.js" type="text/javascript"></script>

最佳答案

<?php use_helper("StaticUrl");?>
<?php
$rs1  = Doctrine_Query::create()->from("Product")
                          ->select("photo1,photo2,photo3")
                          ->where("title = ?", $product)
                          ->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
                          ?>


<div class="product_image">
    <?php 
      $href = url_for($product->getRouteUrl(ESC_RAW));
      if ($sf_context->getActionName() == 'view')
    {
      $href = static_url_for($product->generatePhotoPath('large',ESC_RAW));
    }
    ?>

  <a <?php echo $sf_context->getActionName() == 'view' ? 'class="lightbox"' : ''; ?> href="<?php echo $href;?>" title="<?php echo $product; ?>">
        <img src="<?php echo  static_url_for($product->generatePhotoPath(ESC_RAW)); ?>" alt="<?php echo $product; ?>" data-zoom-image="<?php echo  static_url_for($product->generatePhotoPath('large',ESC_RAW)); ?>" id="zoomea<?php echo SITE_ID; ?>" />
  </a>


  <div id="gallery_01" style="position:absolute;">
    <?php if(!empty($rs1['photo1'])){ ?>

  <a href="#" data-image="<?php echo  static_url_for($product->generatePhotoPath("medium", 1, ESC_RAW)); ?>" data-zoom-image="<?php echo  static_url_for($product->generatePhotoPath("large", 1, ESC_RAW)); ?>" >
    <img class="zoomab" src="<?php echo  static_url_for($product->generatePhotoPath("small", 1, ESC_RAW)); ?>" width="50" height="60"/>
  </a>
    <?php } 

        if(!empty($rs1['photo2'])){
    ?>
  <a href="#" data-image="<?php echo  static_url_for($product->generatePhotoPath("medium", 2, ESC_RAW)); ?>" data-zoom-image="<?php echo  static_url_for($product->generatePhotoPath("large", 2, ESC_RAW)); ?>" >
    <img class="zoomab" src="<?php echo  static_url_for($product->generatePhotoPath("small", 2, ESC_RAW)); ?>" width="50" height="60" />
  </a>

    <?php } 

        if(!empty($rs1['photo3'])){
    ?>

  <a href="#" data-image="<?php echo  static_url_for($product->generatePhotoPath("medium", 3, ESC_RAW)); ?>" data-zoom-image="<?php echo  static_url_for($product->generatePhotoPath("large", 3, ESC_RAW)); ?>"  >
    <img class="zoomab" src="<?php echo  static_url_for($product->generatePhotoPath("small", 3, ESC_RAW)); ?>"  width="50" height="60" />
  </a>
<?php } ?>

</div>

</div>

<script src="/js/elevatezoom/jquery.elevatezoom.js" type="text/javascript"></script>

关于php - 使用foreach进行查询优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39659054/

相关文章:

PHPSECLIB读取目录的总大小?

php - 为什么execute()出错时不返回true?

javascript - 当我点击它时,ng-href 除了更新链接或地址栏外没有响应(Angular Js)

php - Web 服务 unicode 字符显示为问号

php - 跟踪投票并只允许每个成员投一票

php - 如何将字符串视为字符串而不是 PHP 中的 int

php - 我的插入代码不起作用

HTML文件上传服务器问题

jquery - jquery 中的 ontouchstart 和 ontouchend?

mysql - 选择计数为某个值的多个记录