Rahmenfarbe von Optionen anhand Bestand ändern

Thema wurde von Jan Brodowsky, 12. Februar 2025 erstellt.

  1. Jan Brodowsky
    Jan Brodowsky Erfahrener Benutzer
    Registriert seit:
    20. Juni 2012
    Beiträge:
    289
    Danke erhalten:
    39
    Danke vergeben:
    155
    Hallo zusammen,
    ich versuche gerade die Rahmenfarbe bei den Optionen anhand des Bestand zu verändern.
    Wenn also die Option nicht mehr lagernd ist, soll sie rot umrandet sein, wenn der Bestand gering ist orange und wenn genug da ist grün. Also habe ich mich durch das Netz geforstet und bin auf PHP, JAVA und CSS gestossen als mögliche Lösung. Ich habe folgende PHP Datei auf meinem Server geladen
    PHP:
    <?php
    header
    ("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json");

    // MySQL-Datenbankverbindung
    $servername "localhost";
    $username "XXX";  
    $password "XXX";  
    $database "XXX";

    $conn = new mysqli($servername$username$password$database);

    // Verbindung prüfen
    if ($conn->connect_error) {
        die(
    json_encode(["error" => "Datenbankverbindung fehlgeschlagen"]));
    }

    // Wert aus der Datenbank abrufen
    $sql "SELECT attributes_stock FROM product_attributes LIMIT 1";
    $result $conn->query($sql);

    if (
    $result->num_rows 0) {
        
    $row $result->fetch_assoc();
        echo 
    json_encode(["value" => $row["wert"]]);
    } else {
        echo 
    json_encode(["value" => null]);
    }

    $conn->close();
    ?>
    die ich auch ansprechen konnte und folgende Java Script Datei
    Code:
    import { useState, useEffect } from "react";
    
    export default function DynamicButton() {
        const [value, setValue] = useState(null);
    
        useEffect(() => {
            fetch("http://localhost/XXX") 
                .then(response => response.json())
                .then(data => setValue(data.value))
                .catch(error => console.error("Fehler beim Abrufen der API:", error));
        }, []);
    
        const getBorderClass = () => {
            if (value === null) return "border-gray";
            if (value <= 0) return "border-red";
            if (value >= 1 && value <= 5) return "border-orange";
            return "border-green";
        };
    
        return (
            <a className={`modifier-group modifier-type__text modifiers-list li a ${getBorderClass()}`}>
                API Button ({value})
            </a>
        );
    }
    
    Diese habe ich unter Body Trackingcodes gespeichert - als letztes habe ich im eigenen CSS noch die Border Klassen definiert.
    Nun das Problem: Nüscht passiert - hat da jemand einen Tipp für mich, ich denke mal dass das JavaScript da wahrscheinlich nicht hin gehört.
     
  2. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    5. Mai 2022
    Beiträge:
    2.335
    Danke erhalten:
    1.019
    Danke vergeben:
    389
    Ich habe selbst nicht so viel Wissen bei solchen Dingen.
    Da aber sonst niemand schreibt, versuche ich zu helfen:


    Schalte die Optionen-Auswahl testweise auf Anzeigentyp "Radio".

    Wie sieht dein CSS Code aus?
     
  3. Jan Brodowsky
    Jan Brodowsky Erfahrener Benutzer
    Registriert seit:
    20. Juni 2012
    Beiträge:
    289
    Danke erhalten:
    39
    Danke vergeben:
    155
    für die ursprünglichen Button:
    Code:
    .modifier-group.modifier-type__text .modifiers-list li a {
        display: inline-block;
        padding: 5px 10px;
        background: #ddd;
          box-shadow: 0 0 0 3px white;
        color: #666;
    }
    .modifier-group.modifier-type__text .modifiers-list li.active a {
        background: #eee;
        box-shadow: 0 0 0 3px #777;
        color: rgb(0 0 0 / 80%);
      border-radius: 2px;
       font-weight: bold;
    }
    
    .modifier-group.modifier-type__text .modifiers-list li a:hover {
        text-decoration: none;
        background: #eee;
        color: #000;
      box-shadow: 0 0 0 3px #777;
      border-radius: 2px;
    }
    
    
    und für die Veränderung:
    Code:
    .border-red {
        border: 3px solid red;
    }
    
    .border-orange {
        border: 3px solid orange;
    }
    
    .border-green {
        border: 3px solid green;
    }
    
    .border-gray {
        border: 3px solid gray;
    }
    Die Änderung auf Radio Button hat keine Veränderung gebracht.
     
  4. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    5. Mai 2022
    Beiträge:
    2.335
    Danke erhalten:
    1.019
    Danke vergeben:
    389
    und wenn du die Border CSS Codes spezifischer schreibst:

    Code:
    .modifier-group .modifier-type__text .modifiers-list li a.border-red {
        border: 3px solid red;
    }
     
  5. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    5. Mai 2022
    Beiträge:
    2.335
    Danke erhalten:
    1.019
    Danke vergeben:
    389
    Weiterer Testvorschlag:

    Diesen Teil:
    Code:
    <a className={`modifier-group modifier-type__text modifiers-list li a ${getBorderClass()}`}>
                API Button ({value})
            </a>
    so ändern:
    Code:
    <a className={`modifier-item ${getBorderClass()}`}>
        API Button ({value})
    </a>
    und das als CSS:
    Code:
    .modifier-item.border-red {
        border: 3px solid red;
    }
     
  6. Jan Brodowsky
    Jan Brodowsky Erfahrener Benutzer
    Registriert seit:
    20. Juni 2012
    Beiträge:
    289
    Danke erhalten:
    39
    Danke vergeben:
    155
    Danke für die Ideen und Ansätze, aber in beiden Fällen passiert nichts.
     
  7. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    5. Mai 2022
    Beiträge:
    2.335
    Danke erhalten:
    1.019
    Danke vergeben:
    389
    Schade. Sorry. Vielleicht meldet sich ja noch jemand. :)