Wie sieht den der Tabellen-Quelltext der Ausgabeseite aus?pergachris wrote: ↑Thu Jan 30, 2020 10:19 amBislang sieht die Ausgabe der CSV Datei so aus:
Spalte1;Spalte2;Spalte3
1;2;3
Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“ Ludwig's XH-Templates for MultiPage & OnePage
-
- Posts: 190
- Joined: Fri Aug 31, 2012 9:28 pm
- Location: Hemden (NRW)
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Hallo,
die Datei ist so aufgerufen:
{{{PLUGIN:csv_as_table('./userfiles/tabellen/Mappe2.csv');}}}
Das sieht dann auf der Seite so aus:
<div><table class="">
<tbody>
<tr><td>Spalte 1;Spalte 2;Spalte 3</td></tr>
<tr><td>1;2;3</td></tr>
</tbody>
</table>
</div>
Ich ahne schon die Problematik. Der Inhalt der "Zellen" steht in einem "td"
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Wie sieht denn der Funktionsaufruf aus? Scheint der falsche Delimiter zu sein.
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
1.) Im Code von Christoph ist auch noch ein Fehler und zwar in der 2. Zeile
Müsste lauten,
ansonsten wird die Klasse für <table> nicht gesetzt.
2.) Ich habe den Code mal angepasst und noch Klassen für <thead> und <tbody> hinzugefügt. Eigentlich nicht nötig, man kann die Tabelle auch so gestalten über die Klasse im <table> Tag.
Diesen Code einfach in cmsimple/userfuncs.php einfügen. Wenn es diese Datei noch nicht gibt, einfach erstellen, und am Anfang noch ergänzen:
Also, im oben genannten Beispiel von pergachris wäre das folgender:
4.) Grobes CSS-Styling
Code: Select all
$o = '<table class="'.$config['classes'].'">'."\n";
Code: Select all
$o = '<table class="'.$classes.'">'."\n";
2.) Ich habe den Code mal angepasst und noch Klassen für <thead> und <tbody> hinzugefügt. Eigentlich nicht nötig, man kann die Tabelle auch so gestalten über die Klasse im <table> Tag.
Code: Select all
function csv_as_table($fn, $headings = FALSE, $classes = 'csv_table', $delimiter = "\t", $enclosure = '"') {
$o = '<table class="'.$classes.'">'."\n";
if (($fh = fopen($fn, 'r')) !== FALSE) {
if ($headings !== FALSE) {
$o .= '<thead class="csv_thead"><tr>';
if ($headings === TRUE) {
if (($headings = fgetcsv($fh, 4096, $delimiter, $enclosure)) === FALSE) {
$headings = array();
}
}
foreach ($headings as $heading) {
$o .= '<td>'.$heading.'</td>';
}
$o .= '</tr></thead>'."\n";
}
$o .= '<tbody class="csv_tbody">'."\n";
while (($rec = fgetcsv($fh, 4096, $delimiter, $enclosure)) !== FALSE) {
$o .= '<tr>';
foreach ($rec as $field) {
$o .= '<td>'.htmlspecialchars($field).'</td>';
}
$o .= '</tr>'."\n";
}
fclose($fh);
$o .= '</tbody>'."\n";
}
$o .= '</table>'."\n";
return $o;
}
Code: Select all
<?php
3.) Das heißt, per Pluginaufruf kann man für jede Tabelle die richtigen individuellen Parameter eintragen. Es muss also nichts am Code in der userfuncs.php geändert werden.cmb wrote:Um ein CSV von Advancedform anzuzeigen auf der gewünschten Seite (im Quellcode) schreiben:Den Pfad immer relativ zur aktuellen Sprache angeben. Für die Hauptsprache also z.B.: ./plugins/advancedform/data/formular.csvCode: Select all
{{{PLUGIN:csv_as_table('PFAD_ZUR_DATEI');}}}
Wenn andere CSV angezeigt werden sollen, dann sind vermutlich die Parameter zu ändern. Das kann direkt beim PLUGIN-Call erfolgen. Die zusätzlichen Parameter:Es müssen nicht alle Parameter angegeben werden, aber es dürfen auch keine übersprungen werden. Ich hoffe, die Reihenfolge ist einigermaßen sinnvoll.
- $headings FALSE um keine Tabellenüberschrift anzuzeigen, TRUE um diese der 1. Zeile der Datei zu entnehmen, oder array('1.Spalte', '2.Spalte', '3.Spalte') um diese selbst anzugeben
- $classes eine oder mehrere Klassen (durch Leerzeichen getrennt), die dem <table> zugewiesen werden
- $delimiter das Trennzeichen, also üblicherweise ein Tab oder ein ","
- $enclosure das Zeichen, das die einzelnen Feldwerte umschließt. Meist ein "
Also, im oben genannten Beispiel von pergachris wäre das folgender:
Code: Select all
{{{PLUGIN:csv_as_table('./userfiles/downloads/test-csv-einbinden.csv', TRUE, 'csv_table-01', ';', '"');}}}
Code: Select all
.csv_table-01 {
text-align: center;
width: 100%;
}
.csv_thead {
background-color: #03A9F4;
}
.csv_tbody {
background-color: #EEEEEE;
}
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“ Ludwig's XH-Templates for MultiPage & OnePage
-
- Posts: 190
- Joined: Fri Aug 31, 2012 9:28 pm
- Location: Hemden (NRW)
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Hallo,
ich hatte bislang keine Zeit mich damit zu beschäftigen.
Nun habe ich den Code ausprobiert.
Toll, ja, so habe ich es mir vorgestellt. Nun steht alles ordentlich untereinander.
Super, danke für die Hilfe
ich hatte bislang keine Zeit mich damit zu beschäftigen.
Nun habe ich den Code ausprobiert.
Toll, ja, so habe ich es mir vorgestellt. Nun steht alles ordentlich untereinander.
Super, danke für die Hilfe
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Ich nutze diese Userfunction auch und finde sie gut gelungen.
Nun möchte ich, dass ich in dieser Tabelle auch die Funktion email nutzen kann, d.h. z.B. der Nutzer aus einer Tabelle den Namen suchen kann und die Mail-Adresse erhält, die er dann auch gleich nutzen kann. Ein Eintrag in die CSV-Tabelle mit {{{email 'mailadresse'}}} funktioniert leider nicht.
Habt Ihr eine Idee, wie sich das umsetzen lässt?
Nun möchte ich, dass ich in dieser Tabelle auch die Funktion email nutzen kann, d.h. z.B. der Nutzer aus einer Tabelle den Namen suchen kann und die Mail-Adresse erhält, die er dann auch gleich nutzen kann. Ein Eintrag in die CSV-Tabelle mit {{{email 'mailadresse'}}} funktioniert leider nicht.
Habt Ihr eine Idee, wie sich das umsetzen lässt?
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Also mir persönlich ist diese Funktion auch nicht bekannt.
Aber selbst wenn, in der CSV würde das nicht ausgeführt.
Also wenn, dann wäre vielleicht ein Eintrag mit mailto einen Versuch wert.
Allerdings würde ich mir noch mal gründlich überlegen, ob man eine Tabelle mit Namen, den zugehörigen E-Mail-Adressen und wer weiss was noch für Daten veröffentlichen sollte. Und was die jeweiligen Betroffen davon halten werden.
Gruß Olaf, Plugins for CMSimple_XH
Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.
Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Ich habe es mal mit mailto versucht: geht auch nicht.
Kann man irgendwie php-code aller <a href...> durch die CSV direkt ausgeben, so es im Quelltext als Code umgesetzt wird?
Den Code für die userfunc habe ich mal aus dem Forum - Quelle??
P.S. Die Adressen sind dienstlich und stehen zuszätzlich in einem geschützten Bereich der Webseite...
Kann man irgendwie php-code aller <a href...> durch die CSV direkt ausgeben, so es im Quelltext als Code umgesetzt wird?
Den Code für die userfunc habe ich mal aus dem Forum - Quelle??
Code: Select all
function email($address,$subject='',$body='')
{
global $bjs;
$nojscolor = 'blue'; // color if javascript is off
list($name,$domain) = explode('@',$address);
list($server,$tdl) = explode('.',$domain, 2);
$add = '';
if($subject) {
$add .= '?subject='.rawurlencode($subject);
if($body) {
$add .= '&body='.str_replace(array('%3Cbr%3E','%3Cbr%20%2F%3E'), '\u00250D\u00250A', rawurlencode($body));
}
}
$hide = '<span style="display:none;"> ';
$show = ' </span>';
$js = "
var str1 = '<span style=\"padding-right:.15ex;padding-left:.15ex;\">@</span>';
var str2 = '.';
document.write('<a style=\"text-decoration:none;\" href=\"javascript:void(0);\" onfocus=\"createAddress(this,\'$tdl\',\'$name\',\'$add\',\'$server\');\" onblur=\"javascript:void(0);\">' + '$name' + '".$hide.rand().$show."' + str1 + '".$hide.rand().$show."' + '$server' + '".$hide.rand().$show."' + str2 + '".$hide.rand().$show."' + '$tdl' + '</a>' );";
static $email_has_run = 0;
if(!$email_has_run) $bjs = "<script type='text/javascript'>
function createAddress(a,tdl,name,add,server){
var n = '\u0040';
var d = '\u002E';
a.href = 'mai' + 'lto:' + name + n + server + d + tdl + add;
}</script>";
$email_has_run++;
return '<script type="text/javascript">'
. $js .'</script>'
. '<noscript>'
. '<span style="font-family:consolas,mono-space;word-spacing:-1ex;"><span style="color:'
. $nojscolor .';">'
. $name . $hide . rand() . $show .' </span><em>[ a t ]</em> <span style="color:'
. $nojscolor .';">'
. $server . $hide . rand() . $show . ' </span><em>[ . ]</em> <span style="color:'
. $nojscolor .';">'
. $tdl .'</span></span>'
. '</noscript>'
. '';
}
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Aus svasti's [Addon] ProtectmyEmail.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“ Ludwig's XH-Templates for MultiPage & OnePage
Re: Möglichkeit eine CSV Tabelle direkt anzeigen zu lassen?
Schade.
Den versteh ich nicht ganz. <a href ... ist html, kein php.
Ich hatte ja gehofft, dass ein Entrag in der csv wie dieser:
Code: Select all
<a href="mailto:rudi.rumpel@domain.tld">rudi.rumpel@domain.tld</a>
Dann kannst du nur die E-Mail-Adresse als einfachen Text in die csv schreiben, und hoffen, dass der eine oder andere Browser intelligent genug ist, das korrekt umzusetzen.
Dazu fehlt der erste Teil. Dann wird auch klar, wozu der Code eigentlich gedacht war.
Code: Select all
/**===================================
* ProtectmyEmail
* ===================================
* @name ProtectmyEmail
* @version 0.3
* @nfo http://svasti.de/downloads/versioninfo/protectmyEmail.nfo
*
* (c)2015 by svasti@svasti.de
*
* Usage {{{email 'name@domain.xx','email subject','email text body'}}}
* optional: email subject and text body
* for new line in text body use strg+return
*/
Gruß Olaf, Plugins for CMSimple_XH
Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.
Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.