Crosspost ist nicht erlaubt. Thema geschlossen!
Beiträge von Stef
-
-
Hey zusammen,
ich habe vor ein Bild als 3D Bild darzustellen und möchte dabei noch die Möglichkeiten haben auf einzelne Stellen des Bildes zuzugreifen um dort die Farbe, die Außwahl zu ändern. Sozusagen ein 3D Konfigurator.
Ich habe bereits viel gegoogelt und finde lediglich kostenlose Programme, die ermöglichen die Bilder als 3D Bilder darzustellen. Mehr nicht. Ich habe dann auch noch die 3D Bibliotheken Three.js & Babylon.js gefunden und habe gesehen, dass man mit diesen so etwas machen kann.
Ich habe bisher dazu leider nichts nützliches gefunden was mir da jetzt weiterhilft.
Wie kann ich ein Bild in verschiedene Abteile einteilen?
Habt ihr Ideen & Vorschläge wie ich dies umsetzen kann?
Freue mich von euch zu hören

Grüße,
Stef
-
Hey,
Code<body lang="DE" style=" margin:0px; padding:0px; border:none; outline: none; height: 100%;top:0px;left:0px;right:0px;bottom:0px; background-color:rgba(16,32,128,0.1); overflow: hidden; .SlideBox {margin-left: auto; margin-right: auto; box-sizing: inherit; position: relative;} .SlideIntro {margin: 0px;min-width: 100%; height:100%;margin-left: auto; margin-right: auto; vertical-align: middle; object-fit: cover; background-size: cover;} ">So ein CSS habe ich noch nie gesehen.
Es gibt verschiedene Möglichkeiten CSS einzubauen - inline, im Headbereich oder als ausgelagerte Datei.
Stell dir vor, du musst diese Webseite irgendwann warten, bzw. das Design verändern. Was ist da wohl komfortabler und einfacher?Zu deiner Frage zurückkommend wie man via click den nächsten Slide laden kann:
Dies ist eigentlich ganz einfach. Du entfernst deine setTimeout() Funktion. Nun erstellst du 2 Buttons ( wenn es in beide Richtungen gehen soll). Diese platzierst du dann dementsprechend rechts & links und gibst diesen eindeutige Ids. Nun initialisiert du auf diesen eine Funktion in der der nächste Slide dann geladen wird.
Oder wenn du möchtest, dass nur das nächste Bild geladet werden soll kannst du das Click Event auch auf dem Bild intialisieren.
HTML
Alles anzeigen<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Welcome!</title> <link rel="stylesheet" href="css/slider.css"> <script src="js/slider.js"></script> </head> <body> <div class="SlideBox"> <img class="SlideIntro" src="test(1).jpg"> <img class="SlideIntro" src="test(2).jpg"> <img class="SlideIntro" src="test(3).jpg"> </div> </body> </html>JavaScript
Alles anzeigenwindow.onload = function(){ var slideIntro = document.getElementsByClassName("SlideIntro"); var myIndex = 2; for(var a = 0; a < slideIntro.length; a++){ if(a > 0){ slideIntro[a].style.display = "none"; } slideIntro[a].addEventListener("click", carousel); } function carousel() { var i; var slideIntro = document.getElementsByClassName("SlideIntro"); for (i = 0; i < slideIntro.length; i++) { slideIntro[i].style.display = "none"; } if (myIndex > slideIntro.length){ myIndex = 1; } slideIntro[myIndex - 1].style.display = "block"; myIndex++; } }CSS
Alles anzeigenbody{ margin:0px; padding:0px; border:none; outline: none; height: 100%; background-color:rgba(16,32,128,0.1); overflow: hidden; } .SlideBox{ margin-left: auto; margin-right: auto; box-sizing: inherit; position: relative; } .SlideIntro { margin: 0px; width: 20em; margin-left: auto; margin-right: auto; vertical-align: middle; object-fit: cover; display: block; background-size: cover; }Grüße,
Stef
-
Crosspost ist nicht erlaubt! Thema geschlossen.
-
Hey,
gehe auf deinen Shop, klicke auf der Linie mit der rechten Maustaste und wähle Element Untersuchen. Ganz links hast du den HTML-Aufbau der Page und links davon die CSS-Eigenschaften. Nun wählst du die Linie aus und schaust dort wo die CSS Eigenschaften stehen nach dieser Linie. Recht oben im Eck der CSS-Anweisung steht dann der Dateiname.
Du kannst der Linie wenn du die Klasse/Id herausgefunden hast über dein CSS-Script eine andere Farbe geben indem du hinter der CSS Eigenschaft !important schreibst. Damit überschreibst du die CSS-Eigenschaft die durch Bootstrap gesetzt wurde.
Grüße
-
Hey,
du kannst die Formulardaten über ein PHP-Skript auswerten lassen.
Heißt:Formular wird abgesendet (Zahlen für die Rechnung) -> PHP-Skript erfasst diese, führt die Rechnung aus und gibt dann das Ergebnis wieder aus.
Grüße
-
Hey,
die Fehlermeldung bedeutet, dass die Methode/Funktion getInstance() nicht statisch ist und diese nicht statisch mit den ::-Selektor aufgerufen werden soll.
Hier findest du dazu hilfreiche Infos:
https://stackoverflow.com/questions/4684…alled-staticall
https://stackoverflow.com/questions/1969…ically/19694064
Grüße,
Stef
-
Hey,
danke für eure Antworten.
Zum Verständins:
Ich habe nun eine Klasse in der z.B. Userdaten verarbeitet werden. Nun habe ich eine weitere Klasse die zum Beispiel die Newsletterverarbeitung ausführt.
In beiden Klassen habe ich als Eigenschaft die E-Mail. Nun besteht die Gefahr, das diese public E-Mail Variable durch eine Variable von außen überschrieben wird (z.B. wenn man zu 2. etwas programmiert). Aus diesem Grund, das dies nicht auftritt, werden die Eigenschaften je nach dem ob diese Klasse vererbt werden soll oder nicht mit den Keywords protected/private geschützt. Somit kann diese Eigenschaft von außen nurnoch durch Funktionen geändert werden wo es ersichtlicher ist.
Und die Setter und Getter benutzt man dazu zum Versändnis, dass jeder sofort sieht, dass eine Eigenschaft gesetzt oder diese abgefragt wird und zur Miminierung der Überschreibgefahr.
Liege ich da so richtig?
-
Hey,
ich lese mich gerade nochmal in die OOP ein und stelle mir die Frage warum empfohlen wird Getter & Setter zu verwenden.
Ich habe bereits echt viel gegoogelt und es wurde viel erzählt mit der möglichen Datenkapselung, Übersicht des Codes und das man den Code zur Abfrage im Setter/Getter drin hat und dann nicht mehr lang den Code nach der bestimmten Stelle durchsuchen muss.
Diese Argumente haben mich überhaupt nicht überzeugt und ich bin jetzt genauso schlau wie vorher. Mir ist es nicht klarer geworden warum ich diese nutzen sollte.
Benutzt ihr Getter & Setter? Wenn ja warum?Freue mich von euch zu hören.

Grüße,
Stef
-
Crosspost ist nicht erlaubt. Thema geschlossen!
-
Hey,
kannst du uns bitte deinen Code hier posten. Dann kann ich dir besser helfen.
Grüße
-
-
Hey zusammen,
ich stehe vor einem unerklärlichen Problem. Ich habe die Add-Funktion eines Warenkorbes ein wenig erweitert und die Hauptaddfunktion in eine Funktion ausgelagert um diese dann immer wieder aufrufen zu können. Nun wird diese Funktion jedoch mehrfach aufgeruft und das Produkt dann auch mehrfach hinzugefügt obwohl es nur 1 mal hinzugefügt werden soll.
Ich habe auf die akkuButtons zu erst über eine for-schleife die Klick-Funktion intialisiert. Da diese for schleife 2-mal durchlaufen wird dachte ich mir , dass die Funktion im Falle "Ja" 2 mal aufgerufen wird. Dann habe ich die For-Schleife entfernt und manuell die Funktionen auf den akkuButtons intialisiert. Auch das brachte keine Änderung. Was für mich auch unerklärlich ist, ist dies, dass diese Funktion wie gesagt mehrfach aufgerufen wird (habe ich mittels debugging erfahren) und plötzlich nach 2 Klicks 6 x dieses Produkt im Warenkorb steht.
Live könnt ihr es hier testen: https://shop.darkhorizongroup.com/racingQuadcopt…ora-rc-armor220
Wenn ich die Funktion ohne meine Erweiterung aufrufe werden die Produkte normal hinzugefügt - so wie es sein sollte.
So sieht meine Erweiterung aus:
JavaScript
Alles anzeigenvar akkuOptions = document.querySelectorAll(".akkuOptions"); var importantAkkuOption = akkuOptions[0] ? akkuOptions[0] : ""; var importantAkkuOptionValue = importantAkkuOption.value; $('#button-cart').on('click', function() { var akkuHinweis = $("#akkuHinweis"); var akkuFieldValue = $(".productAkku").val(); akkuHinweis.dialog({ autoOpen : false, modal : true, show : "blind", hide : "blind", }); if(akkuOptions.length > 0){ if(akkuFieldValue == "" || akkuFieldValue == importantAkkuOptionValue ){ // Dialog akkuHinweis.dialog("open"); var akkuButtons = document.querySelectorAll(".akkuHinweisButtons"); /* Akkubuttons 0 = Ja 1 = Nein */ akkuButtons[0].addEventListener("click", function(){ var auswahl = this.value; if(auswahl == "ja"){ addEinkauf(); akkuHinweis.dialog("close"); } }); akkuButtons[1].addEventListener("click", function(){ var auswahl = this.value; if(auswahl == "nein"){ akkuHinweis.dialog("close"); } }); } else{ addEinkauf(); } } else{ addEinkauf(); } });Funktion Add Einkauf (daran habe ich nichts geändert - einfach nur den Funktionsinhalt in diese Funktion eingelagert):
JavaScript
Alles anzeigenfunction addEinkauf(){ i = 0; $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'), dataType: 'json', beforeSend: function() { $('#button-cart').button('loading'); }, complete: function() { $('#button-cart').button('reset'); }, success: function(json) { $('.alert-dismissible, .text-danger').remove(); $('.form-group').removeClass('has-error'); if (json['error']) { if (json['error']['option']) { for (i in json['error']['option']) { var element = $('#input-option' + i.replace('_', '-')); if (element.parent().hasClass('input-group')) { element.parent().after('<div class="text-danger">' + json['error']['option'][i] + '</div>'); } else { element.after('<div class="text-danger">' + json['error']['option'][i] + '</div>'); } } } if (json['error']['recurring']) { $('select[name=\'recurring_id\']').after('<div class="text-danger">' + json['error']['recurring'] + '</div>'); } // Highlight any found errors $('.text-danger').parent().addClass('has-error'); } if (json['success']) { $('.breadcrumb').after('<div class="alert alert-success alert-dismissible">' + json['success'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>'); $('html, body').animate({ scrollTop: 0 }, 'slow'); $('#cart > ul').load('index.php?route=common/cart/info ul li'); } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); i += 1; console.log(i); }Ich hoffe ihr könnt mir helfen dieses Problem zu lösen.
Stef
-
c29ok : Bitte füge deinen Code in die Code Tags ein - auch zukünftig wenn du Code posten solltest. Vielen Dank!
-
Guten Morgen,
ich verstehe dich gerade nicht. Kannst du es bitte nochmal detaillierter erklären.Danke.
-
Hey,
hört sich schon etwas schwer an.
Kannst du uns bitte mal deine Arrays mit Inhalt bereitstellen damit wir dir helfen können?
Außerdem: Du kannst bei der Selektierung der Daten aus der Datenbank auch Joins hinzufügen zum Verbinden der Daten aus den verschiedenen Tabellen. Dann hast du alle Daten in einem Array und möglichst geordnet. Mit dem kannst du dann deutlich einfacher arbeiten als mit den 4 Arrays.
Grüße,
Stef
-
Hey,
wie wäre es wenn du in der mobilen Ansicht der Section die Höhe gibst damit der gesamte Inhalt angezeigt wird ?Hast du auch schon versucht overflow-y den Wert scroll zu geben ( overflow-y: scroll; ) ?
Grüße,
Stef
-
Hey,
durch einfaches recherchen wie dies funktioniert hättest du aufjedenfall was gefunden.
Schau dir die Funktion json_decode an. Dort wird alles ausführlich erklärt.
PHP: Beispiel$json = .... ; $data = json_decode($json); $id = $data->objektschlüssel; $url = "www.-------.de?id=" . $id;Grüße,
Stef
-
-
Hey Britta,
Du kannst bei deinem Kontaktformular auch Bot- sowie Spam-Schutzmechanismen einbauen. Geht relativ einfach.
Ein Captcha ist auch möglich - ich finde ihn jedoch nicht so komfortabel. Es gibt auch bessere, benutzerfreundlichere Methoden.
Ich und JR Cologne haben ein Tutorial zum Thema "Kontaktformular" hier erstellt. Ich verlinke dir dieses hier mal: Kontaktformular Tutorial. Wird dir sicher Informationen geben - der Code ist auch noch relativ gut. Wenn du dieses Formular nutzen solltest dann musst du einmal überprüfen ob du Bootstrap nutzen willst oder es mit reinem CSS designen willst. Beim PHP-Mailer müsstest du mal schauen ob es bereits eine neuere Version gibt.
Steht deine E-Mail Adresse im HTML-Code? Dann aufjedenfall entfernen und dies über PHP machen.
Gerne kannst du uns hier deinen Code mit uns teilen. Dann können wir dir besser helfen.
Grüße,
Stef