/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
[PHP+MySQL] Gruppere data hierarkisk
Fra : Kim Malchau


Dato : 11-02-01 15:43

Hej

(Blev lige gjort opmærksom på d.e.i.w.s.php - silly me, så jeg sender
også lige indlægget her).

Jeg forsøger at lave en kalender over en række aktiviteter
(http://www.roden.dk/roden/kalender.php) men jeg kan ikke få det til
at se ud som jeg gerne vil.

Her kommer først mit ønske, og derefter den nuværende kode.

Mit ønske er at strukturere outputtet hierarkisk, forstået som at det
skal grupperes efter hvilken måned aktiviteten er. Prinicippet i
strukturen skal være:

Februar 2001
aktivitet
aktivitet
osv.

Marts 2001
akt.
akt
osv

Januar 2002
akt.
akt.
osv.

Det kan jeg bare ikke liiige finde ud af. Jeg har flirtet med noget
GROUP BY men mener at have fundet ud af at det kunne virker ved
beregnede data (sum, gennemsnit, count osv.).

Hvad skal jeg så bruge?

Min nuværende kode:

<?php
$dom1="mysqlserverens navn";
$usr="brugernavn";
$pwd="password";

$dom="localhost";

$datoformat="DATE_FORMAT(dato,'%e.%m.%Y') AS daton";
$aar="DATE_FORMAT(dato,'%Y') as aar";

$db = mysql_connect("$dom", "$usr", "$pwd");
mysql_select_db("$usr", $db);
$result = mysql_query("SELECT $datoformat, $aar, dato, begivenhed,
gr_mikro, gr_mini, gr_junior, gr_trop, gr_senior, gr_leder,
gr_styrelse, andre FROM roden_kal WHERE dato>now() ORDER BY dato, id",
$db);
if (! $result) {
printf ( "MySQL fejl: (%d) %s<br><br>%s\n",
mysql_errno (),
mysql_error (),
$query);
mysql_close ($db);
exit ();
}

[Her er udeladt lidt kode, men det er kun fontfarve og baggrundsfarve
(variablerne $bgxx og $fontxx)]

echo "&nbsp;<br>";
echo "<table cellspacing=\"0\" cellpadding=\"3\">";
echo "<tr><td class=\"adr2\">Dato</td><td
class=\"adr2\">Begivenhed</td><td class=\"adr2\" colspan=\"8\">Hvem er
arrangementet for</td></tr>";

$i=1;
while ($myrow = mysql_fetch_array($result)) {

$bgcol = "#EEEEEE";
if (is_int($i/2)) {
$bgcol = "#FFFFFF";
}
printf("<tr><td valign=\"top\" bgcolor=\"$bgcol\">%s</td><td
bgcolor=\"$bgcol\">%s</td><td $align bgcolor=\"$bgmik\"><font
color=\"$fontmik\">%s</font></td><td $align
bgcolor=\"$bgmin\">%s</td><td $align bgcolor=\"#FFFFFF\">%s</td><td
$align bgcolor=\"$bgt\">%s</td><td $align bgcolor=\"$bgsen\"><font
color=\"$fontsen\">%s</font></td><td $align
bgcolor=\"$bgled\">%s</td><td $align bgcolor=\"$bgst\">%s</td><td
$align bgcolor=\"$bgled\">%s</td></tr>\n", $myrow["daton"],
$myrow["begivenhed"], $myrow["gr_mikro"], $myrow["gr_mini"],
$myrow["gr_junior"], $myrow["gr_trop"], $myrow["gr_senior"],
$myrow["gr_leder"], $myrow["gr_styrelse"], $myrow["andre"]);
$i++;}
echo "</table>";
?>

Med venlig hilsen

Kim Malchau

--
Nyhedsgrupper på Internet - nyt design!
http://ng.malchau.dk/

 
 
Danni (12-02-2001)
Kommentar
Fra : Danni


Dato : 12-02-01 09:17

> Februar 2001
> aktivitet
> aktivitet
> osv.

Jeg plejer at gøre således:

------- start --------
// Vælg "top-level" kategorierne - altså månederne
$query1 = mysql_query ("SELECT id,kategori FROM kategorierne;");
while ($result1 = mysql_fetch_array ($query1))
{
echo $result1[kategori]."<BR>";

// Vælg "sub-level" kategorierne - måske med id'en fra "top-level"
kategorien $result[id]
$query2 = mysql_query ("SELECT id,underkategori FROM
underkategorierne;");
while ($result2 = mysq_fetch_array ($query2))
{
echo $result2[underkategori]."<BR>";
}

echo "<P>";
}
------- slut --------

Jeg ved ikke om det er til nogen hjælp... men det skulle virke ;) Men det
ville da være sjovt at høre om det kunne gøres i et SELECT hug.



Jimi Rønberg (14-02-2001)
Kommentar
Fra : Jimi Rønberg


Dato : 14-02-01 13:46

Hej....

> Jeg forsøger at lave en kalender over en række aktiviteter
> (http://www.roden.dk/roden/kalender.php) men jeg kan ikke få det til
> at se ud som jeg gerne vil.

Er du ude efter noget der ser ud som kalenderen på
http://www.datamatiker.net ?
- If so....den har jeg lavet, du må da gerne få koden.

Lidt sql til inspiration:

$query="SELECT
kalender_id,tidspunkt_from,overskrift,beskrivelse,navn,WEEKDAY(tidspunkt_fro
m)as weekday,DAYOFMONTH(tidspunkt_from)as monthday,MONTH(tidspunkt_from)as
month,YEAR(tidspunkt_from)as year FROM kalender,kalenderkategori
WHERE".$kategori_sql." tidspunkt_from < '".$date_month."' AND
kalender.kategori_id=kalenderkategori.kategori_id AND active=1 ORDER BY
tidspunkt_from";

Tabellen ser sådan ud:
CREATE TABLE kalender (
kalender_id int(10) NOT NULL auto_increment,
tidspunkt_from datetime DEFAULT '0000-00-00 00:00:00',
tidspunkt_to datetime DEFAULT '0000-00-00 00:00:00',
overskrift varchar(50) NOT NULL,
beskrivelse longtext,
link varchar(100),
kategori_id int(2) NOT NULL,
active int(1) DEFAULT 0 NOT NULL,
PRIMARY KEY (kalender_id),
UNIQUE post_id (kalender_id)
);

CREATE TABLE kalenderkategori (
kategori_id int(2) NOT NULL,
navn varchar(50),
PRIMARY KEY (kategori_id),
UNIQUE kategori_id (kategori_id)
);

M.v.h.

Jimi Rønberg




Kim Malchau (16-02-2001)
Kommentar
Fra : Kim Malchau


Dato : 16-02-01 16:49

On Wed, 14 Feb 2001 13:46:00 +0100, "Jimi Rønberg"
<jroenberg@proventum.net> wrote:

:>
:>Er du ude efter noget der ser ud som kalenderen på
:>http://www.datamatiker.net ?
:>- If so....den har jeg lavet, du må da gerne få koden.
:>
:>Lidt sql til inspiration:
:>
[klip SQL]

Det ser rigtig godt ud. Jeg er ret interesseret i koden.

Det der er mit største problem er ikke så meget tabellerne (jeg har
dog kun én tabel, det gør det måske lidt sværere - hvad bruger du
kalenderkategori til?)

Mit største problem er mest at danne html-tabellen (printf-delen, hvis
du forstår mig).

Med venlig hilsen

Kim Malchau

--
Nyhedsgrupper på Internet - nyt design!
http://ng.malchau.dk/

Kim Malchau (22-02-2001)
Kommentar
Fra : Kim Malchau


Dato : 22-02-01 19:09

On Sun, 11 Feb 2001 15:42:56 +0100, Kim Malchau <nospam4@malchau.dk>
wrote:

:>Hej
:>
:>Jeg forsøger at lave en kalender over en række aktiviteter
:>(http://www.roden.dk/roden/kalender.php) men jeg kan ikke få det til
:>at se ud som jeg gerne vil.

Så har jeg fået løst det. For god ordens skyld bringer jeg lige koden
(uden kommentarer):


<?php
$maanedsnavne[1] ="Januar";
$maanedsnavne[2] ="Februar";
$maanedsnavne[3] ="Marts";
$maanedsnavne[4] ="April";
$maanedsnavne[5] ="Maj";
$maanedsnavne[6] ="Juni";
$maanedsnavne[7] ="Juli";
$maanedsnavne[8] ="August";
$maanedsnavne[9] ="September";
$maanedsnavne[10]="Oktober";
$maanedsnavne[11]="November";
$maanedsnavne[12]="December";

$db = mysql_connect("server", "database", "password");
mysql_select_db("database");

$query ="SELECT DISTINCT YEAR(dato) AS yy, MONTH(dato) as mm FROM
roden_kal";

$rs1 = mysql_query($query);
if(!$rs1) {
   echo "fail...".mysql_error();
}
else{
echo "<table cellspacing=\"0\" cellpadding=\"3\">\n";
echo "<tr><td>Dato</td>\n<td>Begivenhed</td><td colspan=\"8\">Hvem er
arrangementet for</td>\n</tr>\n";

while($myrow1=mysql_fetch_array($rs1)) {
   echo "<tr>\n<td colspan=\"2\">".$maanedsnavne[$myrow1["mm"]]."
".$myrow1["yy"]."</td><td colspan=\"8\">&nbsp</td>\n</tr>\n";

   $query2="SELECT id, dato, begivenhed, gr_mikro, gr_mini,
gr_junior, gr_trop, gr_senior, gr_leder, gr_styrelse, andre,
MONTH(dato) as mmd, DAYOFMONTH(dato) as dd FROM roden_kal WHERE
YEAR(dato)=".$myrow1["yy"]." AND MONTH(dato)=".$myrow1["mm"]." AND
dato>now() ORDER BY dato,id ";
   $rs2 = mysql_query($query2);
   if(!$rs2) {
      echo "fail...".mysql_error();
   }
   else{
      while($myrow2=mysql_fetch_array($rs2)) {
   printf("<tr><td>%s. %s
</td>\n<td>%s</td>\n<td>%s</td>\n<td>%s</td>\n<td>%s</td>\n<td>%s</td>\n<td>%s</td>\n<td>%s</td>\n<td>%s</td>\n<td>%s</td></tr>\n",
$myrow2["dd"], $maanedsnavne[$myrow2["mmd"]], $myrow2["begivenhed"],
$myrow2["gr_mikro"], $myrow2["gr_mini"], $myrow2["gr_junior"],
$myrow2["gr_trop"], $myrow2["gr_senior"], $myrow2["gr_leder"],
$myrow2["gr_styrelse"], $myrow2["andre"]);
      }
   }
}
echo "</table>\n";
}
?>

Med venlig hilsen

Kim Malchau

--
Nyhedsgrupper på Internet - nyt design!
http://ng.malchau.dk/

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste