1

私は、月ごとにタブ メニューを使用し、各月/タブ内にアコーディオン メニューを使用して、その月に発生したすべてのイベントを一覧表示する Web サイトを構築しています。

Web サイトにデータを追加するときに PHP を使用するのは初めてで、コードを機能させるのに問題があります。PHP 導入前のコードは次のようになります。

<div class="tabscontainer">
<div class="tabs">
    <div class="tab selected first" id="tab_menu_1">
        <div class="link">$Month</div>
        <div class="arrow"></div>
    </div>
</div>

<div class="curvedContainer">
<div class="tabcontent" id="tab_content_1" style="display:block">
    <div id="page">     
    <ul id="example4" class="accordion">
        <li>
        <h3>$EventListGoesHere</h3>
            <div class="panel loading">
                <p>Some content here.</p>
            </div>
        </li>
    </ul>
    </div>
</div>

while ループを使用してみましたが、コードを壊し続けています。私が使用しようとしているwhileループは次のとおりです。

<?php 
// Connects to your Database 
mysql_connect("iphere", "username", "password") or die(mysql_error()); 
mysql_select_db("dbname") or die(mysql_error()); 
$data = mysql_query("SELECT * FROM MonthTable") 
or die(mysql_error()); 
while($info = mysql_fetch_array( $data )) 
{ 
Print "My code here"; 
Nested SQL code to got through events table here.   
} 
?> 

私の質問は、私は正しい道を進んでいるのかということだと思います。もしそうなら、標準コードが PHP の while ループ内にどのように収まるかについて誰か教えてもらえますか?

私のDBは次のようなものです:

月テーブル
ID | 月短 | 月間
1 | 2012年10月 | 2012 年 10 月
2 | 2012年9月 | 2012 年 9 月

イベント テーブル
ID | 月ID | イベント
1 | 1 | 結婚式
2 | 1 | バル・ミツバ
3 | 1 | 葬式
4 | 2 | 誕生日
5 | 2 | 誕生日
6 | 2 | 結婚式

どうもありがとう

4

2 に答える 2

1

実行できるクエリは 1 つだけです。例えば:

<?php

$sql = "
  SELECT
    a.id, b.id AS monthId, a.event, b.monthshort, b.monthlong
  FROM
    events_table_name AS a
  INNER JOIN
    month_table_name AS b ON b.id = a.monthId
  ORDER BY
    b.id, a.id ASC
  ";

// rest of db stuff here

$events = array();
$months = array();
while ($row = mysql_fetch_array($result)) {
  if (! isset($events[$row["monthId"]])) {
    $events[$row["monthId"]] = array();
  }
  $months[$row["monthId"]] = $row["monthlong"];
  $events[$row["monthId"]][] = $row["event"];
}

for ($x = 1; $x <= 12; $x++) {
  echo '<div class="tab" id="tab_$x">';
  if (isset($events[$x])) {
    echo '<div class="month-title">' . $months[$x] . '</div>';
    echo '<ul>';
    foreach ($events[$x] as $event) {
      echo "<li>". $event ."</li>";
    }
    echo '</ul>';
  }
  echo '</div>';
}

?>
于 2012-10-10T00:25:24.397 に答える
0

どのようなエラーが発生していますか?そのwhileループは問題ありません。mysqliの使用を検討してください。標準のmysqliループは次のようになります。

$db=new mysqli('host','user','pass');
$q=$db->query("SELECT * FROM db.table");
while ($f=$q->fetch_assoc()) {
     print_r($f);
     // echo "<br>"; 
}

それを試してみると、ループの各行で取得した配列が表示されます。繰り返しますが、どのようなエラーが発生していますか?

于 2012-10-10T00:44:06.267 に答える