Doch, das sind dann zwei Schritte:
Zunächst mit der Importfunktion die Daten in die temp. Tabelle laden.
Dann mit SQL die Daten in die Zieltabelle übertragen.
Doch, das sind dann zwei Schritte:
Zunächst mit der Importfunktion die Daten in die temp. Tabelle laden.
Dann mit SQL die Daten in die Zieltabelle übertragen.
Dieses Problem würde sich nicht stellen, wenn Du die Importfunktion von phpmyadmin verwenden würdest, dann hast Du keine Probleme mit Rechten und Pfaden.
Zitatworauf bezieht sich das Pfad '/tmp/your_file.csv' bei LOAD DATA INFILE
Ist das das Verzeichnis auf meinem Computer oder ist das das Verzeichnis auf dem Apache-Server?
Das ist die Datei auf dem Server. Aber bei dem Verfahren, das ich selber beschrieben habe, ist das gar nicht relevant, weil Du dann die Datei manuell mit dem Filemanager auswählst. Wie ich oben schrieb:
Zitatkannst die Import-Funktion von phpmyadmin verwenden, dann kannst Du sie auf deinem lokalen Dateisystem auswählen und sie wird automatisch hochgeladen und eingelesen.
ZitatAußerdem können die Daten in meiner Tabelle nicht durch Kommas getrennt sein.
Du kannst jedes beliebige Zeichen als Trennzeichen verwenden, auch ; |` etc., Du musst dieses nur beim Export angeben. Wenn dieses Zeichen in deinem Text vorkommen sollte, kannst Du die Einträge in Hochkommas einschließen und das Trennzeichen ggf. escapen.
Wenn Du damit nicht zum Ziel kommst, dann poste mal ein paar Beispieleinträge, die das Problem demonstrieren.
Ich habe es mal mit Testtabellen und -dateien durch gespielt und es hat problemlos funktioniert. Du brauchst die Datei mit den Daten nicht selber hochzuladen, sondern kannst die Import-Funktion von phpmyadmin verwenden, dann kannst Du sie auf deinem lokalen Dateisystem auswählen und sie wird automatisch hochgeladen und eingelesen.
Du schreibst zwar: "Ich will keine neue Tabelle in phpmyadmin hochladen" aber wenn man den Angaben bei Stackoverflow folgt, musst Du das tun, und zwar zunächst die Daten in eine temporäre Tabelle laden, dann daraus die Daten in die Zieltabelle einfügen. Die temp. Tabelle kannst Du dann wieder löschen.
Die einzelnen Schritte sehen so aus:
1. Spalte in der Zieltabelle auswählen, die sich als ID eignet, d. h. über die man einen Datensatz eindeutig identifizieren kann.
2. Temp. Tabelle erzeugen mit zwei Spalten: ID und Wert, der in die Zieltabelle eingefügt werden soll.
3. Mit phpmyadmin die neue Spalte in der Zieltabelle hinzu fügen.
4. Um sie leicht editieren und in phpmyadmin importieren zu können, die Datei mit den Daten am besten als CSV-Datei anlegen. Bei meinem Test sahen die Daten so aus:
5. Die temp. Tabelle in phpmyadmin auswählen und in der Werkzeugleiste oben auf "Importieren" klicken.
Format CSV auswählen, in "Spalten getrennt mit" das Komma stehen lassen, "Spalten eingeschlossen mit:" und "Spalten escaped mit" leer machen.
Dies ist der einfachste Fall. Wenn Deine Daten auch Kommas enthalten können, musst Du dies anpassen.
6. Import mit "OK" starten.
7. Wenn der Import erfolgreich war, die Daten mit SQL in die Zieltabelle eintragen:
Wenn Du überprüft hast, dass die Daten richtig übernommen wurden, kannst Du die temp. Tabelle wieder löschen.
Das liegt daran, dass für main die opacity auf 0.8 gestellt ist:
Eine Lösung wird hier beschrieben:
Gern geschehen!
Vermutlich meinst Du die Pfeilfunktion und bist die Schreibweise mit function gewohnt.
Auch für die for-Schleife gibt es eine neuere, kompaktere Version:
Bei mit funktioniert der Zugriff auch in der Funktion createKnights:
function createKnights() {
const htmlFragment = document.createDocumentFragment();
x = 0; // X-Axis
y = 0; // Y-Axis
for (let i = 0; i < knightsTotal; i++) {
const image = document.createElement('section');
image.classList.add('hero_img', 'class_knights');
image.id = knightslist[i];
htmlFragment.appendChild(image);
image.style.backgroundPosition = x + '% ' + y + '%';
image.addEventListener('click', e => {
console.log(image.id + ' clicked')
});
moveAxis(x, y);
}
bgHeroes.appendChild(htmlFragment);
}
Alles anzeigen
Zitatkann man die Id nur so holen: getElementById('neraxis') oder kann ich auch so: getElementById(knightlist[i])?
Selbstverständlich sollte das zweite auch funktionieren.
Du erzeugst die Elemente erst im onload-Event. Füge ich dort eine Ausgabe ein, funktioniert es:
window.onload = function () {
viewClass[0].classList.add('classActiv');
clearcontent('bgHeroes');
createKnights();
createWarriors();
createAssassins();
createArchers();
createMechanics();
createWizards();
createPriests();
console.log(document.getElementById('neraxis').id)
}
Alles anzeigen
Ich vermute, Du hast versucht, außerhalb dieser Funktion zuzugreifen, als das Element noch nicht definiert war.
PS: Eine Alternative könnte aber sein, das data-Attribut statisch einzuschalten, aber die Buttons, die dazu gehören, mit CSS unsichtbar zu machen. Das ginge dann auch mit Mediaqueries.
Ich fürchte, mit Mediaqueries kann man nur CSS-Eigenschaften setzen aber keine Attribute
Siehe hier:
Bei mir funktioniert display: inline-block; schon, in dieser Demo nimmt der Container nur den Platz entspr. dem Inhalt ein und ist zentriert ausgerichtet:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<style>
ul.slides li {
text-align: center;
}
ul.slides {
list-style-type: none;
}
.container {
display: inline-block;
}
</style>
</head>
<body>
<div class="hero hero-slider">
<ul class="slides">
<li data-bg-image="images/dia0.jpg">
<div class="container" style="background:rgba(21,18,21,0.7)">
<h2 class="slider-title">Willkommen</h2>
<p>Text ...</p>
<p>Text ...</p>
</div>
</li>
</ul>
</div>
</body>
</html>
Alles anzeigen
Bei dem Fiddle muss ich doch vorsichtig Bedenken anmelden:
1. ul als direktes Kind von ul ist nicht valide
Zitat
2. Die Beschreibung gehört zu dem Bild und sollte daher sowohl aus semantischen als auch funktionalen Gründen in dem li mit dem Bild liegen.
3. Fraglich, ob eine Liste für die Beschreibung in diesem Fall semantisch sinnvoll ist. Wahrscheinlich liegt der TO mit Überschrift und Absätzen schon richtig.
4. Löst nicht das Problem des TO, denn die Beschreibung nimmt nach wie vor nach rechts die gesamte Fensterbreite in.
basti1012 So ist es natürlich eine Kleinigkeit, wenn alle Zellen die selbe Breite haben. Der Knackpunkt hier ist jedoch, dass sich die Zellen variabel an den Inhalt anpassen sollen. Der TO schreibt ja:
Zitatwie ich die Breite der einzelnen divs definiere. Denn diese ergibt sich ja erst aus dem Platz der einzlenen divs welche die Daten brauchen.
Außerdem ist das wesentliche bei Flex, dass sich die Container an den Inhalte anpassen. Der Tabellenkopf hat bei dir jedoch eine feste Höhe.
Ich empfehle, etwas bewährtes zu verwenden, nämlich datatables:
https://datatables.net/examples/basic_init/scroll_y.html
Vielfältig konfigurierbar, z. B. können nicht benötigte Features ausgeschaltet werden.
Das ist natürlich blöd. Ich hatte es auch getestet und zufällig ein Beispiel mit px gewählt, so dass mir dies nicht aufgefallen ist. Dann kommt dieser Weg für dich also nicht in Frage.
Diesen Link habe ich unter meinen Lesezeichen, dort sind die Grundlagen ganz gut erklärt:
https://danielfett.de/2006/03/20/reg…uecke-tutorial/
Sehr gut zum Lernen und zum Testen ist diese Seite:
RegEx ist sehr mächtig und es lohnt sich auf jeden Fall, sich darin einzuarbeiten. Unabhängig von dieser Aufgabe gibt es sehr viele Einsatzmöglichkeiten.
In einem anderen Thread hast Du ja schon den Hinweis bekommen, dass ein HTML-Dokument in PHP mit DOMDocument geparsed werden kann. Möglicher Weise ist dies subjektiv, weil ich mit Javascript und CSS besser vertraut bin, aber ich fand es immer eine Qual, das Ergebnis auszuwerten, mit xpath oder so geht das, aber die Syntax ist sehr kryptisch.
Ich weiß auch gar nicht, ob dort externes CSS berücksichtigt wird, müsstest Du mal recherchieren.
Unabhängig ob PHP oder JS:
Bei Auswerten oder Parsen von Strings, wie Du es in dem Code oben für die Maßeinheit der Schriftgröße machst, geht alles viel einfacher, wenn Du RegEx verwendest. In deiner Funktion isBlank() tust Du das ja schon.
Ich fürchte, direkt in der HTML-Datei wirst Du nicht an den Text der CSS-Datei heran kommen, sondern Du müsstest sie erst mit Ajax holen, oder gleich auf dem Server auswerten und parsen.
Es gibt jedoch eine andere Möglichkeit: Du kannst mit Javascript und der Funktion getComputedStyle die Schriftgröße aller Elemente auslesen und prüfen.
Vorteil: Es ist egal, ob sie inline, eingebettet im HTML, oder in einer externen Datei definiert ist.
Nachteil: Wird mit Klassen im Selektor gearbeitet, würdest Du die selbe Regel mehrfach prüfen.
Da gibt es mehrere Lösungsmöglichkeiten:
Zunächst mal kann man einen Eventlistener auch wieder entfernen, siehe hier:
https://wiki.selfhtml.org/wiki/JavaScrip…veEventListener
Das setzt allerdings voraus, dass es sich nicht um eine anonyme Funktion handelt, was aber kein Problem sein dürfte.
In jQuery ist das etwas einfacher durch die Aufrufe von on() und off().
Alternativ kannst Du den Startzeitpunkt außerhalb definieren und den Listener ebenfalls außerhalb registrieren, aber den Wert für den Startzeitpunkt erst innerhalb der Funktion zuweisen. Solange Du letzteres nicht getan hast, hat die Variable den Wert null und Du kannst sie später auch wieder auf diesen Wert zurück setzen, so dass Du eine Info hast, ob der Startzeitpunkt gesetzt ist.
Persönlich würde ich das zweite Verfahren vorziehen.
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.