hallo an alle
ich baue ein php-script, bei dem es darum geht, dass dem user nur die datensätze angezeigt werden, die der kategorie entsprechen die er angeklickt hat. ich habe das (teils mittels hilfe aus einem anderem forum) sogar selbst hinbekommen.
es existieren in der datenbank 2 tabellen. eine tabelle beinhaltet alle datensätze (an die 50 stück), und jeder datensatz wird nur einer kategorie zugeordnet, es existiert dafür hal eine palte "catid" in der tabelle. in der anderen tabelle stehen die kategorien selbst.
am anfang der seite werden alle kategorien (also nur der Name der Kategorie) angezeigt, jede erhält eine checkbox die standardgemäß aktiviert ist.
Der user wird die datensätze in jedem fall erst dann angezeigt bekommen, wenn er auf den submitbutton (name="showcats", value="Anzeigen") drückt. deswegen sollten standardgemäß alle checkboxen aktiviert sein (damit er nicht erst alle von hand angklicken muss falls er alle kategorien angezeigt haben möchte). aber es könnte ja auch der andere fall eintreten: dass der user bereits ein paar boxen deselektiert hat und auf Anzeigen gedrückt hat.
es entstehen also 2 fälle:
Fall 1: der User hat die seite zum ersten mal aufgerufen: es werden also die bestehenden Kategorien samt checkbox angezeigt, alle haben die "checked" markierung, und der user kann auf anzeigen drücken
Fall 2: falls der submitbutton aber aktiviert wurde, sollen natürlich nur noch die checkboxen angeklickt sein die der user vorher auch angewählt hat. das problem das ich nun habe, ist, dass das array das die checkboxen erzeugt haben nur die werte anzeigen wird, die auch angeklickt wurden, nicht aber die, die nicht angeklickt wurden.
/*durch suchfunktion-nutzung kam dann etwas auf von wegen "isset" geschichte, dass man prüfen soll ob die variable gesetzt ist, und wenn nicht, dass die variable dann auf null gesetzt werden soll. aber das kann nicht wirklich funktionieren, und es hat auch nicht funktioniert*/
folgendermaßen sieht mein code bis jetzt aus:
mein problem ist: ich habe, wenn ich auf Anzeigen geklickt habe, ein Array, das besteht aus
0 wert1
1 wert2
2 wert3
usw...
die erste zahl ist der key des arrays, der zweite wert ist der wert den ich halt der jeweiligen checkbox zugewiesen habe. aufgeführt werden aber nur die werte die auch wirklich angeklickt wurden
nun habe ich ja die whileschleife die erstmal alle kategorien auflistet. nehmen wir mal an es ist der erste durchgang der while-schleife und es wird die erste checkbox mit dem ersten value erstellt. wie soll ich dann eine funktionierende kontrolle einbauen, wenn ich als vergleichsreferenz ein array habe ? da wäre die einzige möglichkeit eine art zähler ($i).
wenn ich das array der checkboxen so hinbekommen/rausbekommen würde, dass es z.B: so aussieht:
0 on
1 on
2 off
3 off
4 on
....
dann wäre es einfacher. ich könnte in meine erste whileschleife einfach den $i zähler einbauen und dann wäre der vergleich möglich...
das könnte dann z.B. so aussehen:
aber das array gibt mir ja nur aus was angeklickt wurde, und ich wenn da drei werte im array sind weiss ich nicht ob es die ersten drei checkboxen, oder die letzten drei oder was auch immer waren
Habt ihr ne Idee wie man es trotzdem hinbekommt ?
ich baue ein php-script, bei dem es darum geht, dass dem user nur die datensätze angezeigt werden, die der kategorie entsprechen die er angeklickt hat. ich habe das (teils mittels hilfe aus einem anderem forum) sogar selbst hinbekommen.
es existieren in der datenbank 2 tabellen. eine tabelle beinhaltet alle datensätze (an die 50 stück), und jeder datensatz wird nur einer kategorie zugeordnet, es existiert dafür hal eine palte "catid" in der tabelle. in der anderen tabelle stehen die kategorien selbst.
am anfang der seite werden alle kategorien (also nur der Name der Kategorie) angezeigt, jede erhält eine checkbox die standardgemäß aktiviert ist.
Der user wird die datensätze in jedem fall erst dann angezeigt bekommen, wenn er auf den submitbutton (name="showcats", value="Anzeigen") drückt. deswegen sollten standardgemäß alle checkboxen aktiviert sein (damit er nicht erst alle von hand angklicken muss falls er alle kategorien angezeigt haben möchte). aber es könnte ja auch der andere fall eintreten: dass der user bereits ein paar boxen deselektiert hat und auf Anzeigen gedrückt hat.
es entstehen also 2 fälle:
Fall 1: der User hat die seite zum ersten mal aufgerufen: es werden also die bestehenden Kategorien samt checkbox angezeigt, alle haben die "checked" markierung, und der user kann auf anzeigen drücken
Fall 2: falls der submitbutton aber aktiviert wurde, sollen natürlich nur noch die checkboxen angeklickt sein die der user vorher auch angewählt hat. das problem das ich nun habe, ist, dass das array das die checkboxen erzeugt haben nur die werte anzeigen wird, die auch angeklickt wurden, nicht aber die, die nicht angeklickt wurden.
/*durch suchfunktion-nutzung kam dann etwas auf von wegen "isset" geschichte, dass man prüfen soll ob die variable gesetzt ist, und wenn nicht, dass die variable dann auf null gesetzt werden soll. aber das kann nicht wirklich funktionieren, und es hat auch nicht funktioniert*/
folgendermaßen sieht mein code bis jetzt aus:
PHP-Code:
echo '<form action="';
echo $_SERVER['PHP_SELF'];
echo '" method="post">';
$cats=mysql_query("SELECT id, catname FROM `tuning-cats`");
echo '<p align="center">';
while ( $boxen = mysql_fetch_array($cats) )
{
$catid = $boxen["id"];
$catname = $boxen["catname"];
echo '<input type="checkbox" name="selected[]" value="'.$catname.'" checked> '.$catname.' ';
}
echo '<input type="submit" name="showcats" Value="Anzeigen"></p>';
if (isset($_REQUEST['selected'])) {
//reset($_REQUEST['selected']);
foreach ($_REQUEST['selected'] as $k => $v)
{
$getcatidforcatname=mysql_query("SELECT id, catname FROM `tuning-cats` WHERE catname='$v'");
$catids = mysql_fetch_array($getcatidforcatname);
$matchid = $catids["id"];
/*im array kann ich jeder checkbox leider nur einen wert zuweisen, . ich habe als wert den "catname" gewählt, da
der user auf jeden fall nochmal die Kategorie als überschrift sehen soll. wenn später die datensätze gewählt
werden, muss ich natürlich für die catname die entsprechende catid herausbekommen*/
echo '<br><div id="kattitel"><b>'.$v.'</b></div>'; //Ausgabe der Kategorie
echo '<br><br>';
$ergebnis=mysql_query("SELECT id, name, sdwert, beschr, empf, catid
FROM tunings WHERE catid='$matchid' ORDER BY name ASC");
while ($row = mysql_fetch_array($ergebnis) )
{
//Es folgt die Darstellung der Datensätze in speziell formatierten Tabellen
}
mein problem ist: ich habe, wenn ich auf Anzeigen geklickt habe, ein Array, das besteht aus
0 wert1
1 wert2
2 wert3
usw...
die erste zahl ist der key des arrays, der zweite wert ist der wert den ich halt der jeweiligen checkbox zugewiesen habe. aufgeführt werden aber nur die werte die auch wirklich angeklickt wurden
nun habe ich ja die whileschleife die erstmal alle kategorien auflistet. nehmen wir mal an es ist der erste durchgang der while-schleife und es wird die erste checkbox mit dem ersten value erstellt. wie soll ich dann eine funktionierende kontrolle einbauen, wenn ich als vergleichsreferenz ein array habe ? da wäre die einzige möglichkeit eine art zähler ($i).
wenn ich das array der checkboxen so hinbekommen/rausbekommen würde, dass es z.B: so aussieht:
0 on
1 on
2 off
3 off
4 on
....
dann wäre es einfacher. ich könnte in meine erste whileschleife einfach den $i zähler einbauen und dann wäre der vergleich möglich...
das könnte dann z.B. so aussehen:
PHP-Code:
while $boxen = mysql_fetch_array($cats) )
{
....
$i=0;
if ($_POST['selected[$i]'] == "on")
{echo " checked";}
$i++;
....
}
Habt ihr ne Idee wie man es trotzdem hinbekommt ?
Kommentar