質問編集履歴

1

失礼致しました。詳細追記

2018/03/22 17:44

投稿

ryches
ryches

スコア7

test CHANGED
@@ -1 +1 @@
1
- 出力されるhtmlを2パターンにしたい
1
+ 出力されるhtmlを条件指定したい
test CHANGED
@@ -1,10 +1,14 @@
1
+ 大変失礼致しました。
2
+
3
+
4
+
1
- 無茶を承知で質問させて頂きます。
5
+ 質問させて頂きます。
2
6
 
3
7
 
4
8
 
5
9
  アクセスランキング用のphpで定期的にhtmlが出力されるのですが
6
10
 
7
- これを同じ結果で2パターンの出力をさせたいです。
11
+ パターンの出力をさせたいです。
8
12
 
9
13
 
10
14
 
@@ -16,11 +20,67 @@
16
20
 
17
21
  ```ここに言語を入力
18
22
 
23
+ public function createRank($create = false, $rank_all = false, $start = null, $end = null) {
24
+
25
+
26
+
27
+ $interval = CREATE_INTERVAL * 60;
28
+
29
+ // 指定時間経っていない場合はランキングを生成しない
30
+
31
+ if (CREATE_TIME + $interval >= $this->time && !$create) {
32
+
33
+ return;
34
+
35
+ }
36
+
37
+
38
+
39
+ // リファラチェック、削除
40
+
41
+ $this->denyURLDelete();
42
+
43
+
44
+
45
+ list($url, $name, $count) = $this->rankProcess($start, $end);
46
+
47
+
48
+
49
+ // 表示件数
50
+
51
+ $cnt = count($url);
52
+
53
+ $loop = ($cnt < RANK_COUNT) ? $cnt : RANK_COUNT;
54
+
55
+ if ($rank_all) {
56
+
57
+ $loop = $cnt;
58
+
59
+ }
60
+
61
+
62
+
63
+ // 0件の場合は作成しない
64
+
65
+ if ($cnt <= 0) {
66
+
67
+ return;
68
+
69
+ }
70
+
71
+
72
+
73
+ // 以下の HTML 部分を編集
74
+
75
+ // 始まりに表示する部分です
76
+
77
+ $html = '<ul ';
78
+
19
- $html = '<table class="access">
79
+ $html2 = '<table>
20
80
 
21
81
  <thead>
22
82
 
23
- <tr><th>順位</th><th>サイト名</th><th>PV</th></tr>
83
+ <tr><th>順位</th><th>サイト名</th><th>IN数</th></tr>
24
84
 
25
85
  </thead>
26
86
 
@@ -58,6 +118,10 @@
58
118
 
59
119
 
60
120
 
121
+ // 以下の HTML 部分を編集
122
+
123
+ // ループ部分です。ランキングの数だけ繰り返されます。
124
+
61
125
  /*
62
126
 
63
127
  $rank : 順位
@@ -70,7 +134,9 @@
70
134
 
71
135
  */
72
136
 
137
+ $html .= '<li><a href="'.$url[$i].'" title="'.$name[$i].'" target="_blank">'.$name[$i].'</a><span>'.$count[$i].'IN</span></li>';
138
+
73
- $html .= '<tr><td>'.$rank.'</td><td><a href="'.$url[$i].'" title="'.$name[$i].'">'.$name[$i].'</a></td><td>'.$count[$i].'</td></tr>'; // ここまで
139
+ $html2 .= '<tr><td>'.$rank.'</td><td><a href="'.$url[$i].'" title="'.$name[$i].'" target="_blank">'.$name[$i].'</a></td><td>'.$count[$i].'</td></tr>';
74
140
 
75
141
  $prev_rank = $rank;
76
142
 
@@ -86,7 +152,9 @@
86
152
 
87
153
  // 終に表示する部分です。
88
154
 
155
+ $html .= '</ul>';
156
+
89
- $html .= '</tbody></table>';
157
+ $html2 .= '</tbody></table>';
90
158
 
91
159
  // ここまで
92
160
 
@@ -98,6 +166,14 @@
98
166
 
99
167
  $html = mb_convert_encoding($html, CHARACTER_CODE, 'UTF-8,JIS,EUC-JP,SJIS,sjis-win,ASCII');
100
168
 
169
+
170
+
171
+ $html2 = str_replace(array("\r\n", "\r", "\n", "\t"), '', $html2);
172
+
173
+ // 文字コード変換
174
+
175
+ $html2 = mb_convert_encoding($html2, CHARACTER_CODE, 'UTF-8,JIS,EUC-JP,SJIS,sjis-win,ASCII');
176
+
101
177
 
102
178
 
103
179
  $handle = fopen($this->rank_file, 'w');
@@ -106,6 +182,14 @@
106
182
 
107
183
  fclose($handle);
108
184
 
185
+
186
+
187
+ $handle = fopen($this->rank_file2, 'w');
188
+
189
+ fwrite($handle, $html2);
190
+
191
+ fclose($handle);
192
+
109
193
 
110
194
 
111
195
  // 生成時間を格納
@@ -116,20 +200,88 @@
116
200
 
117
201
  $this->db->commit();
118
202
 
203
+
204
+
205
+ }
206
+
119
207
  ```
120
208
 
121
209
 
122
210
 
123
- 上記の処理で結果が「rank.html」といっファイルで生成されます。
211
+ 上記の処理で結果が.htmlで指定しコードで生成されます。
212
+
213
+
214
+
124
-
215
+ それぞれ条件を指定したhtmlで出力させたいです。
216
+
217
+
218
+
125
-
219
+ 現在上記で
220
+
221
+
222
+
126
-
223
+ html1の出力でul list
224
+
225
+ html2の出力でtable
226
+
227
+
228
+
127
- 現在、Tableで出力されますが
229
+ と2種の出力が出来ていますが
230
+
231
+
232
+
128
-
233
+ ここに
234
+
235
+ $categoryがAだった場合html3として
236
+
237
+ $categoryがBだった場合html4として
238
+
239
+
240
+
241
+ 加えて出力処理を追加したいです。
242
+
243
+
244
+
245
+ ifを使って
246
+
247
+ ```ここに言語を入力
248
+
249
+ if ($count[$i] == $prev_count) {
250
+
251
+ $rank = $prev_rank;
252
+
253
+ $rank_temp++;
254
+
255
+ } else {
256
+
257
+ $rank = $prev_rank + $rank_temp;
258
+
259
+ $rank_temp = 1;
260
+
261
+ }
262
+
263
+ ```
264
+
265
+ 上記の下部分に
266
+
267
+ ```ここに言語を入力
268
+
129
- 同様の結果をListでも出力させ、別ファイルとして生成させたいのですが
269
+ if ($category == 'A') {
130
-
270
+
131
- どなたか対応方法をご存知の方はいませんでしょうか。
271
+ $html3 .= '<li><a href="'.$url[$i].'" title="'.$name[$i].'" target="_blank">'.$name[$i].'</a></li>';
272
+
132
-
273
+ }
274
+
133
-
275
+ ```
134
-
276
+
135
- simaccessといったphp使用しておりま
277
+ といった処理追加してみたので
278
+
279
+ ループ部分だけが出力されません(<li></li>)
280
+
281
+
282
+
283
+ 追加処理の解決方法ご教授頂ければと思います。
284
+
285
+
286
+
287
+ 宜しくお願い致します。