フォーラムへの返信

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック投稿者 kazunoko

    (@kazunoko)

    shokun0803さん、こんにちは。

    記載いただきましたコードで無事、出来るようになりました!
    セレクトボックスの場合は「change」になるのですね、大変勉強になりました。

    トピック投稿者 kazunoko

    (@kazunoko)

    gblsm様

    ご指摘のとおり、コードを修正した所、無事「Last」のページが表示できました。
    私も「$additional_loop」の値をセットしていないのにと思っていましたが、何故か動いたので無視していました。

    また、PHPコード自体はサンプルを繋ぎあわせ、一部変更等をして作っていましたが、まだまだ知識が乏しい事を痛感しました。

    gblsm様、最後までお付き合い頂き有難うございました。

    トピック投稿者 kazunoko

    (@kazunoko)

    gblsm様

    返信有難うございます。
    「Last」をクリックすると場合によっては表示されますが、表示される件数が「$xml->results_available」と合っていない状態です。
    また、「合計件数中○件~○件表示」という形も追加しましたが、「Last」のページだけ合わないか、合計件数が多いと「0件~1件」という表示になってしまいます。

    ご教授頂きました以下のコードはどの位置に記述すれば良いのでしょうか?

    $numpages = ($xml->results_available + $count - 1) / $count;
    pagination( $numpages );

    現状のコードは以下のとおりです。

    function.php

    function pagination($pages = '', $range = 2)
    {
    $showitems = ($range * 2)+1;  
    
         global $paged;
         if(empty($paged)) $paged = 1;
    
         if($pages == '')
         {
             global $xml;
             $pages = floor($xml->results_available / $xml->results_returned) ;
             if(!$pages)
             {
                 $pages = 1;
             }
         }   
    
         if(1 != $pages)
         {
             echo "<div class=\"pagination clearfix\"><span>Page ".$paged." of ".$pages."</span>";
             if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo; First</a>";
             if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo; Previous</a>";
    
             for ($i=1; $i <= $pages; $i++)
             {
                 if (1 != $pages &&( !($i >= $paged+$rangey+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
                 {
                     echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a>";
                 }
             }
    
             if ($paged < $pages && $showitems < $pages) echo "<a href=\"".get_pagenum_link($paged + 1)."\">Next &rsaquo;</a>";
             if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>Last &raquo;</a>";
             echo "</div>\n";
         }
    }

    固定ページテンプレート.php

    <?php
    //カーセンサーAPI_START
    //ベースURL
    $baseurl = "http://webservice.recruit.co.jp/carsensor/usedcar/v1/";
    
    //リクエストパラメータ
    
    $key = '1234567890'; //APIキー
    $brand = post_custom('brand'); //メーカー
    $count = 15;
    $start = 1+($paged-1)*$count;
    
    //リクエストパラメータ組み立て
    $url = "$baseurl?key=$key&pref=22&brand=$brand&count=$count&start=$start&order=5";
    
    //xmlパース
    $xml = simplexml_load_file( $url );
    //カーセンサーAPI_END
    ?>
    
    //ページネーション表示
    <?php if (function_exists("pagination")) {
        pagination($additional_loop->results_available);
    } ?>
    
    <p><?php echo $xml->results_available; ?>件中 <?php echo $xml->results_start; ?>〜<?php echo ($xml->results_start+($count-1)); ?>件表示しています</p>
    
    <?php if( $xml->results_returned != 0 ): ?>
    	<?php foreach ( $xml->usedcar as $i ): ?>
    		<div class="craftsman_search_car">
    			<div class="row spaces">
    			<div class="col-sm-4">
    			<a href="<?php echo $i->urls->pc; ?>" target="_blank"><img src="<?php echo $i->photo->main->l; ?>" alt="<?php echo $i->brand->name; ?> <?php echo $i->model; ?> / <?php echo $i->grade; ?>" title="<?php echo $i->photo->main->caption; ?>" class="img-thumbnail"></a><p><small>【画像提供:カーセンサーnet 】</small></p>
    			</div> <!-- col-sm-4 end -->
    			<div class="col-sm-8">
    				<div class="row">
    				<div class="col-xs-12">
    				<h3 id="car_name"><a href="<?php echo $i->urls->pc; ?>" target="_blank"><?php echo $i->brand->name; ?> <?php echo $i->model; ?> / <?php echo $i->grade; ?></a></h3>
    				</div> <!-- col-xs-12 end -->
    				<div class="col-xs-4">
    				本体価格
    				</div>
    				<div class="col-xs-8">
    				<b class="price "><?php echo number_format( (int)$i->price ); ?>円</b>
    				</div>
    				<div class="col-xs-4">
    				初度登録年
    				</div>
    				<div class="col-xs-8">
    				<?php echo $i->year; ?>年
    				</div>
    				<div class="col-xs-4">
    				走行距離
    				</div>
    				<div class="col-xs-8">
    				<?php echo $i->odd; ?>
    				</div>
    				<div class="col-xs-4">
    				整備・保証
    				</div>
    				<div class="col-xs-8">
    				<?php echo $i->maintenance; ?> / <?php echo $i->warranty; ?>
    				</div>
    				<div class="col-xs-4">
    				コメント
    				</div>
    				<div class="col-xs-8">
    				<?php echo $i->desc; ?>
    				</div>
    				</div> <!-- row end -->
    			</div> <!-- col-sm-8 end -->
    			</div> <!-- row end -->
    		</div> <!-- craftsman_search end -->
    	<?php endforeach; ?>
    <?php else: ?>
    		<p>ないよ</p>
    
    <?php endif; ?>
    <?php endwhile; ?>
    
    <div class="row">
    <div class="col-sm-9">
    <?php echo $xml->results_available; ?>件中 <?php echo $xml->results_start; ?>〜<?php echo ($xml->results_start+14); ?>件表示中
    </div>
    <div class="col-sm-3">
    <a href="http://webservice.recruit.co.jp/"><img src="http://webservice.recruit.co.jp/banner/car-s.gif" alt="カーセンサーnet Webサービス" width="135" height="17" border="0" title="カーセンサーnet Webサービス"></a>
    </div>
    </div>
    
    //ページネーション表示
    <?php if (function_exists("pagination")) {
        pagination($additional_loop->results_available);
    } ?>

    何卒ご教授のほどよろしくお願いいたします。

    トピック投稿者 kazunoko

    (@kazunoko)

    gblsm様

    返信有難うございます。
    早速試した所、無事成功しました。
    ご指摘頂きましたとおり、以下のコードで実現出来ました。

    function.phpに以下を追加

    //ページネーションを追加
    function pagination($pages = '', $range = 4)
    {
         $showitems = ($range * 2)+1;  
    
         global $paged;
         if(empty($paged)) $paged = 1;
    
         if($pages == '')
         {
             global $xml;
             $pages = ($xml->results_available / $xml->results_returned) ;
             if(!$pages)
             {
                 $pages = 1;
             }
         }   
    
         if(1 != $pages)
         {
             echo "<div class=\"pagination clearfix\"><span>Page ".$paged." of ".$pages."</span>";
             if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo; First</a>";
             if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo; Previous</a>";
    
             for ($i=1; $i <= $pages; $i++)
             {
                 if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
                 {
                     echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a>";
                 }
             }
    
             if ($paged < $pages && $showitems < $pages) echo "<a href=\"".get_pagenum_link($paged + 1)."\">Next &rsaquo;</a>";
             if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>Last &raquo;</a>";
             echo "</div>\n";
         }
    }

    固定ページテンプレート.phpに以下を追加

    $count = 30; //表示件数
    $start = 1+($paged-1)*$count; //開始位置
    
    //リクエストパラメータ組み立て
    $url = "$baseurl?key=$key&pref=22&brand=$brand&count=$count&start=$start&order=5";
    
    ループ後にページネーション追加
    <?php if (function_exists("pagination")) {
        pagination($additional_loop->results_available);
    } ?>

    コードの書き方が雑かもしれませんが、何とか出来て良かったです。
    また、上記コードでおかしな点がありましたらご教授いただけると有難いです。

4件の返信を表示中 - 1 - 4件目 (全4件中)