Suchabfrage nach Kategorien

Hier können Sie Fragen bezüglich des Datenbank-/Objektmoduls stellen.
urlaubsland-polen
Senior Member
Beiträge: 420
Registriert: Mo 13. Nov 2006, 12:23
Wohnort: Olsztyn, zuvor Warszawa
Kontaktdaten:

Suchabfrage nach Kategorien

Beitragvon urlaubsland-polen » Mi 25. Mär 2009, 16:43

Hallo Gemeinde,

ich bin auf der Suche nach einem guten Lösungsansatz...

Ziel ist, ein Suchformular zu schaffen, wo User auf der Webseite Objekte nach einem bestimmten Kriterium durchsuchen können. Konkret: Kochrezepte, die nach Regionen sortiert angezeigt werden sollen. Dabei soll die Auswahl im Select-Feld dynamisch sein, so dass nur diejenigen Regionen angeboten werden, wo auch Texte vorhanden sind und neue Artikel automatisch mit in die Suche einbezogen werden.

Die Objekte haben ein Feld "Region" und über eine Condition bekomme ich es hin. Ein Test ist hier zu finden => http://www.urlaubsland-polen.info/servi ... /index.php

Nur mit dem Objektfeld ist es nicht ideal, weil ein Kochrezept zu verschiedenen Subregionen gehören kann. Deshalb würde ich lieber Kategorien nutzen.

Die Abfrage bekomme ich aber nicht hin. Hat jemand so etwas schon mal gemacht und kann mir auf die Sprünge helfen?

Die Schwierigkeit ist besonders das dynamische Füllen des Select-Feldes...

bolleone
Senior Member
Beiträge: 601
Registriert: So 4. Jul 2004, 00:24
Wohnort: Düsseldorf
Kontaktdaten:

Beitragvon bolleone » Mi 25. Mär 2009, 19:29

...nur mal so auf die Schnelle. Ich lasse Selects für meine Redakteure dynamisch befüllen:

Code: Alles auswählen

<?php 
$categories = "";
$DB_WE->query("SELECT Path FROM tblCategorys"); 
while($DB_WE->next_record()) 
{ 
$categories .= "<option>".$DB_WE->f("Path")."</option>"; 
}
Ausgeben mit

Code: Alles auswählen

<we:select name="ListviewCat">$categories</we:select>
Habs noch nicht ausprobiert, aber das sollte auch mit einem "normalen" select funktionieren.

Dann habe ich noch das hier:

Code: Alles auswählen

<!-- Select ARTIKELGRUPPE -->
<p> 
<select name="SelectProduktArt">
<option value="">Produktkategorien:</option>
<option value="">alle anzeigen</option>
<we:condition name="test">
<we:conditionAdd field="KELLEREI" value="$CatID" compare="=" />
</we:condition>
<we:listview type="object" classid="1" name="SelectProduktArt" order="ARTIKELGRUPPE" condition="$test">
<we:repeat>
<?php
if($GLOBALS['my']['lastvalue'] != $GLOBALS['lv']->f('ARTIKELGRUPPE')){
$GLOBALS['my']['lastvalue'] = $GLOBALS['lv']->f('ARTIKELGRUPPE');
?>
<we:setVar from="request" to="global" namefrom="SelectProduktArt" nameto="SelectProduktArt" />
<option value="<we:field name="ARTIKELGRUPPE">"<we:ifField name="ARTIKELGRUPPE" type="text" match="$SelectProduktArt"> selected="selected"</we:ifField>><we:field name="ARTIKELGRUPPE" ></option>
<?php
}
?>
</we:repeat>
</we:listview>
</select>
<!-- Select ARTIKELGRUPPE -->
Vielleicht helfen Dir diese Ansätze ja weiter...
multimediadesign.net · Atelier für Kommunikation
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net

urlaubsland-polen
Senior Member
Beiträge: 420
Registriert: Mo 13. Nov 2006, 12:23
Wohnort: Olsztyn, zuvor Warszawa
Kontaktdaten:

Beitragvon urlaubsland-polen » Mi 25. Mär 2009, 19:34

Hallo, danke. Das sind sehr interessante Ansätze... Ich muss mich mal reindenken... bin ja kein Experte für PHP...

urlaubsland-polen
Senior Member
Beiträge: 420
Registriert: Mo 13. Nov 2006, 12:23
Wohnort: Olsztyn, zuvor Warszawa
Kontaktdaten:

Beitragvon urlaubsland-polen » Mi 25. Mär 2009, 20:50

Auweia, das ist knifflig... Hier sind die Bastelfreunde gefragt... Mobby???

Mit den Objekt-Feldern drei Templates: eine Suchseite, eine Seite, wo die Select-Ergebnisse angezeigt werden und von dieser kommt man auf die Detailseite. Das funktioniert so:

Suchseite (Formular)
<?php
$Stadt = $_REQUEST["Stadt"];
$Region = $_REQUEST["Region"];
$Kategorie = $_REQUEST["Kategorie"];
$Typ = $_REQUEST["Typ"];
?>

<we:form name="auswahl_region" id="id_der_auswahlseite">
<we:listview type="object" name="Region" classid="19" order="region">

Region: <select name="Region">
<option value="">Bitte Region auswählen</option>
<we:repeat>

<?php
if($GLOBALS['my']['lastvalue'] != $GLOBALS['lv']->f('region')){
$GLOBALS['my']['lastvalue'] = $GLOBALS['lv']->f('region');
if ($Region==$GLOBALS['lv']->f('region'))
{
?>

<option value="<?php echo $GLOBALS['lv']->f('region'); ?>" selected><?php echo $GLOBALS['lv']->f('region'); ?></option>

<?php
}
else
{
?>
<option value="<?php echo $GLOBALS['lv']->f('region'); ?>"><?php echo $GLOBALS['lv']->f('region'); ?></option>

<?php
}}
?>

</we:repeat>
</select>
</we:listview>

<input type="submit" value="Suche starten">

</we:form>
Die Select-Seite hat einen Condition- und einen Listview-Abschnitt

**************
** Condition **
**************
<we:condition name="cond">

<we:ifVarNotEmpty match="Region" type="request">
<we:setVar from="request" to="global" namefrom="Region" nameto="Region"/>
<we:conditionAdd field="region" var="Region" compare="="/>
<we:ifVarNotEmpty match="Typ" type="request">
<we:conditionAND>
<we:else>
<we:ifVarNotEmpty match="Kategorie" type="request">
<we:conditionAND>

</we:ifVarNotEmpty>
</we:ifVarNotEmpty>
</we:ifVarNotEmpty>

<we:ifVarNotEmpty match="Kategorie" type="request">
<we:setVar from="request" to="global" namefrom="Kategorie" nameto="Kategorie"/>
<we:conditionAdd field="kategorie" var="Kategorie" compare="="/>
</we:ifVarNotEmpty>

</we:condition>

*************
** Listview **
*************
<we:listview type="object" name="ergebnisliste_kochrezepte" rows="5" order="datum" desc="true" classid="19" condition="$cond">
<we:repeat>
...
<we:a id="id_der_detailseite" class="t1" edit="object"><we:field name="name" type="text" /></we:a> // Der Titel als Link zur Detailseite
...
</we:repeat>
</we:listview>

Wenn ich das jetzt versuche so umzubauen, dass die Objekte wieder in einem Listview angezeigt werden, die Condition aber aus Kategorien besteht, komme ich nicht weiter. Da fehlt mir einfach der fachliche Background...

Das habe ich schon mal angefangen.

**************
** Formular **
**************
<we:form name="auswahl_region" id="id_der_auswahlseite">
<we:listview type="object" name="Region" classid="19" order="region">

Region: <select name="Region">
<option value="">Bitte Region auswählen</option>


<?php
$categories = "";
$DB_WE->query("SELECT Path FROM tblCategorys");
while($DB_WE->next_record())
{
$categories .= "<option>".$DB_WE->f("Path")."</option>";
}

<we:repeat>

?????????

<we:select name="ListviewCat">$categories</we:select>

</we:repeat>
</select>
</we:listview>

<input type="submit" value="Suche starten">

</we:form>

**************
** Condition **
**************
<we:condition name="cond">

Hier komme ich nicht weiter...

</we:condition>

*************
** Listview **
*************
<?php $categories = $we_doc->getElement("categories"); ?>

<we:listview rows="10" order="datum" desc="true" categories="$categories">
<we:repeat>
...
<we:a id="id_der_detailseite" class="t1" edit="object"><we:field name="name" type="text" /></we:a> // Der Titel als Link zur Detailseite
...
</we:repeat>
</we:listview>


Zurück zu „DB-/Objektmodul“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Bing [Bot] und 8 Gäste