Abfrage durch Checkboxen
Michael
- php
Hallo leute,
ich hab folgendes problem, an dem ich schon den ganzen tag rumbeiße...
ich habe eine datenbank aufgestellt, z.b. Spalte A, B, C, D, E, F.
Nun möchte ich eine Abfrage über Checkboxen steuern, das heißt, sind die Checkboxen A, C, E aktiv, werden auch nur diese spalten aus der datenbank abgefragt.
Könnt ihr mir helfen??
Danke,
mee_look
Hallo Michael,
ich habe eine datenbank aufgestellt, z.b. Spalte A, B, C, D, E, F.
du meinst: In einer Datenbank hast du eine Tabelle mit 6 Spalten, die von A bis F benannt sind.
Nun möchte ich eine Abfrage über Checkboxen steuern, das heißt, sind die Checkboxen A, C, E aktiv, werden auch nur diese spalten aus der datenbank abgefragt.
$query_text = "SELECT * FROM tabelle
WHERE ".(isset($_GET["checkbox_A"]) ? "A
= 'und?'" : ""). "..."; //usw.
Grüße,
Sven
echo $begrüßung;
ich habe eine datenbank aufgestellt, z.b. Spalte A, B, C, D, E, F.
Nun möchte ich eine Abfrage über Checkboxen steuern, das heißt, sind die Checkboxen A, C, E aktiv, werden auch nur diese spalten aus der datenbank abgefragt.
Du hast die Spaltennamen, die du haben möchtest. Wie soll die Query z.B. für das ACE-Beispiel aussehen? Sicher so:
SELECT A,C,E FROM ...
Es gilt also, die drei Spaltennamen mit zwei Kommas zu versehen. implode() und ein Array erfüllt diese Aufgabe recht einfach.
echo "$verabschiedung $name";
jo, wie mans nimmt
ich bin auf seite 1
da wähle ich via checkboxen die spalten aus
z.b.
[X] Checkbox A
[ ] Checkbox B
[X] Checkbox C
[ ] Checkbox D
[X] Checkbox E
[ ] Checkbox F
Dann soll kommen:
| A | C | E |
--------------------------------------
| bli | blu | bla |
so in etwa ;D
echo $begrüßung;
da wähle ich via checkboxen die spalten aus
z.b.
[X] Checkbox A
[ ] Checkbox B
[X] Checkbox C
[ ] Checkbox D
[X] Checkbox E
[ ] Checkbox F
Nun, du musst zuerst aus den Checkboxen-Formulardaten die Feldnamen bestimmen. Diese sollten unbedingt gegen eine Liste der erlaubten Feldnamen geprüft werden. Die Feldnamen sammelst du in einem Array und dann gehts mit implode() weiter.
<input type="checkbox" name="feld[]" value="A"> usw.
Die angekreuzten Felder findest du in dem Array $_POST['feld']. Das kannst du dir mit print_r($_POST['feld']) zur Ansicht ausgeben lassen, und es mit foreach durchlaufen.
echo "$verabschiedung $name";
n'abend,
Nun möchte ich eine Abfrage über Checkboxen steuern, das heißt, sind die Checkboxen A, C, E aktiv, werden auch nur diese spalten aus der datenbank abgefragt.
In deinem Formular hast du etwa das folgende?
<label><input type="checkbox" name="columns[]" value="A" /> A</label>
<label><input type="checkbox" name="columns[]" value="B" /> B</label>
<label><input type="checkbox" name="columns[]" value="C" /> C</label>
Dann kannst du in deinem Script etwas wie das folgende versuchen:
$columns = array(
'A' = 'spalte_A',
'B' = 'spalte_B',
'C' = 'spalte_C',
);
$cols = array();
if( !empty($_REQUEST['columns']) )// $_GET oder $_POST benutzen wenn der Kontext bekannt ist
{
foreach( $_REQUEST['columns'] as $c )
{
$cols[] = $columns[ $c ];
}
if( !$cols )
{
// Fehlerbehandlung, wenn keine (bekannte) Spalte gewählt?!
}
}
else
{
// Fehlerbehandlung, wenn keine Spalte gewählt?!
}
mysql_query( 'SELECT '. join( ',', $cols ) .' FROM table' );
Auf diese Art wird auch gleich mögliche Probleme mit "falschen" oder unbekannten Spaltennamen zuvorgekommen.
Alternativ kannst du natürlich auch gerne aray_filter() benutzen ;)
weiterhin schönen abend...
echo $begrüßung;
foreach( $_REQUEST['columns'] as $c )
$cols[] = $columns[ $c ];
So einfach geht es nicht, denn bei einem Fehler gibt es ein bei Standardeinstellung unterdrücktes. "Notice: Undefined offset" und einen null-Eintrag in $cols, der sich beim join() (implode()!) unschön bemerkbar macht. Da wirst du wohl auch noch ein if isset() mit einbauen müssen.
echo "$verabschiedung $name";