こちらの質問の続きですが

http://q.hatena.ne.jp/1311135822

チームIDごとに振られた番号をもとに「ID.php」としたリンクをチーム名挿入させる方法と
そのID.phpを生成する方法を教えてください。
htmlの結果は
<table>
<tr>
<td width="36">rank</td>
<td width="211">チーム名</td>
<td width="63">&nbsp;</td>
<td width="65">&nbsp;</td>
<td width="61">ポイント</td>
</tr>
<tr>
<td width="36">1</td>
<td width="211"><a href="123456.php">ABCDE</a></td>
<td width="63">横浜市</td>
<td width="65">青葉区</td>
<td width="61">1.37500</td>
</tr>
</table>
(以下データがあるだけ続く)

と表示したいのですが。。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/08/16 15:01:29
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tobeoscontinue No.2

回答回数220ベストアンサー獲得回数59

ポイント100pt

前回に引き続いて同じコードです。

<?php
$xml = simplexml_load_file("./sample.xml");

$hdr = array("rank","チーム名","&nbsp;","&nbsp;","ポイント");
$wth = array(36,    211,      63,      65,      61);
$htd = array();
foreach ($hdr as $k=>$v) {
 $htd[] = array(' width="'.$wth[$k].'"',$v);
}

$td = array($htd);
$no = 0;
foreach($xml->rank as $rank) {
  $url = '<a href="'.$rank->team["id"].'.php">'.$rank->team["name"].'</a>';
  $td[] = array(++$no, $url,$rank->team["area2"],$rank->team["area3"],$rank["point"]);
}

echo "<html><body><table>\n";
foreach ($td as $r) {
 echo "<tr>\n";
 foreach ($r as $l) {
  list($attr,$v) = is_array($l) ? $l : array('',$l);
  echo " <td".$attr.">".$v."</td>\n";
 }
 echo "</tr>\n";
}
echo "</table></body></html>";

foreach($xml->rank as $rank) {
  $contents = '<html><head><title>'.$rank->team["name"].'</title></head>'.
    '<body>チーム:'.$rank->team["name"].'</body></html>';
  file_put_contents($rank->team["id"].'.php', $contents);
}

?>

>「ID.php」としたリンクをチーム名挿入させる方法

$rank->team["name"]の部分を

'<a href="'.$rank->team["id"].'.php">'.$rank->team["name"].'</a>'

に替えます。

コードでは長くなるので一旦$urlに代入してます。

>そのID.phpを生成する方法

ファイルを出力する場合はfile_put_contentsが便利です。

(同じく読み込む場合はfile_get_contents)

コードではダミーの内容を$contentasに入れて出力しています。

その他の回答1件)

id:Jupiter2100 No.1

回答回数444ベストアンサー獲得回数74

htmlヘッダ部分は省略しています。

<?php
$xml_str = file_get_contents('./sample.xml');
$xml_str =<<< EOD
<?xml version="1.0" encoding="UTF-8"?>
<aaa age_limit="LL">
<rank point="1.37500" order="1"> <team area3="青葉区" area2="横浜市" area1="神奈川県" email="" url="" name="ABCDE" id="123456"/>
</rank>
<rank point="1.27500" order="1"> <team area3="青葉区" area2="横浜市" area1="神奈川県" email="" url="" name="FGHIJ" id="789012"/>
</rank>
<rank point="1.97500" order="1"> <team area3="赤羽区" area2="川崎市" area1="神奈川県" email="" url="" name="FGHIJ" id="989012"/>
</rank>
</aaa>

EOD;

$aaa = new SimpleXMLElement($xml_str);

$html = <<< EOD
<table>
<tr>
<td width="36">rank</td>
<td width="211">チーム名</td>
<td width="63">&nbsp;</td>
<td width="65">&nbsp;</td>
<td width="61">ポイント</td>
</tr>
EOD;

$cnt = 0;
foreach ($aaa->rank as $rank) {
	$cnt++; # ランキング順位用
	# 必要な値を変数に代入します。
	$order = $rank['order'];
	$point = $rank['point'];
	$area3 = $rank->team['area3'];
	$area2 = $rank->team['area2'];
	$area1 = $rank->team['area1'];
	$id = $rank->team['id'];
	$name = $rank->team['name'];

	$html .=<<< EOD
<td width="36">{$cnt}</td>
<td width="211"><a href="{$id}.php">{$name}</a></td>
<td width="63">{$area2}</td>
<td width="65">{$area3}</td>
<td width="61">{$point}</td>
</tr>

EOD;
}

$html .= "<table>\n";
echo $html;
?>
id:vfr6822

ありがとうございました。とても参考になりました。

2011/08/16 15:02:26
id:tobeoscontinue No.2

回答回数220ベストアンサー獲得回数59ここでベストアンサー

ポイント100pt

前回に引き続いて同じコードです。

<?php
$xml = simplexml_load_file("./sample.xml");

$hdr = array("rank","チーム名","&nbsp;","&nbsp;","ポイント");
$wth = array(36,    211,      63,      65,      61);
$htd = array();
foreach ($hdr as $k=>$v) {
 $htd[] = array(' width="'.$wth[$k].'"',$v);
}

$td = array($htd);
$no = 0;
foreach($xml->rank as $rank) {
  $url = '<a href="'.$rank->team["id"].'.php">'.$rank->team["name"].'</a>';
  $td[] = array(++$no, $url,$rank->team["area2"],$rank->team["area3"],$rank["point"]);
}

echo "<html><body><table>\n";
foreach ($td as $r) {
 echo "<tr>\n";
 foreach ($r as $l) {
  list($attr,$v) = is_array($l) ? $l : array('',$l);
  echo " <td".$attr.">".$v."</td>\n";
 }
 echo "</tr>\n";
}
echo "</table></body></html>";

foreach($xml->rank as $rank) {
  $contents = '<html><head><title>'.$rank->team["name"].'</title></head>'.
    '<body>チーム:'.$rank->team["name"].'</body></html>';
  file_put_contents($rank->team["id"].'.php', $contents);
}

?>

>「ID.php」としたリンクをチーム名挿入させる方法

$rank->team["name"]の部分を

'<a href="'.$rank->team["id"].'.php">'.$rank->team["name"].'</a>'

に替えます。

コードでは長くなるので一旦$urlに代入してます。

>そのID.phpを生成する方法

ファイルを出力する場合はfile_put_contentsが便利です。

(同じく読み込む場合はfile_get_contents)

コードではダミーの内容を$contentasに入れて出力しています。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません