Evtl der Pfad zum Video?
Was sagt die console? (rechtsklick->element untersuchen->console)
Beiträge von cottton
-
-
Ich denke was Du suchst ist: http://php.net/manual/de/features.file-upload.multiple.php
HTML
Alles anzeigen<form action="" method="POST" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10000000" /> <!-- siehe http://php.net/manual/de/features.file-upload.post-method.php --> <input type="file" name="viele_auf_einmal[]" multiple="multiple"> <!-- [] um auf diesen key (name) ein array via POST zu bekommen und multiple="multiple" ... --> <input type="file" name="einzeln_a"> <!-- ein file --> <input type="file" name="einzeln_b"> <!-- ein weiteres file --> <input type="file" name="einzeln_c"> <!-- und noch ein weiteres file --> <input type="submit" value="do it"> </form>
Beachte: userfile[]
Ich glaube multiple="multiple" ist in der Doku auf php,net bissl untergegangen -
Müsste das Plugin nicht "AddOnClickAttrSetCallback" heißen?

Ich weiß - ist nur ein BspWürde noch beim callback verdeutlichen, dass dort weiterführender code angegeben werden kann/sollte -- wenn denn überhaupt ein callback gebraucht wird.
JavaScript/** * function callback got called after the attribute was set * @param object element clicked DOM element * @param object settings current settings */ callback: function(element, settings){ // ... <-- hier }
(muss mir jquery angucken
) -
Ja, Mist
Hab auch noch zum ~ selector gesucht.
Aber bei dem siehts wohl genauso aus.
Schade.
(andere input-Elemente fallen ja auch raus.)
Immerhin -- auch mit id ne schöne Sache. (Danke nochmal =) -
Hab keine Ahnung, wie was ich als Überschrift hätte nehmen sollen

Angelehnt an Erweiterung von Toggle Menü ohne JavaScript für mobile Navigation
Ich möchte über :checked andere Kontainer beeinflussen.Wenn :checked, dann soll das auf ein label folgende obj (hier div) beeinflusst werden.
wolf hatte mir schon gezeigt, dass es mit nem input und id funktioniert.
Jetzt versuche ich das Ganze ohne id.HTML
Alles anzeigen<!-- mit id/for --> <label for="a">click</label> <input id="a" type="checkbox"> <div>change</div> <!-- ohne id/for --> <label> click <input id="a" type="checkbox"> <div>change inside</div> </label> <div>change outisde</div>
Mit id funktioniert - klar. Aber ohne wäre es schön einfach dynamisch zu erstellen (PHP-seitig zB)Das ist was ich hab:
CSSlabel + div, label > div { /*innere und aeussere default yellow*/ background-color: yellow; } label > input:checked + div{ /*innere red, wenn :checked*/ background-color: red; } label + div input:checked + div{ /*aeussere red, wenn :checked -- funktioniert so nicht =/ */ background-color: red; }HTML<label> click <input type="checkbox"> <div>change inside</div> </label> <div>change outisde</div>
und live test: https://jsfiddle.net/61b65czk/2/Ich bin mir sicher, dass label + div input:checked + div falsch ist

Was ich als Anweisung brauche ist wohl in etwa:
wenn ein label > input:checked
dann dieses label + div { ... }
Bekommt man das hin, oder gibts da doch Grenzen? -
-
-
Mir hat die Nav von hier https://www.html-seminar.de/toggle-menue-ohne-javascript.htm gefallen
und hab mich (gezwungen weil ja nicht so mit css befreundet) da mal rangesetzt,
um das Menü auch mit Untermenüs zum laufen zu bekommen.Demo: http://www.cottton.net/
oder https://jsfiddle.net/pschqazd/ (wobei dort die "result"-watermark über dem Menu-Button nervt
)Da sich ja nun aber die Untermenüs per :hover öffnen, wird das aufm Mobile nicht so gut kommen.
Wie/Wo könnte man denn hier ansetzen, um (auch wieder ohne JS) die Untermenüs per Button zu öffnen?Ideen/Vorschläge/Änderungen/... immer gern.
Code:
index.htmlHTML
Alles anzeigen<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>title</title> <meta name="description" content=""> <meta name="robots" content="index,follow"> <meta name="keywords" content=""> <link href="favicon.ico" type="image/x-icon" rel="shortcut icon"> <!-- <link href="css/reset.css" type="text/css" rel="stylesheet" media="all"> --> <link href="css/style.css" type="text/css" rel="stylesheet" media="all"> <link href="css/header.css" type="text/css" rel="stylesheet" media="all"> <!-- <script src="js/script.js" type="text/javascript"></script> --> </head> <body> <header id="menu"> <div id="header_logo"> <a href=""> <img src="http://www.html-seminar.de/bilder/html-kurs-mit-hintergrund.png" alt=""> </a> </div> <nav> <ul> <li><a href="">Startseite</a></li> <li> <a href="">HTML lernen</a> <ul> <li><a href="">HTML ... A</a></li> <li><a href="">HTML ... B ...</a></li> </ul> </li> <li> <a href="">Beispiele</a> <ul> <li><a href="">Beispiel A</a></li> <li><a href="">Beispiel B ...</a></li> <li><a href="">Beispiel C ... ...</a></li> <li><a href="">Beispiel D ...</a></li> </ul> </li> <li><a href="">Kontakt</a></li> <li><a href="">Impressum</a></li> <li><a href="">noch was </a></li> <li><a href="">und noch was</a></li> </ul> </nav> <a id="menu_button_close" href="#">Close</a> <a id="menu_button_open" href="#menu">Menu</i></a> </header> <section> <h1>Toggle Menü ohne JavaScript (CSS:target)</h1> <h2>Steuerung für mobile Geräte</h2> Original: <a target="_blank" href="http://www.html-seminar.de/toggle-menue-ohne-javascript.htm">Toggle Menü ohne JavaScript (CSS:target)</a> <p>Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt.</p> <p>Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt Inhalt.</p> </section> </body> </html>
header.cssCSS
Alles anzeigenheader { width: 100%; border-bottom: 2px solid black; } /* HEADER LOGO */ header { display: block; width: 100%; color: black; background-color: white; } header #header_logo { display: inline-block; width: auto; } header #header_logo a { text-decoration: none; } header #header_logo a img { width: 100%; } /* HEADER NAV */ header nav { display: inline-block; width: auto; } header nav ul { } header nav ul li { display: block; float: left; list-style: none; } header nav ul li a { display: block; text-decoration: none; padding: 0.5em; color: white; background-color: gray; } header nav ul li a:hover { color: black; background: orange; } /* HEADER SUB NAV */ header nav ul li ul { position: absolute; } header nav ul li ul li { display: none; float: none; border-bottom: 1px solid silver; } header nav ul li:hover li { display: block; } /* HEADER MENU-BUTTON */ #menu_button_open, #menu_button_close { display: none; position: absolute; right: 0; top: 0; text-decoration: none; cursor: pointer; padding: 0.5em; color: white; background: silver; } #menu_button_close:hover, #menu_button_open:hover { color: black; background: orange; } @media only screen and (max-width:600px) { header { border-bottom: 1px solid black; } /* HEADER LOGO */ header #header_logo a img { width: 60%; } /* HEADER NAV */ header nav { display: none; width: 100%; } #menu:target nav { display: block; } header nav li { width: 100%; border-bottom: 1px solid silver; } /* HEADER SUB NAV */ header nav ul li ul { width: 100%; } header nav ul li ul li { width: 100%; } header nav ul li ul li a { padding-left: 1em; } /* HEADER MENU-BUTTON */ #menu_button_open, #menu_button_close { display: block; } #menu:target #menu_button_open { display: none; } }
style.css -
Ja, da fehlt mindestens ein Semikolon:
JavaScript
Alles anzeigen// ... scrolltotop.init()// SmoothScroll for websites v1.2.1 <<<--------- mach mal scrolltotop.init(); daraus // Licensed under the terms of the MIT license. // People involved // - Balazs Galambosi (maintainer) // - Michael Herf (Pulse Algorithm) (function(){ // Scroll Variables (tweakable) var defaultOptions = { // ...
Im Ausschnitt Zeile 3 -- das fehlende Semikolon.
Und evtl bauen sich alle anderen Fehler darauf auf.Kannst Du prüfen: Seite öffnen, Rechtsklick -> Element untersuchen (ich empfehle chrome), console
dort siehst Du dann, ob und welche Fehler auftreten. (inklusive klickbaren Link zur Datei/Zeile) -
Ich ahne, was Dein Problem ist.
Wenn Du mit STRG+Mausrad die Ansicht (Zoom) verkleinerst, dann
"zieht" die Seite nach links.
Und Du möchtest bestimmt, dass die Seite dabei mittig bleibt, wie das zB bei https://twitter.com/ passiert.Wenn nicht, dann weiß ich auch nicht was los ist

-
Schusselfehler:
personalnumer und personalnummer
PHP
Alles anzeigenif(empty(trim($_POST['personalnummer']))) { echo "Die Personalnummer ist fehlt.<br>"; } //elseif((int) $_POST['personalnummer'] != $_POST['personalnummer']) { // empfohlen nach empty, denn wenn nicht numerisch, dann ist nachfolgendes (strlen) "egal" elseif(!is_numeric($_POST['personalnummer'])) { // is_numeric muss nicht, ... deine variante geht auch echo "Die Personalnummer darf nur Zahlen enthalten"; } elseif(strlen($_POST['personalnummer']) > 16) { echo "Die Personalnummer darf nicht länger als 16 Zeichen lang sein.<br>"; } elseif(strlen($_POST['personalnummer']) < 4) { echo "Die Personalnummer darf nicht kürzer als 4 Zeichen kurz sein.<br>"; } else { $psn = ($_POST['personalnummer']); } // wozu die klammern? $psn = $_POST['personalnummer']; #} // <---- diese klammer hat kein gegenstück :p -
Hab gerade mal drüber geguckt - den parse error hab ich hier nicht feststellen können.
Aber hab da was verdreht
Erst query string zusammen stellen, dann ->prepare
PHP
Alles anzeigenfunction kategorien($mysqli, $offset=false, $limit=false) { // erste query string zusammen stellen $query = " SELECT pk_id, pk_titel, pk_label, pk_status FROM kategorien ORDER BY pk_titel ASC "; if($limit !== false) { // wenn limit angegeben, dann wird LIMIT ? angehangen $query .= " LIMIT ?"; } if($offset !== false) { // wenn offset angegeben, dann wird OFFSET ? angehangen $query .= " OFFSET ?"; } // dann stmt erzeugen $stmt = $mysqli->prepare($query); if($limit !== false) { $stmt->bind_param("i", (int)$limit); } if($offset !== false) { $stmt->bind_param("i", (int)$offset); } // ausführen $stmt->execute(); $stmt->bind_result($pk_id, $pk_titel, $pk_label, $pk_status); $stmt->store_result(); if($stmt->num_rows() > 0) { while ($stmt->fetch()) { $kategorien[] = array( 'pk_id' => $pk_id, 'pk_titel' => $pk_titel, 'pk_label' => $pk_label, 'pk_status' => $pk_status ); } return $kategorien; } }
Aber -- zu meiner Verteidigung -- Du musst ja auch Fehler finden/deuten können
Wie Du das machst ist relativ egal, solange es funktioniert und überschaubar ist.
Es passiert nicht selten, dass man fertige Funktionen erweitern will und die dann aber neu schreibt, weil die verwendete Art und Weise nicht mehr passt. -
-
Mein Aufruf dann so: $kategorien = kategorien($mysqli, $offset, $limit=false, $amount);
Wenn Du die Funktion so definierst, dass zB der Parameter $limit eine Default-Value hat (also $limit=false),
dann musst Du diesen Parameter beim Aufruf auch nicht angeben.Thema Query: gibt wieder verschiedene Wege.
Ich mach das meistens so:PHP
Alles anzeigenfunction kategorien($mysqli, $offset=false, $limit=false) { // $amount brauchst du doch glaub ich gar nicht mehr hier drin, oder? $query = " SELECT pk_id, pk_titel, pk_label, pk_status FROM kategorien ORDER BY pk_titel ASC "; // achtung: kein abschliessendes semikolon in der query. späteres anhängen würde nicht funktionieren. if($limit !== false) { // wenn limit angegeben, dann wird LIMIT ? angehangen $query .= " LIMIT ?"; $stmt->bind_param("i", (int)$limit); } if($offset !== false) { // wenn offset angegeben, dann wird OFFSET ? angehangen $query .= " OFFSET ?"; $stmt->bind_param("i", (int)$offset); } $query .= ";"; // kann, muss aber nicht. $stmt->execute(); $stmt->bind_result($pk_id, $pk_titel, $pk_label, $pk_status); $stmt->store_result(); if($stmt->num_rows() > 0) { while ($stmt->fetch()) { $kategorien[] = array( 'pk_id' => $pk_id, 'pk_titel' => $pk_titel, 'pk_label' => $pk_label, 'pk_status' => $pk_status ); } return $kategorien; } }
So siehst Du sofort, dassPHPif($limit !== false) ... // wenn also limit reingeschickt wurde (nicht default FALSE ist), dann "mach was damit
usw.EDIT: ist das mit der PageNav zu viel? Frage dehalb, weil es ja verständlich sein soll. Wenn nicht, muss ichs mal ändern.
-
Eigtl nicht. Wenn doch, dann hab och dort was falsch erklärt, oder falsch ge-script-ed

guck mal hier:PHP/* **** **** **** create a new PageNav **** **** **** */ $page_offset_current = isset($_GET['page']) ? $_GET['page'] : 1; $lines_count_all = 1001; // here you would use a db query like "SELECT COUNT(*) FROM tbl WHERE ..." $lines_per_page = 25; // how many lines per page are viewed $n = 5; // how many choices to each direction (left/right) (Nx[link/button] [page_offset_current] Nx[link/button]) $PageNav = new PageNav($page_offset_current, $lines_count_all, $lines_per_page, $n); /* **** **** **** **** **** **** **** **** **** **** */
Das würde in etwa für Dich bedeuten:PHP/* **** **** **** create a new PageNav **** **** **** */ $page_offset_current = isset($_GET['page']) ? $_GET['page'] : 1; // <------- hier deinen GET-key ( $_GET['seite'] oder was du halt nutzt ) $lines_count_all = getAmountKdCategory($mysqli, 'my_tbl_to_count'); // die maximale anzahl angeben $lines_per_page = 25; // wieviele datensätze per seite (zeilen in der liste...) $n = 5; // 5 wäre [1][2][3][4][5][-mitte 6-][7][8][9][10][11] $PageNav = new PageNav($page_offset_current, $lines_count_all, $lines_per_page, $n); // und nu einfach das ding "starten" -- dabei berechtet die klasse alle möglichen ... naja, den kram halt :D /* **** **** **** **** **** **** **** **** **** **** */
Das HTML-Gerüst muss ich Dir ja hoffentlich nicht erklären
(cottton out ... pennen :D) -
Guck mal hier: Einfache Seitennavigation (PageNav)
Hab ich (hoffentlich) dort alles erklärt
-
Unzureichende Information.
Was Du uns hier an Code zeigst, ist nur ein Teil.Das Problem mit dem Namen wird durch ein JS "verursacht". Dieses JS holt sich sicherlich per Data-Attribut data-validator den Namen und prüft ihn.
Der Text "Thank you for your comment!" kommt aus irgend einer Zeile, die ich hier nicht sehen kann =) -
Immer so, wie es "am meisten Sinn macht" -- für Dich.
Wenn Du auf verschiedenen Tabellen ein COUT brauchst, dann kann das Sinn machen.
Dann musst Du aber zur Sicherheit prüfen, ob der String für den tbl-name auch in Ordnung ist (injection ...).PHP
Alles anzeigenfunction getAmountKdCategory($mysqli, $tbl_name){ // $tbl_name: (string) ohne ` zu übergeben. bsp: "tbl_name" oder "dies_und_das" (ohne "), aber nicht "tbl name" if(!is_string($tbl_name)or !preg_match("/^[\w]+$/", $tbl_name)){ return false; // kein string oder invaliden tabllennamen gegeben } /* kannst es natürlich noch sicherer machen, indem du eine whitelist erstellst wie zb $tbl_name = strtolower($tbl_name); if(!in_array($tbl_name, array('mein_tbl', 'tbl_user', 'tbl_abc' ), true)){ return false; } */ $sql = "SELECT COUNT(*) AS `amount` FROM `" . $tbl_name . "`;"; $res = $mysqli->prepare($sql); $res->execute(); $res->bind_result($amount); $res->fetch(); $res->close(); return $amount; }EDIT: wenns and WHERE geht, dann kann es sein, dass es Sinnvoller ist mehrere Funktionen zu nutzen.
Denn wenn Du in einer Funktion die WHEREs für (übertrieben) 10 verschiedene Queries zusammenbastelst, kann es sein, dass Du später nicht mehr durch siehst.
Hier im Fall allerdings kein Problem. -
Stimmt, hab ich gar nicht bemerkt

Viele Funktionen sind nicht falsch.
Vieles wird mehrfach gebraucht. Dann macht es Sinn diese Sachen auszulagern.
Selbst bei $pages kann das Sinn machen, wenn Du die Berechnung dahinter an anderer Stelle nochmal benötigst.Du würdest also eine Funktion (Bsp-name) getPages() aufrufen -- un in dem Moment interessiert Dich nicht, was da drin passiert. Du willst nur das Ergebnis.
Ohne Funktion würdest Du den Code kopieren - an die Stelle, an der Du sie brauchst.
Und das kann gefährlich werden, wenn die Berechnung mal geändert wird.
Es könnte passieren, dass Du den Code dann nur an einer Stelle änderst, an der anderen Stelle aber belässt.Aber ich will jetzt hier kein Buch schreiben

EDIT zu Deinem EDIT

Fehler.
define() definiert eine Konstante LIMIT.
Den Inhalt der Konstante bekommst Du dann einfach perPHP$limit = LIMIT; // oder constant('LIMIT'), aber das ist im normalfall nicht nötig, es sei denn // du hast den namen der const in einer var -- bsp: $const_name = 'LIMIT'; // ist string, klar $wert = constant($const_name); // siehe http://php.net/manual/de/function.constant.php
Was Du gemacht hast: $limit den String "LIMIT" zugewiesen. -
ok, verstehe jetzt.
Dein Problem: Du definierst die var $amount IN der funktion kundengruppen_test.
Diese brauchst du außerhalb.
Dafür gibts mehrere lösungen.
A)
du gibst mehr also nur einen Wert aus der Funktion raus: ,
was ich allerdings hier NICHT empfehle.
B)
Du gibts übernimmst einen Parameter $amount per Referenz:PHPfunction kundengruppen_test($mysqli, $limit, &$amount){ //... $amount = 1; // wäre bei dir $res->bind_result($amount); } $amount = null; // vordefinieren der var $... = kundengruppen_test($mysqli, LIMIT, $amount);
$amount wurde von der Funktion als Referenz übernommen und innerhalb geändert.
(siehe http://php.net/manual/de/language.references.php)
C)
(empfohlen)
Du nutzt mehr als nur eine Funktion:PHP
Alles anzeigenfunction getAmountKdCategory($mysqli){ // parameter $mysqli sollte klar sein $sql = "SELECT COUNT(*) AS `amount` FROM kunden_kategorie;"; $res = $mysqli->prepare($sql); $res->execute(); $res->bind_result($amount); $res->fetch(); $res->close(); return $amount; } function getOffset($limit){ // parameter limit sollte klar sein $offset = 0; if (isset($_GET['page']) && $_GET['page'] > 1 ) { $offset = (intval($_GET['page']) - 1 ) * $limit; } return $offset; } function kundengruppen_test($mysqli, $offset, $limit, $amount) { $pages = ceil($amount/$limit); $stmt = $mysqli->prepare( 'SELECT `wkk_id`, `wkk_titel`, `wkk_status` FROM kunden_kategorie LIMIT ? OFFSET ?;' ); $stmt->bind_param("ii", $limit, $offset); $stmt->execute(); $stmt->bind_result($wkk_id, $wkk_titel, $wkk_status); $stmt->store_result(); if($stmt->num_rows() > 0) { while ($stmt->fetch()){ $kundengruppen_test[] = array( 'wkk_id' => $wkk_id, 'wkk_titel' => $wkk_titel, 'wkk_status' => $wkk_status ); } return $kundengruppen_test; } }
und jetzt der Ablauf:PHP// du bist "ausserhalb" und irgendwo hattest du LIMIT (Konstante) und $mysqli schon definiert $amount = getAmountKdCategory($mysqli); $offset = getOffset(LIMIT); $kundengruppen = kundengruppen_test($mysqli, $offset, LIMIT, $amount);EDIT: Funktion getOffset() geändert -- default return Wert