Beitrag von Micha Jost (347 Beiträge) am Donnerstag, 6.Juni.2002, 10:05.
get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo,
ich hätte gerne ein 2-spaltige Ausgabe über get.
Zu jeder Kategorie: Behörden, Nachbarschaft, Umwelt... sollen daunter immer 2-spaltig die Links aufgelistet werden.
Das funktioniert mit dem nachfolgenden Code nur eingeschränkt.
Die Gruppierung als erste Überschrift: Kategorie, dann die Links in 2 Reihen, dann die nächste Kategorie.... usw.
Vielleicht habt Ihr da draussen an den Bildschirmen noch eine Eingebung.
Danke
Micha
hier ein Blick auf die Baustelle
http://rathaus-buerstadt.de/baseportal/Linkliste_Kopie
Das ist der Code (hat Tina schon mitgeholfen)
<html>
<head><title>Linkliste Test</title>
<include src=style></head>
<body bgcolor="#ffffff">
<table border="0" cellspacing="3" width="100%" cellpadding="2">
<td width="50%" bgcolor="#ff9900"><font face="Verdana" size="2"><font color="#ffffff"><b>Rathaus-Bürstadt</b></font>-<b>Linkliste</b></font></td>
<td width="50%" bgcolor="#ff9900">
<p align="right"><font size="2" face="Verdana">
out <<EOF;
</tr>
<tr>
<td width="50%"></td>
<td width="50%"></td>
</tr>
</table>
</div>
<font face="Verdana" size="1">
<table cellspacing="3" cellpadding="2"><tr>
EOF
$cnt=0; #Zähler Spalte
$v=$v||0; # Startwert vorgeben, wenn $v leer ist
get "Id==* sort=Kategorie,Name range=$v,10", "Linkliste"; # $v ist variabel
while(get_next("Linkliste"))
{
out "<br>$Kategorie" if $Kategorie ne $Kategorie_alt;
out "<td width='50%' bgcolor='F1F4F5'>
<font color='000000' face='Verdana' size='2'>$Kategorie<br></font>
<font face='Verdana' size='2'><b>$Name</b><br>
<font face='verdana' arial size='2'><img src=\"http://www.rathaus-buerstadt.de/bilder/datenpunkt.gif\" width=\"12\" height=\"9\" align=\"absmiddle\"> Internet:<a href=http://$URL target=\"_blank\">$URL</a></font>";
$Kategorie_alt=$Kategorie;
if ($cnt==1) #Zähler Spalte
{
$cnt=0;
{
}
}
out <<EOF;
<td></td></tr></table>
<br>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" id="AutoNumber1">
<tr>
my $range=$_range_length;
my $blaettern=$_range_length;
my $blaetter_lang=$range*10;
my $newrange=$_range+$_range_length;
my $oldrange=$_range-$_range_length;
my $color='#CCCCCC';
my $color_vonbis='#FFFFFF';
my $color_zahl='#CCCCCC';
my $color_vorzu='#CCCCCC';
my $color_balken='#CCCCCC';
my $table='';
my $table_align='left';
out "<div align=$table_align>";
out "<table width=$table cellpadding=3 cellspacing=3 cellpadding=3><tr align=left><td bgcolor=$color align='center'><font face=verdana, arial font size=1>";
$oldrange=0 if $oldrange<0 && $oldrange>-$_range_length;
out $oldrange>=0?"<a href=\"$_link&v=0\">|<</a>":"|<";
out "</font></td><td bgcolor=$color align='center'><font face=verdana, arial font size=1>";
out $oldrange>=0?"<a href=\"$_link&v=$oldrange\"><</a>":"<<";
out "</font></td><td bgcolor=$color align='center'><font face=verdana, arial font size=1>";
$ende=substr($_amount_query,0,length($_amount_query)-1);
out $newrange<$_amount_query?"<a href=\"$_link&v=$newrange\">></a>":">>";
out "</td><td font face=verdana, arial font size=2 bgcolor=$color align='center'><font face=verdana, arial font size=1>";
out $newrange<$_amount_query?"<a href=\"$_link&v=".($ende."0")."\">>|
out "</font></td><td bgcolor=$color_vonbis align='center'><font face=verdana, arial font size=1>Einträge ".($v+1)." bis
".(($v+$blaettern)>$_amount_query?"$_amount_query":($v+$blaettern))." von
$_amount_query</td>";
if ($_amount)
{
$vr=int($v/$blaetter_lang) unless $_range==0;
$vr=$vr*$blaetter_lang;
out "<td bgcolor=$color_vorzu align='center'><font face=verdana, arial font size=1><a href=$_link&v=".($vr-$blaetter_lang)."><<</a></td>" if
($vr-$blaetter_lang)>=0;
for ($i=$vr;$i<($vr+$blaetter_lang<=$_amount_query?($vr+$blaetter_lang):$_amount_query); $i+=$blaettern)
{
out "<td bgcolor=$color_zahl align='center'><font face=verdana, arial font size=1>".($v==$i?"<b>".($i+1)."</b>":"<a
href=$_link&v=$i>".($i+1)."</a>")."</td>";
out "<td bgcolor=$color_vorzu align='center'><font face=verdana, arial font size=1><a href=$_link&v=$i>>></a></td>" if $i<$_amount_query;
out "</font></tr></table></div>";
</font>
<include src=footer>
</body></html>
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 7.Juni.2002, 15:53.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Ich bin mir nicht sicher, ob ich alles richtig verstanden habe, aber ich wenn Du das hinsichtlich der Kategorien gruppieren willst, musst Du die z.b. in einem Hash sammeln:
get "Id==* sort=Kategorie,Name range=$v,10", "Linkliste"; # $v ist variabel
while(get_next("Linkliste"))
{
$namen{$Kategorie}.="$Name#";
$links{$Kategorie}.="$Link#";
}
foreach $k (sort %Name}
{
@namen=split /#/,$namen{$k};
@links=split /#/,$namen{$k};
out "<p><b>Kategorie: $k</b><br>";
foreach $n (@namen)
{
$l=shift @links;
out "Name: $n - Link: $l<br>";
}
}
ja, so in etwa - ungefähr klar?
Antworten
Beitrag von Micha Jost (347 Beiträge) am Freitag, 7.Juni.2002, 18:29.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo Christoph,
vielen Dank für den Tipp, im Moment sehe ich nur "hash-Wolken".
Noch blicke ich nicht durch, was da für geheimnisvolle Vorgänge in dem Code ablaufen, aber man wächst ja an den Herausforderungen.
Gruß
Micha
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 8.Juni.2002, 01:39.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Jups, klar... Ich weiss noch wie komisch mir damals (kurz nach der ersten Eiszeit) die Hashes vorkamen - aber man muss sich einfach reinhängen und wenn mans n paar Mal gemacht hat isses totaaaal einfach ,-)
Antworten
Beitrag von Claus S. (1671 Beiträge) am Samstag, 8.Juni.2002, 08:55.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
hallo christoph,
ich tue mich auch noch schwer mit den hashes, aber ich glaube, dass das schon ein mächtiges werkzeug ist.
hast du mal nen tipp, wo das ordentlich (mit beispielen) beschrieben ist. o'reilly einführung in perl ist da nicht so ergiebig.
gruss claus
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 8.Juni.2002, 21:59.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Mmhhh..... Mir fällt jetzt erstmal auch nichts ein, vielleicht weiss jemand anders was?
Antworten
Beitrag von Micha Jost (347 Beiträge) am Montag, 10.Juni.2002, 09:59.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo Christoph,
ich habe noch ein bischen Probleme mit dem Hash-Einbau.
Es gibt reichlich Fehlermeldungen.
Könntest Du noch mal an den "Nahtstellen" schauen, wo der alte Code aufhören und dann wieder beginnen sollte.
Danke Christoph.
Gruß
Micha
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 10.Juni.2002, 14:32.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Wie sieht denn der Code jetzt aus?
Antworten
Beitrag von Micha Jost (347 Beiträge) am Montag, 10.Juni.2002, 17:45.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo Christoph,
im Moment sieht es so aus:
http://rathaus-buerstadt.de/baseportal/Linkliste_Kopie_Kopie
das ist der Code:
<html><head><title>Linkliste Test</title>
</head><body bgcolor="#ffffff">
<include src=style>
<html>
<table border="0" cellspacing="3" width="100%" cellpadding="2">
<td width="50%" bgcolor="#ff9900"><font face="Verdana" size="2"><font color="#ffffff"><b>Rathaus-Bürstadt</b></font>-<b>Linkliste</b></font></td>
<td width="50%" bgcolor="#ff9900">
<p align="right"><font size="2" face="Verdana">
</font></td>
<tr>
<td width="50%"></td>
</table>
<font face="Verdana" size="1">
<table cellspacing="3" cellpadding="2"><tr>
$v=$v||0; # Startwert vorgeben, wenn $v leer ist
get "Id==* sort=Kategorie,Name range=$v,10", "Linkliste"; # $v ist variabel
while(get_next("Linkliste"))
{
$namen{$Kategorie}.="$Name#";
$links{$Kategorie}.="$Link#";
}
foreach $k (sort %Name}
{
@namen=split /#/,$namen{$k};
@links=split /#/,$namen{$k};
out "<p><b>Kategorie: $k</b><br>";
foreach $n (@namen)
{
$l=shift @links;
out "Name: $n - Link: $l<br>";
}
}
<br>
EOF
my $range=$_range_length;
my $blaettern=$_range_length;
my $blaetter_lang=$range*10;
my $newrange=$_range+$_range_length;
my $oldrange=$_range-$_range_length;
my $color='#CCCCCC';
my $color_vonbis='#FFFFFF';
my $color_zahl='#CCCCCC';
my $color_vorzu='#CCCCCC';
my $color_balken='#CCCCCC';
my $table_align='left';
out "<div align=$table_align>";
out "<table width=$table cellpadding=3 cellspacing=3 cellpadding=3><tr align=left><td bgcolor=$color align='center'><font face=verdana, arial font size=1>";
$oldrange=0 if $oldrange<0 && $oldrange>-$_range_length;
out $oldrange>=0?"<a href=\"$_link&v=0\">|<</a>":"|<";
out "</font></td><td bgcolor=$color align='center'><font face=verdana, arial font size=1>";
out $oldrange>=0?"<a href=\"$_link&v=$oldrange\"><</a>":"<<";
out "</font></td><td bgcolor=$color align='center'><font face=verdana, arial font size=1>";
$ende=substr($_amount_query,0,length($_amount_query)-1);
out $newrange<$_amount_query?"<a href=\"$_link&v=$newrange\">></a>":">>";
out "</td><td font face=verdana, arial font size=2 bgcolor=$color align='center'><font face=verdana, arial font size=1>";
out $newrange<$_amount_query?"<a href=\"$_link&v=".($ende."0")."\">>|
out "</font></td><td bgcolor=$color_vonbis align='center'><font face=verdana, arial font size=1>Einträge ".($v+1)." bis
".(($v+$blaettern)>$_amount_query?"$_amount_query":($v+$blaettern))." von
$_amount_query</td>";
if ($_amount)
{
$vr=int($v/$blaetter_lang) unless $_range==0;
$vr=$vr*$blaetter_lang;
out "<td bgcolor=$color_vorzu align='center'><font face=verdana, arial font size=1><a href=$_link&v=".($vr-$blaetter_lang)."><<</a></td>" if
($vr-$blaetter_lang)>=0;
for ($i=$vr;$i<($vr+$blaetter_lang<=$_amount_query?($vr+$blaetter_lang):$_amount_query); $i+=$blaettern)
out "<td bgcolor=$color_zahl align='center'><font face=verdana, arial font size=1>".($v==$i?"<b>".($i+1)."</b>":"<a
href=$_link&v=$i>".($i+1)."</a>")."</td>";
out "<td bgcolor=$color_vorzu align='center'><font face=verdana, arial font size=1><a href=$_link&v=$i>>></a></td>" if $i<$_amount_query;
out "</font></tr></table></div>";
</font>
<include src=footer>
</body></html>
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 10.Juni.2002, 19:51.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Der obere Teil (um den es geht) hätte gereicht ;-)
Sieht doch gut aus ;-) Hab jetzt nur 2 Fehler in derselben Zeile entdeckt:
muss heissen
also "%namen" statt "%Name" und achtung!!! das letzte Zeichen muss eine ) sein, keine geschweifte }
;-)
Antworten
Beitrag von Micha Jost (347 Beiträge) am Dienstag, 11.Juni.2002, 08:36.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo Christoph,
Danke für Deine Bemühungen. Zuerst die gute Nachricht, es gibt keine Fehlermeldungen mehr.
Aber von 2 spaltiger Ausgabe kann noch nicht die Rede sein.
Vielleicht fällt Dir noch was ein.
Gruß
Micha
hier die Baustelle
http://rathaus-buerstadt.de/baseportal/Linkliste_Kopie_Kopie
Das ist der Code
<font face="Verdana" size="1">
<table cellspacing="3" cellpadding="2"><tr>
$v=$v||0; # Startwert vorgeben, wenn $v leer ist
get "Id==* sort=Kategorie,Name range=$v,10", "Linkliste"; # $v ist variabel
while(get_next("Linkliste"))
{
$namen{$Kategorie}.="$Name#";
$links{$Kategorie}.="$Link#";
}
foreach $k (sort %namen)
{
@namen=split /#/,$namen{$k};
@links=split /#/,$namen{$k};
out "<p><b>Kategorie: $k</b><br>";
foreach $n (@namen)
{
$l=shift @links;
out "Name: $n - Link: $l<br>";
}
}
Antworten
Beitrag von hempelr (1976 Beiträge) am Dienstag, 11.Juni.2002, 11:18.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo, Micha
mit den Hashs das ist mir im Moment etwas hoch, aber ich hab da mal den Code für eine zweispaltige Ausgabe, funzt sowohl mit get-get_next als auch loop code perl.
Mache das mit paar Hilfszählern und dazugehöriger Ganzzahldivision um die ungeradzahligen Datensätze links und die geradzahligen rechts jeweils in eine eigene Tabelle zu schreiben.
Die zwei Tabellen sind dann wieder in ner "Rahmentabelle" drin.
Je nach Anzeigebereich werden dann die Navigationslinks noch generiert.
Ich denke, du kannst das irgendwie für deine Zwecke anpassen.
Die URL ist hier: http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/hempelr/andachten/archiv
Hoffe, du kannst das irgendwie umstricken, so daß es dir was nützt.
Gruß
Ruben
---------------------------------
Hier der Code der ganzen Seite:
---------------------------------
<perl>
# Seiten-Farbstiel grün oder violett (später mehr)#
$s=g; #g für grün, #v für violett
$fvh = "bgcolor=ffccff"; # Farbe_Violett_hell
$fvd = "bgcolor=800080"; # Farbe_Violett_dunkel
$fvw = "bgcolor=ffffff"; # Farbe_weiß
$fgnh = "bgcolor=ccff99"; # Farbe_Hellgruen
$fgnd = "bgcolor=009900"; # Farbe_Dunkelgrün
$fgh = "bgcolor=ffffef"; # Farbe_hellgelb
$for = "bgcolor=ff3300"; # Farbe orange
# Trennzeilen für Ausgabe gleich in Vars speichern, damit code überschaubear bleibt #
$pix="http://www.kirchen-im-erzgebirge.de/vk_pic/cpix1.gif";
$tz1h = "<tr><td id=dgr colspan=2 $fgh><img height=1 src=$pix></td></tr>";
$tz5h = "<tr><td id=hgr colspan=2 $fgh><img height=5 src=$pix></td></tr>";
$tz1d = "<tr><td id=dgr colspan=2 $fgnd><img height=1 src=$pix></td></tr>";
$tz5d = "<tr><td id=hgr colspan=2 $fgnd><img height=5 src=$pix></td></tr>";
$tz1m = "<tr><td id=dgr colspan=2 $fgnh><img height=1 src=$pix></td></tr>";
$tz5m = "<tr><td id=hgr colspan=2 $fgnh><img height=5 src=$pix></td></tr>";
# ----------------------------------------------------------------------#
# Vorbelegung der Variablen die uebergeben werden
# um Fehlfunktion vorzubeugen
$a_offset = 1; # (Ausgabeoffset für Abzug)
#-- Range-Start --#
$ra = 0 + $a_offset if ($ra < $a_offset);
#-- Range Länge --#
$ra_l = 10 if $ra_l eq "";
########################################################
# <!-- Datenbank abrufen um bp-Spezialvariablen mit den richtigen Werten zu füllen -->
init andacht;
########################################################
# Hilfsvariablen fuer Ausgabe des Anzeigebereiches #
$anz_anz=$_amount_all-$a_offset;
$anza = $ra-$a_offset + 1 if $ra <= $a_offset; #Anzeige Anzahl Anfang
$anza = $ra if $ra > $a_offset;
$anze = $ra + $ra_l - $a_offset if $ra+$ra_l <= $_amount_all+$a_offset; # Anzeige Anzahl Ende
$anze = $_amount_all - $a_offset if $ra+$ra_l > $_amount_all - $a_offset;
$anz_ds = $_amount_all - $a_offset;
#--Hilfsvariablen fuer zweispaltige Ausgabe der Uebersicht --#
#-- Zaehler fuer Ausgabespalte 1 links--#
$lcnt = 0;
#-- Zaehler fuer Ausgabespalte 2 rechts--#
#############################################################################
#### und hier jetzt losmachen mit Daten holen und Ausgabevars generieren ####
#############################################################################
get "sort=-Eig_Datum range=$ra,$ra_l", "andacht";
while(get_next("andacht"))
{
##### Ausgabe der linken Spalte in Var a_linhalt (Tabellenzeilen) #####
$inf = $lcnt % 2;
if ($inf eq 0)
{$a_linhalt.=<<EOF;
<tr><td valign=top>
<p class=klein><a href=http://baseportal.de/cgi-bin/baseportal.pl?htx=/hempelr/andachten/andacht&id=$_id&ra=$_range&ra_l=$_range_length>$Sonntag_im_KJ</b></a></td></tr>
EOF
$a_linhalt.="<tr><td><p class=klein><span class=gruen><b><i>$Andacht_Thema</i></b></span></p></td></tr>" if $Andacht_Thema ne "";
$a_linhalt.="<tr><td><p class=klein><span class=gruen>$Andacht_Bibelstelle</span></p></td></tr>" if $Andacht_Bibelstelle ne "";
$a_linhalt.="<tr><td><p class=klein><span class=gruen>".$Andacht_Intro."</span></p></td></tr>" if $Andacht_Intro ne "";
$a_linhalt.="<tr><td><p class=klein><span class=gruen>".$Andacht_von. $Name."</span></p></td></tr>" if $Andacht_von ne "";
$a_linhalt.= "<tr><td id=hgr $fgh><img height=5 src=$pix></td></tr>";
}
$lcnt++;
#### Ausgabe der rechten Spalte in Var a_rinhalt (Tabellenzeilen)####
$inf2 = $rcnt % 2;
if ($inf2 eq 1)
{$a_rinhalt.=<<EOF;
<tr><td valign=top>
<p class=klein><a href=http://baseportal.de/cgi-bin/baseportal.pl?htx=/hempelr/andachten/andacht&id=$_id&ra=$_range&ra_l=$_range_length>$Sonntag_im_KJ</b></a></td></tr>
EOF
$a_rinhalt.="<tr><td><p class=klein><span class=gruen><b><i>$Andacht_Thema</i></b></span></p></td></tr>" if $Andacht_Thema ne "";
$a_rinhalt.="<tr><td><p class=klein><span class=gruen>$Andacht_Bibelstelle</span></p></td></tr>" if $Andacht_Bibelstelle ne "";
$a_rinhalt.="<tr><td><p class=klein><span class=gruen>$Andacht_Intro</span></p></td></tr>" if $Andacht_Intro ne "";
$a_rinhalt.="<tr><td><p class=klein><span class=gruen>$Andacht_von $Name</span></p></td></tr>" if $Andacht_von ne "";
$a_rinhalt.="<tr><td id=hgr $fgh><img height=5 src=$pix></td></tr>";
}
$rcnt++;
}
##### Hier beginnt die Ausgabe der HTML-Seite #####
out<<EOF;
<html><head>
<title>baseportal Datenbank (/test/html_anzeige)</title>
EOF
</perl>
<include src=/hempelr/viskart/styles>
<perl>
out<<EOF;
</head>
<body bgcolor=ffffef topmargin=0 leftmargin=0>
<table width=530 border=0 cellpadding=0 cellspacing=0>
$tz5h
<TR>
<TD valign=middle align=right $fgh colspan=2><p class=orange><p class="gross"><span class=orange><i>Archiv Hingehört</i> - <b>Andachten im Lauf des Kirchenjahres</b></span></p>
</TD>
</tr>
$tz5h
<TR>
<TD align="right" $fgh colspan=2><p class=klein><span class=orange>Insgesamt $anz_ds Beiträge im Archiv vorhanden </span></p></b>
</TD>
</tr>
$tz5h
<tr>
<td colspan=2 $fgh align=right valign=middle><p class=klein><p class=klein><span class=orange><b>Beitrag $anza bis $anze </b></span></p>
</td>
</tr>
$tz5h
<tr>
<td colspan=2 align=center>
<table width=90% cellspacing=0 cellpadding=0>
<tr>
<td width=50% align=center valign=top>
<table border=0 width=95% align=center cellpadding=0 cellspacing=0>
$a_linhalt
</table>
</td>
<td align=center valign=top width=50%>
<table align=center border=0 width=95% cellpadding=0 cellspacing=0>
$a_rinhalt
</table>
</td>
</tr>
$tz5h
$tz1d
<tr>
<td $fgh colspan=2 align=center>
EOF
# Navigations-Ausgabevariablen berechnen und belegen #
my $newrange=$_range+$_range_length;
my $oldrange=$_range-$_range_length;
$oldrange=$a_offset if $oldrange<$a_offset && $oldrange>-$_range_length+$a_offset;
out "<span class=klein>[ <a href=\"$_link&range=$a_offset,$_range_length&ra=$a_offset&ra_l=$_range_length\">Anfang</a> der Liste ] </font></span>" if $oldrange>=$a_offset;
out "<span class=klein>[ <a href=\"$_link&range=$oldrange,$_range_length&ra=$oldrange&ra_l=$_range_length\">Zurück</a> ] </font></span>" if $oldrange>=$a_offset;
out "<span class=klein>[ <a href=\"$_link&range=$newrange,$_range_length&ra=$newrange&ra_l=$_range_length\">Mehr</a> ] </font></span>" if $newrange<=$anz_anz;
out<<EOF;
</td></tr>
$tz1h
<tr>
<td align=center colspan=2 $fgh><p class=klein>[ <a href="http://baseportal.de/cgi-bin/baseportal.pl?htx=/hempelr/andachten/andacht">aktuelle Andacht</a> ] [ <a href="http://baseportal.de/cgi-bin/baseportal.pl?htx=/hempelr/verans_kirch/vkirch_nutz&ra=$_range&ra_l=$_range_length&fa=$fa&flk=$flk">Nutzerbereich</a> ]</p></td></tr>
$tz1d
$tz5h
</table>
</table>
</body></html>
EOF
</perl>
----------------------------------------------------
Antworten
Beitrag von Micha Jost (347 Beiträge) am Dienstag, 11.Juni.2002, 13:43.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo Ruben,
Danke für Deine Hilfe.
Ich fürchte, der Code past nicht ganz für meine Zwecke (zumindest soweit meine bescheidenen Kenntnisse das erfassen), da vor der 2-spaltigen Ausgabe jeweils noch immer einspaltig nach einer Kategorie gruppiert werden soll.
Eigentlich fing alles so harmlos an...
Bei der Gelegenheit, Du bastelst ja ganz famose Dinge für Deine Kirchengemeinde(n)
Gruß
Micha
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 11.Juni.2002, 14:28.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Dann hab ich nich ganz verstanden, was Du genau machen willst... ;-)
Antworten
Beitrag von Micha Jost (347 Beiträge) am Dienstag, 11.Juni.2002, 15:03.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo Christoph,
jetzt kommen wir ein bischen durcheinander.
Das letzte Posting bezog sich auch Rubens Hilfeangebot.
Ich glaube schon, dass Du mich verstanden hast, aber das Ergebnis ist noch nicht doppelspaltig.
Ich versuchs trotzdem nochmal, mit dem nachfolgenden Schema des geünschten Ergebnisses:
Behörden (Kategorie)
Behörde 1_____________Behörde2
WWW.xx.de___________www.yy.de
Behörde 3____________Behörde4
www.zze.de___________www.ddd.de
Umwelt (Kategorie)
Bundesanstalt xx_____Umweltbundesamt
www.qqq.de___________www.uba.de
NABU_________________GREENPEACE
www.dsds.de__________www.green.de
usw.
Immer erst die Kategorie, dann Name und url 2-spaltig, dann wieder eine Kategorie....
War das deutlich??
Gruß
Micha
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 11.Juni.2002, 16:31.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Achso, nein, dann hab ich Dich doch von Anfang an richtig verstanden ;-) Ich hab nur Deinen Beitrag bei den "ersten 10 Einträgen" gelesen und dachte der bezog sich auf mein letztes Posting...
Ja, der Code den ich ursprünglich gepostet habe macht ja nix zweispaltig, das wollte ich Dir überlassen, ist auch nicht sonderlich schwer (musst ja nur noch Tabellentags drumrum machen)... Mir gings um den (schwierigen) Teil der Gruppierung der Kategorien... ;-)
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 12.Juni.2002, 09:14.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo, Micha,
das Problem hat mich nicht losgelassen, ich hatte es irgendwie schon richtig verstanden.
Nun hab ich mal ne Lösung gebaut, die zwar nicht ganz sauber ist (Durchläufe von get get_next in foreach), aber es kommt das gewünschte Ergebnis raus, gruppierte Anzeige nach einer Kategorie und dann dazugehörige Datensätze zweispaltig ausgegeben.
Hab das mal an einer meiner DB's gemacht, hier der Link: http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/hempelr/test/viskart
und hier der Code (ohne Einschränkung der AUsgabe-Range)
-----schnipp----
<perl>
get "sort=$ort", "viskart";
while(get_next("viskart"))
{
push @ArrOrt, $ort if index("@ArrOrt", "$ort")<0;
}
out @ArrOrt;
foreach $l_ort (@ArrOrt)
{
get "ort==$l_ort", "viskart";
while(get_next("viskart"))
{$cnt_ort++;
$inf = $lcnt % 2;
if ($inf eq 0)
{
$a_linhalt.="<tr valign=top><td>Bezeichnung: $bezeichnun<br>Name: $name</td></tr>";
}
$lcnt++;
$inf2 = $rcnt % 2;
if ($inf2 eq 1)
{
$a_rinhalt.="<tr valign=top><td>Bezeichnung: $bezeichnun<br>Name: $name</td></tr>";
}
$rcnt++;
}
out "<table border=1 width=800><tr><td colspan=2 align=center><p><b>Ort: $l_ort im Landkreis $landkreis</b></td></tr>";
out "<tr valign=top><td align=center><table border=1 width=90%>$a_linhalt</table></td><td align=center><table border=1 width=90%>$a_rinhalt</table></td></tr><tr><td colspan=2 align=center>Insgesamt $cnt_ort Gemeinden gefunden</td></tr></table>";
$a_linhalt="";
$a_rinhalt="";
$cnt_ort="0";
$lcnt=0;
$rcnt=0;
}
</perl>
----schnapp----
Komisch ist nur, daß er zu Feldinhalten mit Leerzeichen nichts findet, obwohl was drin steht. Bin nicht dahinter gekommen, wie man im get mittels "feld==$Inhalt" auch die Datensätze angezeigt bekommt, wo in $Inhalt Leerzeichen im Scalar stehen - vielleicht mal ne Frage an die Profis
Gruß
Ruben
Antworten
Beitrag von Micha Jost (347 Beiträge) am Mittwoch, 12.Juni.2002, 14:27.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo Ruben,
es ist wirklich toll wie viele Leute sich hier die Birne zermartern, um dieses Problem zu lösen.
Was Deinen Link/Code angeht konnte ich eine Gruppierung entdecken, aber noch keine 2-spaltige Darstellung, ich habe den Eindruck da wird auch noch kräftig gebastelt-zumindet verändert sich das Bild bei jedem Aufruf.
Ich hoffe nur, dass wenn das Problem mal gelöst ist, das für die Nachwelt in der bib zu finden sein wird.
Beste Grüße nach Thüringen
Micha
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 12.Juni.2002, 15:09.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
So, ich glaub jetzt hab ichs.
Hab den Code von Christoph mal umgebaut, ich glaub der Fehler lag an nem kleinen Schlüsselwort, und zwar bei der Anweisung "foreach $k (sort %Name}", habs mittels
"foreach $k (sort keys %Name}" zu ner sinnvollen Ausgabe gebracht.
Hier der Link: http://www.baseportal.de/cgi-bin/baseportal.pl?htx=/hempelr/test/viskart
hier der Code:
-----schnipp----
<perl>
get "sort=$ort", "viskart";
while(get_next("viskart"))
{
$h_bezeich{$ort}.="$bezeichnun#";
$h_name{$ort}.="$name#";
}
foreach $k (sort (keys %h_bezeich))
{
@a_bezeich=split /#/,$h_bezeich{$k};
@a_name=split /#/,$h_name{$k};
$l_ort=$k;
foreach $n (@a_bezeich)
{
$cnt_ort++;
$l=shift @a_name;
$inf = $lcnt % 2;
if ($inf eq 0)
{
$a_linhalt.="<tr valign=top><td>Bezeichnung: $n<br>Name: $l</td></tr>";
}
$lcnt++;
$inf2 = $rcnt % 2;
if ($inf2 eq 1)
{
$a_rinhalt.="<tr valign=top><td>Bezeichnung: $n<br>Name: $l</td></tr>";
}
$rcnt++;
}
$cnt_ges=$cnt_ges+$cnt_ort;
out "<br><table border=1 width=800><tr><td colspan=2 align=center><p><b>Ort: $l_ort </b></td></tr>";
out "<tr valign=top><td align=center><table border=0 width=90%>$a_linhalt</table></td><td align=center><table border=0 width=90%>$a_rinhalt</table></td></tr><tr><td colspan=2 align=center>Insgesamt $cnt_ort Gemeinden im Ort $k gefunden</td></tr></table>";
$a_linhalt="";
$a_rinhalt="";
$cnt_ort="0";
$lcnt=0;
$rcnt=0;
}
out "Insgesamt wurden $cnt_ges Datensätze gefunden";
</perl>
----schnapp----
Ist allerdings noch ohne range, sollte aber ja kein Problem mehr sein.
Mußt "schweinisch" aufpassen, mit den Variablenbezeichnungen, hab mal alle auf nen Hash verweisenden mit $h_.... bennannt, alle auf ne Liste verweisenden mit $a_....
Hoffe, daß du durchsteigst und es jetzt hinkriegst.
Ich hab das eh auch eben gebraucht, und mit nur einem Durchlauf durch die DB ist schon sauberer als meine erste Lösung.
Gruß
Ruben
Antworten
Beitrag von Micha Jost (347 Beiträge) am Mittwoch, 12.Juni.2002, 15:33.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Hallo Ruben,
das sieht ja spitze aus.
Ich hoffe ich kann das für meine Variablen ohne allzugroße Reibungs- und Nervenverluste übertragen.
Das ist doch ein klarer Fall für die Bib-oder?
Eindeutiger Länderpunkt für Thüringen!
Gruß
Micha
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 12.Juni.2002, 15:36.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
neenee, Sachsen, genauer Erzgebirge.
Ja, mal sehn, wie man das für die Bib aufbereitet bekommt, hab noch einige Verständnisschwierigkeiten mit paar Sachen, muß erst mal noch in der Literatur suchen....
CU
Ruben
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 12.Juni.2002, 16:03.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
jaja, aus Sachsen kommen doch nur _die_besten_!!! *ggg*
Grüsse
Sander
Antworten
Beitrag von Micha Jost (347 Beiträge) am Mittwoch, 12.Juni.2002, 17:02.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Sorry Ruben,
für den geographischen faux pas. Ich hoffe der Fettnapf war nicht allzu tief.
Auf jedenfall weiss ich nun noch einen guten Grund warum ich Kirchesteuer zahle.
Aber da gibt´s noch ein bischen Feinschliff.
Zunächst, es klappt mit Deinem Code, hüpf, tänzel ..
Frage 1 : da kommt auch ein Feld URL vor, das sollte bei der Ausgabe auch aktiv sein (anklickbar), wie bekommt man das hin?
Frage 2: die Spaltenbreite variiert, kann man das irgendwie noch steuern?
Ansonsten...
Ein Riesendankeschööööön ins Erzgebirge.
Gruß
Micha
http://rathaus-buerstadt.de/baseportal/Linkliste_Kopie
get "Id==* sort=Kategorie,Name", "Linkliste";
while(get_next("Linkliste"))
{
$h_namen{$Kategorie}.="$Name#";
$h_links{$Kategorie}.="$URL#";
}
foreach $k(sort(keys %h_namen))
{
@a_namen=split /#/,$h_namen{$k};
@a_links=split /#/,$h_links{$k};
$l_Kategorie=$k;
foreach $n (@a_namen)
{
$cnt_Kategorie++;
$l=shift@a_links;
$inf=$lcnt%2;
if($inf eq 0)
{
$a_linhalt.="<tr valign=top><td>Bezeichnung: $n<br>Name: $l</td></tr>";
}
$lcnt++;
$inf2=$rcnt%2;
if ($inf2 eq 1)
{
$a_rinhalt.="<tr valign=top><td>Bezeichnung: $n<br>Name: $l</td></tr>";
}
$rcnt++;
}
$cnt_ges=$cnt_ges+$cnt_Kategorie;
out "<br><table border=0 width=80% font=Verdana, Arial, Helvetica size=1><tr><td colspan=2 align=left><p><b>Kategorie: $l_Kategorie </b></td></tr>";
out "<tr valign=top><td align=center><table border=0 width=90%>$a_linhalt</table></td><td align=center><table border=0 width=90%>$a_rinhalt</table></td></tr><tr><td colspan=2 align=left>Insgesamt $cnt_Kategorie Links in der Kategorie $k vorhanden</td></tr></table>";
$a_linhalt="";
$a_rinhalt="";
$cnt_Kategorie="0";
$lcnt=0;
$rcnt=0;
}
out "Insgesamt wurden $cnt_ges Datensätze gefunden";
</perl>
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 12.Juni.2002, 19:59.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
geographischer faux pas kein prob :-)
Links funzen ja schon, wie man sehen kann.
Mit den Spaltenbreiten am besten mit den Ausgabetabellen, evtl. auf feste Breite setzen (die Haupttabelle die bei dir mit 80% angegeben ist). Und dann die Ausgabetabellenzelle, in die die die linke bzw. rechte Tabelle kommt mal linksbündig ausrichten(Die <td>'s in der vorletzten Ausgabe (Zeile vor der Variablenrücksetzung).
Sieht gut aus, wie das gesamte Bisy - Klasse Anwendung.
Na dann, man sieht sich sicher hier wieder
Ruben
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 12.Juni.2002, 17:42.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 12.Juni.2002, 19:48.
Re: get Ausgabe 2-spaltig mit Sahnehäubchen
stimmt - nur im team ist man stark!!!
hat wieder mal was gebracht..... :-)
Antworten