Multi Objekt Suche

Fragen zum Erstellen von Templates für webEdition.
Benutzeravatar
christobal
Senior Member
Beiträge: 177
Registriert: Do 4. Nov 2010, 13:03
Wohnort: Reith bei Seefeld, Tirol - Österreich
Kontaktdaten:

Multi Objekt Suche

Beitragvon christobal » Mi 4. Sep 2019, 10:40

Grüß Euch webEditioneers!

Steh wieder an! Und zwar hab ich eine Team-Klasse mit einem Multi Objekt Feld "Rechtsgebiete".
Den Team-Mitgliedern (Rechtsanwälte) werden Rechtsgebiete zugeordnet.
Jetzt will ich nach Team-Mitgliedern mit einem bestimmten Rechtsgebiet suchen.

Im Such-Formular generier ich mir aus den Rechtsgebiete-Objekten eine select und das Ganze schaut dann so aus:

Code: Alles auswählen

<we:form name="suchformular" type="object" id="self" class="form-horizontal">

<we:listview name="rechtsgebiete_listview" type="object" classid="16" order="Rechtstitel" desc="false">
<select name="rechtsgebieteselect" id="rechtsgebieteselect">
<option value="%">Auswahl</option>
<we:repeat><option value="<we:field type="text" name="Rechtstitel" />"><we:field type="text" name="Rechtstitel" /></option></we:repeat>
</select>
</we:listview>

<input type="submit" name="Submit" value="suchen" />

</we:form>
Condition:

Code: Alles auswählen

<we:setVar from="request" to="global" namefrom="rechtsgebieteselect" nameto="rechtsgebieteselect" />

<we:condition name="condition">
<we:conditionAdd field="Rechtstitel" var="rechtsgebieteselect" compare="like"/>
</we:condition> 
Auflistung:

Code: Alles auswählen

<we:listview type="object" name="team_listview" order="Nachname" classid="3" condition="\$condition" >
<we:repeat><we:field name="Nachname" /></we:repeat>
</we:listview>
Geht das gar nicht?
Oder hab ich einen Denkfehler?

Wäre um jegliche Hilfe sehr dankbar!
Christoph
BIG Detail, Kaspar & Sigl OG
Riedgasse 8b
A-6020 Innsbruck
Tel. +43 512 346070-40
Fax +43 512 346070-20
Mobil: +43 676 3438011

christoph.kaspar@bigdetail.com
http://www.bigdetail.com

mokraemer
Senior Member
Beiträge: 2854
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Multi Objekt Suche

Beitragvon mokraemer » Mi 4. Sep 2019, 11:59

also du brauchst in deinem Select auf jeden Fall mal die ID des Objektes als Wert. Der Name hilft dir nicht weiter.
<we:condition> kann noch nicht mit Multi-Objekten umgehen - da fehlt vermutlich ein FR.
Die Like-Abfrage liefert auf keinen Fall das richtige Ergebnis, du muß eine FIND_IN_SET(wert,feld) als Condition setzen - darauf achten, das wert unbedingt ein int ist:

Code: Alles auswählen

<we:setVar from="request" to="global" namefrom="rechtsgebieteselect" nameto="rechtsgebieteselect" varType="int"/>
Für alle String-Felder unbedingt prepareSQL="true" setzen, sonst baust du hier eine tolle SQL-Injection!
webEdition-Kern-Entwickler

Benutzeravatar
christobal
Senior Member
Beiträge: 177
Registriert: Do 4. Nov 2010, 13:03
Wohnort: Reith bei Seefeld, Tirol - Österreich
Kontaktdaten:

Re: Multi Objekt Suche

Beitragvon christobal » Mo 9. Sep 2019, 15:35

Danke Mokramer für Deinen Hinweis!! Ganz schaff ichs aber noch nicht!

Das Formular mit der select schaut jetzt so aus:

Code: Alles auswählen

<we:form name="suchformular" type="object" id="self" class="form-horizontal">
<we:listview name="rechtsgebiete_listview" type="object" classid="16" order="Rechtstitel" desc="false">
<select name="rechtsgebieteselect" id="rechtsgebieteselect">
<option value="%">Auswahl</option>
<we:repeat><option value="<we:field type="text" name="we_id" />"><we:field type="text" name="Rechtstitel" /></option></we:repeat>
</select>
</we:listview>
<input type="submit" name="Submit" value="suchen" />
</we:form>
Die Variable schaut jetzt so aus:

Code: Alles auswählen

<we:setVar from="request" to="global" namefrom="rechtsgebieteselect" nameto="rechtsgebieteselect" varType="int" prepareSQL="true" />
aber wie ich jetzt die Condition baue, ist mir ein Rätsel!
Kannst Du mir da bitte unter die Arme greifen?!

Code: Alles auswählen

<we:condition name="condition">
<we:conditionAdd field="Rechtstitel" var="rechtsgebieteselect" compare="like"/>
</we:condition> 
Großes Danke aus dem Süden, Christoph
BIG Detail, Kaspar & Sigl OG
Riedgasse 8b
A-6020 Innsbruck
Tel. +43 512 346070-40
Fax +43 512 346070-20
Mobil: +43 676 3438011

christoph.kaspar@bigdetail.com
http://www.bigdetail.com

mokraemer
Senior Member
Beiträge: 2854
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Multi Objekt Suche

Beitragvon mokraemer » Do 12. Sep 2019, 11:56

Sorry, hatte keine Zeit zu antworten. Also, ich hoffe die Anzahl Objekte in der Klasse 16 ist kurz, denn bei der Suche muß die DB alle Felder durchgehen. Da es aktuell noch keine Funktion in <we:condition> für diese Suche gibt, muß man es leider von Hand machen (FR?):

Code: Alles auswählen

<we:setVar from="request" to="global" namefrom="rechtsgebieteselect" nameto="rechtsgebieteselect" varType="int" prepareSQL="true" />
<?php
if($GLOBALS['rechtsgebieteselect']){
	$GLOBALS['condition']='FIND_IN_SET('.((int)$GLOBALS['rechtsgebieteselect']).',multiobject_Rechtstitel)';
}else{
	//keine Suche, wenn keine Auswahl
	$GLOBALS['condition']='FALSE';
}
Ich hab es jetzt nicht ausprobiert, könnte sein das man den Zusatz "multiobject_" weglassen kann/muß.
webEdition-Kern-Entwickler

Benutzeravatar
christobal
Senior Member
Beiträge: 177
Registriert: Do 4. Nov 2010, 13:03
Wohnort: Reith bei Seefeld, Tirol - Österreich
Kontaktdaten:

Re: Multi Objekt Suche

Beitragvon christobal » Mo 16. Sep 2019, 12:37

Danke Dir mokramer! Das funzt super!

Ein kleines Problem hab ich noch: Kannst Du mir bitte noch sagen, wie ich das mit der vorhandenen Condition kombinieren kann?

Code: Alles auswählen

<we:condition name="condition">
<we:conditionAdd field="Nachname" var="nachnameselect" compare="like"/>
<we:conditionAnd />
<we:conditionAdd field="Kanzlei" var="kanzleiselect" compare="like"/>
<we:conditionAnd />
<we:conditionAdd field="Ort" var="ortselect" compare="like"/>
<we:conditionAnd />
<we:conditionAdd field="Nation" var="nationselect" compare="like"/>
<we:conditionAnd />
<?php
if($GLOBALS['rechtsgebieteselect']){
	$GLOBALS['condition']='FIND_IN_SET('.((int)$GLOBALS['rechtsgebieteselect']).',multiobject_Rechtsgebietewahl)';
}else{
	//keine Suche, wenn keine Auswahl
	$GLOBALS['condition']='FALSE';
}
?>
</we:condition> 
Liebe Grüße aus dem sonnigen Tirol!
BIG Detail, Kaspar & Sigl OG
Riedgasse 8b
A-6020 Innsbruck
Tel. +43 512 346070-40
Fax +43 512 346070-20
Mobil: +43 676 3438011

christoph.kaspar@bigdetail.com
http://www.bigdetail.com


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 4 Gäste