Guten Abend,
sorry für den vielleicht falschen Titel, mir ist nichts anderes eingefallen. Hab ein kleines (vielleicht auch größeres) Problem mit meiner Funktion, die derzeit wie folgt aussieht:
function test456($mysqli, $lo, $userCode) {
$stmt = $mysqli->prepare("SELECT p_id,
p_type,
p_pkategorie,
p_code,
p_hersteller,
p_serie,
p_geraet,
p_bezeichnung,
p_bild,
p_artnr,
p_farbe,
p_inhalt,
p_preis,
p_vk1,
p_vk2,
p_vk3,
p_bestand,
p_hinweis,
p_status,
pk_id, pk_titel
FROM web_produkte
LEFT JOIN web_produktkategorien ON web_produktkategorien.pk_id = web_produkte.p_pkategorie
WHERE p_geraet =? ");
$stmt->bind_param("s", $lo);
$stmt->execute();
$stmt->bind_result($p_id,
$p_type,
$p_pkategorie,
$p_code,
$p_hersteller,
$p_serie,
$p_geraet,
$p_bezeichnung,
$p_bild,
$p_artnr,
$p_farbe,
$p_inhalt,
$p_preis,
$p_vk1,
$p_vk2,
$p_vk3,
$p_bestand,
$p_hinweis,
$p_status,
$pk_id,
$pk_titel);
$stmt->store_result();
Alles anzeigen
Diese klappt auch. Jetzt habe ich eine weitere Tabelle in meiner Datenbank angelegt die so aussieht
CREATE TABLE IF NOT EXISTS `web_users_produktkategorien_settings` (
`pks_id` int(11) NOT NULL,
`pks_userID` varchar(100) NOT NULL,
`pks_produktkategorieID` varchar(10) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8;
Die jeweiligen Einträge sehen dann so aus
[Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/xxxxxds3fcj72yb.jpg]
Unter "pks_userID" wird der User gespeichert und unter "pks_produktkategorieID" die Kategorie des jeweiligen Produktes.
Also web_users_produktkategorien_settings.pks_produktkategorieID = web_produkte.p_pkategorie
Jetzt möchte ich meine Funktion gerne so geändert haben, dass folgendes funktioniert:
- User ruft die Seite auf
- Funktion wird ausgeführt
- Es muss in der Tabelle web_users_produktkategorien_settings geschaut werden, welche Rubriken zugelassen sind
- Mit diesen Werten muss dann in meiner Hauptfunktion (siehe oben) gearbeitet werden. Also nur die Artikel ausgelesen werden, die in der Tabelle "web_users_produktkategorien_settings" festgelegt werden.
Ist dieses denn überhaupt direkt im SQL möglich oder muss ich das später bei der Darstellung berücksichtigen? Ich würde es direkt im SQL bevorzugen, denn dann müssen nicht erst hunderte von Artikel ausgelesen werden.
Ich hoffe mir kann von euch jemand weiter helfen Ich bin mit meinem können leider am Ende.
Hallo,
ich bin ein Schritt weiter, hab es so hinbekommen
function test456($mysqli, $lo, $userCode) {
$ids = array(1,2,3);
$stmt = $mysqli->prepare("SELECT p_id,
p_type,
p_pkategorie,
p_code,
p_hersteller,
p_serie,
p_geraet,
p_bezeichnung,
p_bild,
p_artnr,
p_farbe,
p_inhalt,
p_preis,
p_vk1,
p_vk2,
p_vk3,
p_bestand,
p_hinweis,
p_status,
pk_id, pk_titel
FROM web_produkte
LEFT JOIN web_produktkategorien ON web_produktkategorien.pk_id = web_produkte.p_pkategorie
WHERE p_geraet =?
AND p_pkategorie IN (".
implode(', ',
array_map(function(&$item){
return "'".$item."'";
}, $ids))
.");
");
$stmt->bind_param("s", $lo);
$stmt->execute();
$stmt->bind_result($p_id,
$p_type,
$p_pkategorie,
$p_code,
$p_hersteller,
$p_serie,
$p_geraet,
$p_bezeichnung,
$p_bild,
$p_artnr,
$p_farbe,
$p_inhalt,
$p_preis,
$p_vk1,
$p_vk2,
$p_vk3,
$p_bestand,
$p_hinweis,
$p_status,
$pk_id,
$pk_titel);
$stmt->store_result();
Alles anzeigen
Das ist neu hinzugekommen
AND p_pkategorie IN (".
implode(', ',
array_map(function(&$item){
return "'".$item."'";
}, $ids))
.");
Jetzt ist die Frage, wie kann ich das $ids = array(1,2,3); dynamisch füllen?