Jetzt Kontakt aufnehmen
Produktfilter mit JavaScript und PHP für deinen E-Commerce-Shop

Produktfilter mit JavaScript und PHP für deinen E-Commerce-Shop

Produktfilter sind im E-Commerce entscheidend für die Benutzererfahrung. In diesem Artikel zeigen wir dir, wie du ein schnelles, dynamisches Filtersystem mit JavaScript und PHP umsetzt – inklusive AJAX für reibungslose Updates.

Kontakt-Button
Nehmen Sie Kontakt auf

Wir sind für Sie erreichbar.

Jetzt Gespräch suchen
Von
  • Webentwicklung
  • E-Commerce

HTML-Grundstruktur für Filter und Produktliste

<form id="filter-form">
<label>
	Kategorie:
	<select name="category">
		<option value="">Alle</option>
		<option value="shirts">Shirts</option>
		<option value="hosen">Hosen</option>
	</select>
</label>
<label>
	Preis:
	<select name="price">
		<option value="">Alle</option>
		<option value="low">Unter 50€</option>
		<option value="medium">50–100€</option>
		<option value="high">Über 100€</option>
	</select>
</label>
</form>

<div id="product-list"></div>

Wir starten mit einer einfachen HTML-Struktur, bestehend aus einem Formular zur Filterung und einem Container für die Produktliste.

AJAX-Request bei Filteränderung

Das Formular löst bei jeder Änderung einen AJAX-Request aus, um die Produktliste zu aktualisieren.

document.getElementById("filter-form").addEventListener("change", function () {
	const formData = new FormData(this);
	
	fetch("get_products.php", {
		method: "POST",
		body: formData
	})
	.then(response => response.text())
	.then(html => {
		document.getElementById("product-list").innerHTML = html;
	})
	.catch(err => console.error("Fehler beim Laden der Produkte:", err));
});

Mit dieser JavaScript-Funktion holen wir bei jeder Filteränderung neue Produktdaten vom Server. Die Ergebnisse werden direkt auf der Seite angezeigt.

Serverseitige Verarbeitung in PHP

Der Server filtert Produkte je nach Anfrageparameter und gibt HTML zurück.

<?php
	$category = $_POST['category'] ?? '';
	$price = $_POST['price'] ?? '';

	$products = [
		["name" => "Blaues Shirt", "category" => "shirts", "price" => 29],
		["name" => "Schwarze Hose", "category" => "hosen", "price" => 89],
		["name" => "Designer-Shirt", "category" => "shirts", "price" => 120],
	];

	$filtered = array_filter($products, function ($product) use ($category, $price) {
		if ($category && $product['category'] !== $category) return false;
		
		if ($price === 'low' && $product['price'] >= 50) return false;
		if ($price === 'medium' && ($product['price'] < 50 || $product['price'] > 100)) return false;
		if ($price === 'high' && $product['price'] <= 100) return false;
		
		return true;
	});

	foreach ($filtered as $item) {
		echo "<div class='product'>{$item['name']} – {$item['price']}€</div>";
	}

Die Datei get_products.php wertet die POST-Daten aus, filtert die Produktliste und gibt sie als HTML zurück.

Verbesserung der Performance durch Debouncing
let debounceTimer;
document.getElementById("filter-form").addEventListener("change", function () {
	clearTimeout(debounceTimer);
	debounceTimer = setTimeout(() => {
		const formData = new FormData(this);
		fetch("get_products.php", {
			method: "POST",
			body: formData
		})
		.then(response => response.text())
		.then(html => {
			document.getElementById("product-list").innerHTML = html;
		});
	}, 300);
});

Mit Debouncing vermeiden wir zu viele schnelle Requests bei mehreren schnellen Änderungen.

Fazit: Dynamische Produktfilter verbessern UX und Conversion

Ein dynamischer Produktfilter sorgt für bessere Benutzerführung und höhere Conversion-Raten. Mit JavaScript und PHP lässt sich ein performantes und leicht anpassbares Filtersystem für jeden E-Commerce-Shop realisieren.

Kontakt-Button
Können wir Ihnen behilflich sein?

Wir unterstützen Sie gerne!

Jetzt kontaktieren

Kann ich dieses Filtersystem in WooCommerce nutzen?

Nicht direkt, aber die Logik lässt sich mit eigenen Endpoints und Templates in WooCommerce adaptieren.

Wie lade ich Produktdaten aus einer Datenbank statt aus einem Array?

Ersetze das $products-Array durch ein SQL-Query und nutze z. B. PDO, um die Daten dynamisch zu laden.

Kann ich weitere Filter wie Farben oder Größen ergänzen?

Ja, einfach weitere Felder im Formular und entsprechende Bedingungen im PHP-Code hinzufügen.

Was ist Debouncing und warum ist es sinnvoll?

Debouncing sorgt dafür, dass Funktionen nicht zu oft hintereinander aufgerufen werden – ideal bei schnellen UI-Interaktionen.

Wie kann ich das Ganze mit Vue oder React umsetzen?

Das Prinzip bleibt gleich – State und API-Aufrufe übernehmen dabei die JavaScript-Frameworks.

Kontakt-Button
Wie können wir Ihnen helfen?

Unsere Dienstleistungen decken alle Bereiche der digitalen Kommunikation.

Schreiben Sie uns
weedesign Blog

E-Commerce Entwicklung 2025: Stabilisierung nach dem Boom – wie sich der B2C-Onlinehandel entwickelt

Die E-Commerce Entwicklung im B2C hat nach enormem Corona-Boom eine Phase der Konsolidierung erreicht. Welche Warengruppen wachsen noch, welche verlieren? Wir analysieren die aktuellen Zahlen des HDE Online-Monitors 2024 und geben konkrete Handlungsempfehlungen für Händler*innen.

Zum Blog-Eintrag

Maximieren Sie den Nutzen von Email-Marketing für Ihr Unternehmen

Holen Sie sich Tipps, wie Sie eine starke Email-Marketing-Strategie entwickeln, um Ihre Kundenbindung zu stärken, Ihre Umsätze zu steigern und Ihre Online-Präsenz aufzubauen. Von der Erstellung einer E-Mail-Liste bis hin zur Messung der Leistung Ihrer Kampagnen - wir decken alle wichtigen Aspekte ab, die für ein erfolgreiches Email-Marketing entscheidend sind.

Zum Blog-Eintrag

Optimieren Sie Ihren Onlineshop durch Bildoptimierung für höhere Performance

Die Leistungsoptimierung gewinnt stetig an Bedeutung und ist für viele Shopbetreiber eine wichtige Aufgabe. In diesem Beitrag erklären wir, wie Sie die Bilder in Ihrem Onlineshop ideal optimieren können. Sie erfahren mehr über die verschiedenen Bildformate, ihre Eignung für bestimmte Anwendungsfälle und den Einfluss der Formate auf die Performance Ihres Onlineshops.

Zum Blog-Eintrag
Auf der Suche nach Shopware-Erweiterungen?
Hier sind unsere Bestseller!
Erweiterter Editor | WYSIWYG
Erweiterter Editor | WYSIWYG

Nutze den erweiterten WYSIWYG-Editor in Shopware 6. Dieser Editor ermöglicht die einfache Einbettung von Medien in die Beschreibung und viele weitere Features.

ab 7,99 €* / Monat

PageSpeed optimieren
PageSpeed optimieren

Optimieren Sie Ihren Shop und schaffen Sie damit ein besseres Erlebnis für Ihre Kunden. Dieses Plugin minimiert die Ladezeit Ihres Shops und bietet zahlreiche Konfigurationen.

ab 27,49 €* / Monat

Twig Manager
Twig Manager

Erstellen und bearbeiten Sie Ihre eigenen Template-Erweiterungen schnell und einfach in der Administration. Anzeige vorhandener Storefront-Vorlagenpfade und -Inhalte.

ab 3,99 €* / Monat

Hinweis: * Alle Preise verstehen sich zzgl. Mehrwertsteuer

x