Hallo liebe Helfer,
hab da ein Problem mit Checkboxen und den Einträgen in der DB. In meiner eigenen EXT. gibts eine Auswahl per Checkboxen. ich habe mich für:
"Checkbox, 10 boxes in two rows (max) 10 checkboxes" entschieden. Die darin enthaltenen Daten sollten eigentlich als Zahlen in die DB geschrieben werden, damit ich später in einem Formular eine Suche starten kann. Was aber passiert ist folgendes: Wenn ich nur eine Auswahl treffe, dann erhalte ich in der DB je nach Eingabe folgende Werte:
Checkbox 1 = 0
Checkbox 2 = 2
Checkbox 3 = 4
Checkbox 4 = 8
Checkbox 5 = 16
Checkbox 6 = 32
Ok, das alleine wäre nicht so tragisch, weil ich ja mein Formular dementsprechend anpassen könnte. ABER
Wenn ich im BE [b]zwei[/b] Auswahlen treffe z.B. Checkbox 2 und die 5, dann erhalte ich in der DB die Zahl 18 (also die beiden wurden addiert).
Das sollte nicht so sein ;-), weil ich ja jetzt keine spezifische Suche mehr machen kann.
Also meine Frage: Wie "erkläre" ich dem Kickstarter
das er die Einträge getrennt (z.b. ; oder , ) in die DB schreibt?
Oder ist die Wahl der Checkboxen nicht die richtige. Leider funktionieren alle Anderen nur mit einer Auswahl. Ich benötige aber eine mehrfach Auswahl.
Hier mal der Code des TCA
"exclude" => 1, "label" => "LLL:EXT:as_locations/locallang_db.xml:tx_aslocations_main.art", "type" => "check", "cols" => 4, ), ) ), ),
Und hier die Abfrage in der EXT. die zur Ausgabe führt:
Die Funktion von hier --------------------------- /* $this->config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf["pid_list."])); $this->config["pid_list"] = $this->config["pid_list"] ? implode(t3lib_div::intExplode(",",$this->config["pid_list"]),",") : $this->cObj->data["pages"]; list($pid) = explode(",",$this->config["pid_list"]); $this->pid = $pid; */ $singleStr = ''; if($uid){ $sqlAd = "WHERE uid='$uid' "; if($w){ -------------------------- Hier kommen andere Abfragen -------------------------- } ------------- bis hier ist nicht so wichtig (da funktioniert alles aber ab hier ------------------------------------------------ } else if($i=='art'){ switch($w){ case 1: $sqlAds[] = "$i ='1' ";(würde ich gegebenfalls durch 2,4,8,16,32 austauschen) break; case 2: $sqlAds[] = "$i ='2' "; break; u.s.w. u.s.w. ------------------------------ } } else { $sqlAds[] = " $i = '$w' "; } } } } } if($limit){ if(!$start){ $start=0; } $sqlAd .= "LIMIT $start,".$this->CONFIG['maxRows']; } $query = "SELECT * FROM tx_aslocations_main $sqlAd "; // echo $query.'<hr />'; $out[]=$row; } return $out; }
Nochmal zur Erklärung des obigen Codes der pi:
In der Extension sind mehrere Auswahlkriterien (alle aber mit Selectorbox)
den Code habe ich hier weggelassen, weil das alles funktioniert.
Nur bei der Mehrfachauswahl der Tabelle 'art' klappts natürlich nicht.
Hat einer einer Tipp dazu??
Andreas

