Mit Hilfe von Checkboxen Ausgabe bestimmen

Moritz123

Erfahrenes Mitglied
Hallo!

ich möchte meiner Adressdatenbank (MySQL) eine Druckfuntion hinzufügen.
Da diese aber sehr viele unterschiedliche Felder enthält, will ich es dem User ermöglichen, vor dem Drucken zu bestimmen, welche Felder gedruckt werden sollen.
Das möchte ich mit Hilfe von Checkboxen realisieren, weiß aber nicht wie.
Ich hoffe, ihr könnt mir da weiterhelfen.....

Vielen Dank!
 
Hallo,

du solltest die Checkboxen als Array benennen (<input type="checkbox" name="chkFeld[Feld1]">) und auf dem Zielformular einfach mit isset abfragen ob die Box bzw. das Arrayelement existiert. Das ist übersichtlicher als die Checkboxen mit Zahlen durchzunummerieren, da Du auf der neuen Seite gleich weißt, was Du abfragst.

Gruss,

Thomas
 
Hallo!

erst einmal vielen Dank für die Antworten, sie haben doch etwas Licht ins Dunkel gebracht :)
Ich weiß nun, wie ich die die betreffenden Werte in die DB-Query bekomme, was mir aber noch vollkommen unklar ist, ist die Ausgabe der Daten, welche ja auch abhänig von den gewählten Checkboxen sein soll.
Ich möchte gerne das folgende:
Die Daten sollen in einer Tabelle ausgegeben werden und zwar, wie bereits gesagt, abhängig von den aktivierten checkboxen:

Beispiel:
Aktivierte checkboxen: name,vorname, email, telefon
Code:
name  |  vorname  |  email  | telefon
===== | ==========|=========| ======
müller|  hans     |  h@mu.de| 110
===== | ==========|=========| ======

Wie kann ich diese Tabelle nun steuern?
Ich hoffe, das meine Erklärung mein Problem verdeutlicht haben. Wenn nicht, versuche ich es gerne anders...


Vielen Dank!
 
Hallo,

sollen Deine Daten zur Laufzeit erneuert werden? Also, wenn Du eine Checkbox aktivierst, soll dann Deine gesamte Ausgabe sich sofort verändern? Das würde höchstens mit Javascript gehen (bei der Checkbox: onclick="Javascript:submit()").
Damit würdest Du die Daten jedesmal an das Formular schicken, das in Deinem Form-Tag als Action angegeben ist. Damit das muß es allerdings auf die gleiche Seite verweisen (also wenn die Seite Tabellenausgabe.php heißt in den Form-Tag action="Tabellenausgabe.php").

Wenn Du die Namen der Checkboxen nicht in die Query bekommst ist es logisch, Du kannst Checkboxen keinen Wert zuweisen, wenn sie angeklickt sind haben sie den Wert "on" andernfalls sind sie nicht gesetzt. Du mußt in dem Antwortformular abfragen ob eine Checkbox gesetzt ist, wenn ja mußt Du das Feld in die Query eintragen (if(isset(chkFeld['Name']){$SQL_Query_String+=", Name"}).

Ich hoffe ich habs einigermaßen verständlich erklärt ;-)

Gruss,

Thomas
 
Hallo!

vielen Dank für die Antwort!
Wie ich die Query anlege ist mir klar, mein Problem besteht vielmehr in der Tabelle, in der die die Daten angezeigt werden sollen. In ihr müssen sich die Spalten anpassen, je nach dem welche Checkboxen "on" sind. Eine Aktualisierung zur Laufzeit ist nicht nötig, da es sich um eine Druckseite handelt.
 
Checkboxen als Array nutzen

Hi,

machs am besten so:

du legst die Checkboxen mit einem Array als Namen an und schreibst die Bezeichnung daneben z.B.:
<checkbox name="chkArray[0]">name
<checkbox name="chkArray[1]">vorname

In der Seite wo die Checkboxen übergeben werden, definierst Du ein Array mit den Spaltenüberschriften. Dann fragst Du die Checkboxen in einer Schleife ab. Wenn eine Checkbox gewählt wurde, nimmst Du den Namen aus dem Array mit den Spaltenüberschriften und schreibst ihn 1. in Deine Query und 2. in ein weiteres Array, welches dann die ausgewählten Spaltenüberschriften beinhaltet.

// ich gehe in dem Beispiel davon aus, daß es nur 2 Einträge gibt
// Globalisierung
global $chkArray;

// Spaltenüberschriften festlegen (TabellenSpaltenNamen)
$arrSpaltenueberschrift[0] = "name";
$arrSpaltenueberschrift[1] = "vorname";

// Variablen festlegen
$strQuery = "";
$arrSpaltenDarstellung = array();
$intZaehler = 0;
// Schleife über das übergebene Array
for($i = 0; $i<2; $i++){
if(isset($chkArray[$i]){
if($i==0){
$strQuery = $arrSpaltenueberschrift[$i];
}
else{
$strQuery+=", ".$arrSpaltenueberschrift[$i];
}
$arrSpaltenDarstellung[$i]=$arrSpaltenueberschrift[$i];
$intZaehler++;
}
}

Damit hast Du dann die Felder die in Deiner Query stehen + Deine Spaltenüberschriften. Der Zaehler gibt die Anzahl der ausgewählten Felder in Deiner Tabelle an. Nun mußt Du nur noch die Daten aus der Tabelle in ein Array bzw. in ein Resultset und das ganze in einer Tabelle ausgeben. Da Du wahrscheinlich weißt, wie man Daten aus einer Tabelle liest, zeige ich hier nur die Ausgabe.

<table>
<tr>
<?php
// Spaltenüberschriften festlegen
for($i = 0; $i<$intZaehler; $i++){
echo "<td>".$arrSpaltenDarstellung[$i]."</td>";
}
echo "</tr><tr>";

// Die Abgrenzung der Felder zu den Werten
for($i = 0; $i<$intZaehler; $i++){
echo "<td>====</td>";
}

// Die Ausgabe der Werte aus der DB, ich gehe davon aus, das sie in einem
// 2-Dimensionalen Array stehen, getrennt nach [Nummer][Name]
for($idxWerte=0; $idxWerte<$arrWerte.length(); $idxWerte++){
for($i = 0; $i<$intZaehler; $i++){
echo "<td>".$arrWerte[$idxWerte][$arrSpaltenDarstellung[$i]]."</td>";
}
echo "</tr><tr>";
}
?>
</tr>
</table>

Durch dieses Vorgehen erhälst Du eine druckbare Tabellenansicht.

Bitte schreiben obs gefunzt hat

Gruss,

Thomas
 
Zuletzt bearbeitet:
Hallo!

vielen Dank für die Anwort und sorry für die späte meinige.

Ich habe inzwischen ein bisschen improviesiert und auch eine Lösung gefunden.
Danach frage ich einfach ab, ob das Feld true ist und lasse es dann ausgeben.
 
Zurück