Ankündigung

Einklappen
Keine Ankündigung bisher.

Size finder

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Size finder

    Hallo zusammen

    Habe da mal eine Frage. Ich müsse so etwas wie einen Size finder implementieren. Ein Beispiel findet ihr unter folgendem Link:https://autosock.com/pages/size-finder. Im Moment sehe ich den Wald lauter Bäume nicht. Wie wurde so etwas realisiert. Mein erster Eindruck wäre sicherlich mit php und javascript/jquery/ajax.

    Hoffe ihr könnte mir da eventuell weiter helfen.

    Gruss


  • #2
    Die Frage ist unklar.

    Kommentar


    • #3
      MOD: Verschoben von PHP-Einsteiger
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Dein Problem ist ganz klar dieses:
        Im Moment sehe ich den Wald lauter Bäume nicht.
        Unter dieser Prämisse kann dir hier niemand helfen, denn du bekommst hier nur noch mehr Bäume vorgesetzt... sofern du dich im Wald nicht bereits etwas auskennst, werden dir auch die neuen Bäume nix sagen..

        Mein erster Eindruck wäre sicherlich mit php und javascript/jquery/ajax.
        Geraten, oder?
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Das habe ich geraten . Ich brächte einen Anhaltspunkt, würde mir eventuell weiter helfen oder gibt es solche Scripts schon vordefiniert?

          Kommentar


          • #6
            Ich brächte einen Anhaltspunkt,
            HTML-Formular
            PHP Script
            Datenbank nach Wahl

            Wenn du aber so einfache Dinge schon hier nachfragst, denke ich, solltest du dich erst mal mit einfacheren Themen(Grundlagen) beschäftigen.

            Kommentar


            • #7
              Size Finder... bedeutet... Suche mit einer Auswahl vorgegebener Parameter? An welcher Stelle hängst du denn fest?
              So ein Ding umzusetzen ist eigentlich sehr straight forward. Sieh dir an welche Parameter an den Server übergeben wurden und bau dir daraus eine Abfrage zusammen. Das Ergebnis gibst du dann aus, entweder zurück ans JavaScript oder du schreibst die View mit PHP.

              Hast du schon eine Datenbank oder zumindest die Datenstruktur? Hast du die Suchkriterien definiert? Hast du schon die gültigen Eingabemöglichkeiten je Kriterium definiert?
              Relax, you're doing fine.
              RTFM | php.de Wissenssammlung | Datenbankindizes | Stay fit

              Kommentar


              • #8
                Habe jetzt glaube eine kleinen Ansatz gefunden. Via Datenbank mit drei Tabellen und dies mit PHP und JavaScript umsetzten. Ist wohl am einfachsten.

                Kommentar


                • #9
                  Zitat von aebidruck Beitrag anzeigen
                  Habe jetzt glaube eine kleinen Ansatz gefunden. Via Datenbank mit drei Tabellen und dies mit PHP und JavaScript umsetzten. Ist wohl am einfachsten.
                  Klingt suboptimal. Ich sehe hier nur eine Tabelle mit mindestens 4 Spalten (Höhe, Breite, Zoll und der Produkt-ID, die dadurch repräsentiert wird).
                  Standards - Best Practices - AwesomePHP - Guideline für WebApps

                  Kommentar


                  • #10
                    So bin schon mal etwas weiter gekommen und etwas probiert. Soweit so gut. Habe 4 Tabellen erstellt (profil, reifenbreite, durchmesser und produkt). Jetzt hänge ich leider mit der letzten Abfrage, die den Durchmesser ausgeben sollte. Meiner Meinung nach sollte die SQL-Abfrage korrekt sein.
                    Hier mal meinen Code:

                    index.php
                    PHP-Code:
                    <!DOCTYPE html>
                    <html>
                    <title>Size finder Autosock</title>
                    <meta charset="UTF-8">
                    <meta name="viewport" content="width=device-width, initial-scale=1">    
                    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald">
                    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open Sans">
                    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
                    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
                    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
                    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
                    <script src="jquery.min.js"></script>

                    <style>
                    h1,h2,h3,h4,h5,h6 {font-family: "Oswald"}
                    body {font-family: "Open Sans"}


                    .select-boxes{width: 280px;text-align: center;}
                    select {
                        background-color: #F5F5F5;
                        border: 1px double #15a6c7;
                        color: #1d93d1;
                        font-family: Georgia;
                        font-weight: bold;
                        font-size: 14px;
                        height: 39px;
                        padding: 7px 8px;
                        width: 250px;
                        outline: none;
                        margin: 10px 0 10px 0;
                    }
                    select option{
                        font-family: Georgia;
                        font-size: 14px;
                    }

                    </style>
                        <script type="text/javascript">
                    $(document).ready(function(){
                        $('#reifenbreite').on('change',function(){
                            var reifenbreiteID = $(this).val();
                            if(reifenbreiteID){
                                $.ajax({
                                    type:'POST',
                                    url:'ajaxData.php',
                                    data:'id_reifenbreite='+reifenbreiteID,
                                    success:function(html){
                                        $('#profil').html(html);
                                        $('#durchmesser').html('<option value="">Wählen Sie zuerst den Profil aus</option>');
                                    }
                                });
                            }else{
                                $('#profil').html('<option value="">Wählen Sie zuerst den Reifenbreite aus</option>');
                                $('#durchmesser').html('<option value="">Wählen Sie zuerst den Profil aus</option>');
                            }
                        });

                        $('#profil').on('change',function(){
                            var profilID = $(this).val();
                            if(profilID){
                                $.ajax({
                                    type:'POST',
                                    url:'ajaxData.php',
                                    data:'id_profil='+profilID,
                                    success:function(html){
                                        $('#durchmesser').html(html);
                                    }
                                });
                            }else{
                                $('#durchmesser').html('<option value="">Wählen Sie zuerst den Profil aus</option>');
                            }
                        });
                    });
                    </script>


                    <body class="w3-light-grey">
                    <div class="w3-content" style="max-width:1600px">
                      <div class="w3-row w3-padding w3-border">
                        <div class="w3-col l12 s12">
                          <div class="w3-container w3-white w3-margin w3-padding-large">


                              <div class="select-boxes">
                        <?php
                        
                    include('dbConfig.php');
                        
                    $query $db->query("SELECT * FROM reifenbreite ORDER BY reifenbreite ASC");
                        
                    $rowCount $query->num_rows;
                        
                    ?>
                        <select name="reifenbreite" id="reifenbreite" >
                            <option value="">Reifenbreite auswählen ...</option>
                            <?php
                            
                    if($rowCount 0){
                                while(
                    $row $query->fetch_assoc()){
                                    echo 
                    '<option value="'.$row['id_reifenbreite'].'">'.$row['reifenbreite'].'</option>';
                                }
                            }else{
                                echo 
                    '<option value="">Reifenbreite nicht verfügbar</option>';
                            }
                            
                    ?>
                        </select>

                        <select name="profil" id="profil">
                            <option value="">Wählen Sie zuerst das Reifenbreite aus</option>
                        </select>

                        <select name="durchmesser" id="durchmesser">
                            <option value="">Wählen Sie zuerst das Reifenbreite aus</option>
                        </select>
                        </div>  
                          </div>
                        </div>
                      </div>
                    </div>
                    </body>
                    </html>

                    ajaxData.php
                    PHP-Code:
                    <?php
                    include('dbConfig.php');

                    if(isset(
                    $_POST["id_reifenbreite"]) && !empty($_POST["id_reifenbreite"])){    
                        
                    //Daten Profil auslesen    
                       
                    $query $db->query("SELECT pr.profil FROM profil pr, autosock_modell au WHERE au.id_reifenbreite = ".$_POST['id_reifenbreite']." AND pr.id_profil = au.id_profil ORDER BY profil ASC");

                        
                    $rowCount $query->num_rows;

                        
                    //Anzeige Profil
                        
                    if($rowCount 0){
                            echo 
                    '<option value="">Profil auswählen ...</option>';
                            while(
                    $row $query->fetch_assoc()){
                                echo 
                    '<option value="'.$row['id_profil'].'">'.$row['profil'].'</option>';            
                            }
                        }else{
                            echo 
                    '<option value="">Profil nicht verfügbar</option>';
                        }
                    }

                    if(isset(
                    $_POST["id_profil"]) && !empty($_POST["id_profil"])){    
                        
                    //Daten Profil auslesen
                        //$query = $db->query("SELECT * FROM profil WHERE id_reifenbreite = ".$_POST['id_reifenbreite']." ORDER BY profil ASC");
                       
                    $query $db->query("SELECT du.durchmesser FROM durchmesser du, autosock_modell au WHERE au.id_profil = ".$_POST['id_profil']." AND du.id_durchmesser = au.id_durchmesser ORDER BY durchmesser ASC");

                        
                    $rowCount $query->num_rows;

                        
                    //Anzeige Profil
                        
                    if($rowCount 0){
                            echo 
                    '<option value="">Durchmesser auswählen ...</option>';
                            while(
                    $row $query->fetch_assoc()){
                                echo 
                    '<option value="'.$row['id_durchmesser'].'">'.$row['durchmesser'].'</option>';            
                            }
                        }else{
                            echo 
                    '<option value="">Durchmesser nicht verfügbar</option>';
                        }
                    }

                    ?>
                    sql-Datei
                    Code:
                    -- phpMyAdmin SQL Dump
                    -- version 4.8.2
                    -- https://www.phpmyadmin.net/
                    --
                    -- Host: localhost:8889
                    -- Erstellungszeit: 20. Nov 2018 um 14:32
                    -- Server-Version: 5.7.21
                    -- PHP-Version: 5.6.33
                    
                    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
                    SET time_zone = "+00:00";
                    
                    --
                    -- Datenbank: `size_finder`
                    --
                    
                    -- --------------------------------------------------------
                    
                    --
                    -- Tabellenstruktur für Tabelle `autosock_modell`
                    --
                    
                    DROP TABLE IF EXISTS `autosock_modell`;
                    CREATE TABLE `autosock_modell` (
                      `id_autosock_modell` int(11) NOT NULL,
                      `autosock_modell` varchar(255) NOT NULL,
                      `id_reifenbreite` int(11) NOT NULL,
                      `id_profil` int(11) NOT NULL,
                      `id_durchmesser` int(11) NOT NULL
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
                    
                    --
                    -- Daten für Tabelle `autosock_modell`
                    --
                    
                    INSERT INTO `autosock_modell` (`id_autosock_modell`, `autosock_modell`, `id_reifenbreite`, `id_profil`, `id_durchmesser`) VALUES
                    (1, 'AutoSock HP 540', 2, 10, 1),
                    (2, 'AutoSock HP 540', 1, 10, 2),
                    (3, 'AutoSock HP 540', 2, 8, 2),
                    (4, 'AutoSock HP 540', 3, 7, 2),
                    (5, 'AutoSock HP 540', 3, 8, 2),
                    (6, 'AutoSock HP 540', 4, 7, 2),
                    (7, 'AutoSock HP 540', 5, 6, 2),
                    (8, 'AutoSock HP 540', 6, 5, 2),
                    (9, 'AutoSock HP 540', 2, 7, 3),
                    (10, 'AutoSock HP 540', 3, 5, 3),
                    (11, 'AutoSock HP 540', 3, 6, 3),
                    (12, 'AutoSock HP 540', 4, 6, 3),
                    (13, 'AutoSock HP 540', 5, 5, 3);
                    
                    -- --------------------------------------------------------
                    
                    --
                    -- Tabellenstruktur für Tabelle `durchmesser`
                    --
                    
                    DROP TABLE IF EXISTS `durchmesser`;
                    CREATE TABLE `durchmesser` (
                      `id_durchmesser` int(11) NOT NULL,
                      `durchmesser` varchar(255) NOT NULL
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
                    
                    --
                    -- Daten für Tabelle `durchmesser`
                    --
                    
                    INSERT INTO `durchmesser` (`id_durchmesser`, `durchmesser`) VALUES
                    (1, '12'),
                    (2, '13'),
                    (3, '14'),
                    (4, '15'),
                    (5, '16'),
                    (6, '17'),
                    (7, '18'),
                    (8, '19'),
                    (9, '20'),
                    (10, '21');
                    
                    -- --------------------------------------------------------
                    
                    --
                    -- Tabellenstruktur für Tabelle `profil`
                    --
                    
                    DROP TABLE IF EXISTS `profil`;
                    CREATE TABLE `profil` (
                      `id_profil` int(11) NOT NULL,
                      `profil` varchar(255) NOT NULL
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
                    
                    --
                    -- Daten für Tabelle `profil`
                    --
                    
                    INSERT INTO `profil` (`id_profil`, `profil`) VALUES
                    (1, '35'),
                    (2, '40'),
                    (3, '45'),
                    (4, '50'),
                    (5, '55'),
                    (6, '60'),
                    (7, '65'),
                    (8, '70'),
                    (9, '75'),
                    (10, '80'),
                    (11, '85'),
                    (12, '95');
                    
                    -- --------------------------------------------------------
                    
                    --
                    -- Tabellenstruktur für Tabelle `reifenbreite`
                    --
                    
                    DROP TABLE IF EXISTS `reifenbreite`;
                    CREATE TABLE `reifenbreite` (
                      `id_reifenbreite` int(11) NOT NULL,
                      `reifenbreite` varchar(255) NOT NULL
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
                    
                    --
                    -- Daten für Tabelle `reifenbreite`
                    --
                    
                    INSERT INTO `reifenbreite` (`id_reifenbreite`, `reifenbreite`) VALUES
                    (1, '145'),
                    (2, '155'),
                    (3, '165'),
                    (4, '175'),
                    (5, '185'),
                    (6, '195'),
                    (7, '205'),
                    (8, '215'),
                    (9, '225'),
                    (10, '235'),
                    (11, '245'),
                    (12, '255'),
                    (13, '265'),
                    (14, '275');
                    
                    --
                    -- Indizes der exportierten Tabellen
                    --
                    
                    --
                    -- Indizes für die Tabelle `autosock_modell`
                    --
                    ALTER TABLE `autosock_modell`
                      ADD PRIMARY KEY (`id_autosock_modell`);
                    
                    --
                    -- Indizes für die Tabelle `durchmesser`
                    --
                    ALTER TABLE `durchmesser`
                      ADD PRIMARY KEY (`id_durchmesser`);
                    
                    --
                    -- Indizes für die Tabelle `profil`
                    --
                    ALTER TABLE `profil`
                      ADD PRIMARY KEY (`id_profil`);
                    
                    --
                    -- Indizes für die Tabelle `reifenbreite`
                    --
                    ALTER TABLE `reifenbreite`
                      ADD PRIMARY KEY (`id_reifenbreite`);
                    
                    --
                    -- AUTO_INCREMENT für exportierte Tabellen
                    --
                    
                    --
                    -- AUTO_INCREMENT für Tabelle `autosock_modell`
                    --
                    ALTER TABLE `autosock_modell`
                      MODIFY `id_autosock_modell` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14;
                    
                    --
                    -- AUTO_INCREMENT für Tabelle `durchmesser`
                    --
                    ALTER TABLE `durchmesser`
                      MODIFY `id_durchmesser` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
                    
                    --
                    -- AUTO_INCREMENT für Tabelle `profil`
                    --
                    ALTER TABLE `profil`
                      MODIFY `id_profil` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;
                    
                    --
                    -- AUTO_INCREMENT für Tabelle `reifenbreite`
                    --
                    ALTER TABLE `reifenbreite`
                      MODIFY `id_reifenbreite` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;
                    Hier noch der Link dazu: http://aebidruck.ch/size_finder/
                    Für bessere Verständnis noch das Datenblatt: http://mobilitykit.ch/pdf/autosock_preis_de.pdf

                    Kommentar


                    • #11
                      Schau dir mal das E.V.A. Prinzip an.
                      Du brauchst nur eine Tabelle und nicht mehrere, das wurde dir doch in #9 schon nahe gelegt.

                      Kommentar


                      • #12
                        Dieses Thema het sich erledigt. Danke für eure Hilfe.

                        Kommentar

                        Lädt...
                        X