Habe den Fehler gefunden.
Die Formularfelder brauchen auch noch Namen.
Dann klappt es.
Beiträge von Berndi
-
-
Hallo Experten,
ich versuche hier gerade einen Datensatz aus einem Formular auszulesen, um ihn später dann per AJAX weiter zu verarbeiten.
Einschlägige Seiten schlagen hier vor, alle Formulardaten mit der Funktionoder
in eine Variable zu schreiben und diese dann im AJAX zu übergeben.
Bei mir bleibt die Variable aber leer, der Befehl liefert keine Inhalte.
Hier mein Formular:PHP
Alles anzeigen<div class="container"> <form id="singleSQLedit" method="post" style="text-align:right;"> <div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_bez" class="col-sm-2 col-form-label">Bezeichnung: </label> <div class="col-sm-4"> <input type="text" class="form-control" id="fz_bez" value="<?php echo $row['Bezeichnung']; ?>"> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_ruf" class="col-sm-2 col-form-label">Funkrufname: </label> <div class="col-sm-4"> <input type="text" class="form-control" id="fz_ruf" value="<?php echo $row['Funkrufname']; ?>"> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_ruf" class="col-sm-2 col-form-label">Anhänger: </label> <div class="col-sm-4"> <input type="text" class="form-control" id="fz_anh" value="<?php echo $row['Anhaenger']; ?>"> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_ruf" class="col-sm-2 col-form-label">Abrollbehälter: </label> <div class="col-sm-4"> <input type="text" class="form-control" id="fz_arb" value="<?php echo $row['Abrollbehaelter']; ?>"> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_ort" class="col-sm-2 col-form-label">Herkunft: </label> <div class="col-sm-4"> <input type="text" class="form-control" id="fz_ort" value="<?php echo $row['Standort']; ?>"> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_anz" class="col-sm-2 col-form-label">Ankunftzeit: </label> <div class="col-sm-4"> <input type="time" class="form-control" id="fz_anz" value="<?php echo substr($row['Ankunftzeit'],0,5); ?>"> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_block" class="col-sm-2 col-form-label">Position (Block):</label> <div class="col-sm-4"> <select id="fz_block" class="form-control"> <?php echo " <option" . ((!isset($row['Block'])) ? " selected" : "") . "> </option>\n"; for($i=0; $i <= 20; $i++) { echo " <option" . (($row['Block'] == $BlockBS[$i]) ? " selected" : "") . ">$BlockBS[$i]</option>\n"; } ?> </select> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_row" class="col-sm-2 col-form-label">Position (Reihe): </label> <div class="col-sm-4"> <select id="fz_row" class="form-control"> <?php echo " <option" . ((!isset($row['Reihe'])) ? " selected" : "") . "> </option>"; echo " <option" . (($row['Reihe'] == "Links") ? " selected" : "") . ">Links</option>"; echo " <option" . (($row['Reihe'] == "Mitte")? " selected" : "") . ">Mitte</option>"; echo " <option" . (($row['Reihe'] == "Rechts") ? " selected" : "") . ">Rechts</option>"; ?> </select> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <label for="fz_pos" class="col-sm-2 col-form-label">Position (Folge): </label> <div class="col-sm-4"> <input type="number" min="1" step="1" class="form-control" id="fz_anz" value="<?php echo substr($row['Position'],0,5); ?>"> </div> </div><div class="row"> <div class="col-sm-3 col-xs-hidden"></div> <div class="col-sm-2"><a tabindex="0" class="btn btn-secondary sqlKnopf" data-action="edit">Daten ändern</a></div> <div class="col-sm-2"><a tabindex="0" class="btn btn-secondary sqlKnopf" data-action="new">als neues Fahrzeug speichern</a></div> </div> </form> </div>
...und hier das Script zum Auslesen der Formularinhalte:
Code
Alles anzeigen<script> $(document).ready(function() { $(".sqlKnopf").click(function() { var daten = $("#singleSQLedit").serialize(); $("#message").text(daten); $("#message").css('display', 'block'); setTimeout(function() { $("#message").css('display', 'none'); }, 5000); $.ajax({ type: 'POST', url: "./lib/sql_helper.php", data : daten, success: function(response) { $("#message").text(response); $("#message").css('display', 'block'); setTimeout(function() { $("#message").css('display', 'none'); }, 5000); } }); }); }); </script>
Kann mir jemand erklären, was ich falsch mache?
-
Vielen Dank für deine Hilfe.
-
Habe es hinbekommen.
Ich musste vor die Klassenbezeichnug das div schreiben.
Ohne hat es seltsamerweise nicht funktioniert.Code
Alles anzeigenfunction smartRefresh() { if (typeof (activeBlock) != "undefined") { url = "./lib/parade_blockrefresh.php?blockID=" + activeBlock; } else { url = contentPath + "?" + 1 * new Date() } $("#refresh.active").load(url, function () { if (typeof (left) != "undefined") { $('.carousel-item.active div.block-row-left').scrollLeft(left); } if (typeof (middle) != "undefined") { $('.carousel-item.active div.block-row-middle').scrollLeft(middle); } if (typeof (right) != "undefined") { $('.carousel-item.active div.block-row-right').scrollLeft(right); } }); $(".popover").popover('hide'); }
-
Danke für deine Hilfe.
Ich weiß das wirklich zu schätzen.
Leider funktioniert auch dieser Code nicht.
Ich habe das Gefühl, als würde .scrollLeft(x) einfach nicht funktionieren.
Der Wert ist innerhalb der Funktion vorhanden, korrekt übergeben.
Das wurde ja mit alert(middle) verifiziert.
Es gibt im Caroussell ja mehrere div.block-row-left, -middle und -right.
Deshalb habe ich auch schon versucht es etwas differenzierter anzugeben.Das hatte aber auch keinen Effekt.
Ich bin hier echt am Haare raufen. -
Funktioniert leider auch nicht.
-
Geh' mal auf "Blockübersicht" und blättere das Carousell durch.
Das sind dann auch zwischendurch Scrollbalken. -
Hallo Experten,
ich verzweifle hier daran, einem Content nach dem reload die ursprüngliche Position des Scrollbalkens zu übergeben.
Meine Arbeit bisher sieht folgendemaßen aus:
Die index.php enthält:Code
Alles anzeigen... <script> var refreshId = setInterval(function () { smartRefresh() }, 10000); }); function smartRefresh() { $("#refresh.active").load(contentPath + "?" + 1*new Date()); $(".popover").popover('hide'); } </script> ... <div id="refresh" class="flex-container active" style="padding-top: 75px;"></div> ...
Der Content, dessen Pfad in der Variable contentPath gespeichet ist, enthält folgenden code:
Code
Alles anzeigen... <div id="16" class="carousel-item active"> <img class="dummy" src="./img/dummy.png"> <div class="carousel-caption"> <h1 class="block-head" align="center">Block-R</h1> <div class="block-container"> <div class="block-row block-row-right"> ... </div> <div class="block-row block-row-middle"> ... </div> <div class="block-row block-row-left"> ... </div> </div> </div> </div> ... <script> $(document).ready(function() { $('.carousel-item.active .block-row-left').mouseup(function() { left = $(this).scrollLeft(); }); $('.carousel-item.active .block-row-middle').mouseup(function() { middle = $(this).scrollLeft(); }); $('.carousel-item.active .block-row-right').mouseup(function() { right = $(this).scrollLeft(); }); if (typeof(left) != "undefined") {$('.block-row-left').scrollLeft(left);} if (typeof(middle) != "undefined") {$('.block-row-midddle').scrollLeft(middle); alert(middle);} if (typeof(right) != "undefined") {$('.block-row-right').scrollLeft(right);} }); </script>
Ich frage quasi nach jedem mal, wenn die Maustast losgelassen wird ab, an welcher Position sich die Scrollbalken befinden uns speichere sie in den Variablen left, middle und right.
Nach jedem refresh existiert zwar der Variablenwert (wird im alert ausgegeben), wird aber nicht durch die .schrollLeft(x) Funktion an den Scrollbalken zurückgegeben.
Was mache ich falsch?
Das gesamte Projekt lasst sich hier betrachten.
Bin für jede Hilfe dankbar.
Gruß,
Berndi -
Vielen Dank für Eure Anteilnahme.
Da mein Projekt auf Bootstrap 4 aufbaut und mir nach etwas Lektüre aufgegangen ist, dass dieses mit der popper.js korresponiert, habe ich das Problem einfach damit, bzw. mit PopOver gelöst.
Liebe Grüße,
Berndi -
Da gehört nicht viel Intelligenz zu, einfach mal folgendes testen:
....Vielen Dank!
Versuche mich ständig weiterzuentwickeln.
Mit manchen Dingen bin ich eben noch nie in Kontakt gekommen. -
Danke für die Antwort.
Hast du da irgendeinen Codeschnipsel für mich? -
Hallo Experten,
auf meiner Webseite habe ich eine Art Kontextmenü für die dort abgebideten Buttons erstellt.Jetzt habe ich das Problem, dass dieses Kontextmenü - gemäß meiner Einstellungen) immer an der gleichen Position, relativ zum Cursor angezeigt wird und so am Bildschirm, bzw. Fensterrand verdeckt wird.
Wie kann ich das einstellen, dass das Kontextmenü immer innerhalb des sichtbaren Bereichs erscheint und gegebenenfalls die relative Position zum Cursor anpasst.
Das Problem kann hier (https://tinyurl.com/yyb7497a) und hier (https://tinyurl.com/yy8yl4om) besichtigt werden.
Gruß,Berndi
-
Gut, habe noch ein wenig recherchiert und eine "typische" jQuery-Einbindung gefunden.
Jetzt sieht das bei mir so aus:
<head><script>
$(document).ready(function() {
$('#ParadenLogin').submit(function() {
$.post( './lib/loginscript.php', $(this).serialize(), function(data) {
$('#response').html(data);
})
.fail(function () {
alert( "Fehler" );
});
});
});
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-bottom">
<div class="container" style="display: flex; justify-content: space-between;">
<div id="navbar" class="navbar-collapse collapse">
<form id="ParadenLogin" class="navbar-form navbar-right">
<div class="form-group">
<input Type="text" name="username" placeholder="Benutzer" class="form-control">
</div>
<div class="form-group">
<input type="password" name="password" placeholder="Passwort" class="form-control">
</div>
<input type="hidden" name="action" value="login">
<input type="hidden" name="json" value="true">
<button type="submit" name="absenden" class="btn btn-success">Anmelden</button>
</form>
</div><!--/.navbar-collapse -->
</div>
</nav>
<div id="response"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script> <script src="./js/bootstrap.min.js"></script>
</body>
Leider funktioniert es nicht.
Der "response"-Container bleibt leer. -
Habe den Fehler entdeckt.
Einer der POST-Variablen war falsch (uid anstatt username)
Jetzt muss ich nur noch irgendwie herausfinden, wie ich meiner Webseite beibringe, dass ein User eingeloggt ist und was da den Unterschied macht.
Bedeutet:
Wie verarbeite ich denn nun das erfolgreiche Login?
Gibt es irgendwelche Rückgabewerte, die ich abfragen und weiterverwerten kann?
bzw...
Wie müsste denn so ein AJAX-Aufruf für dieses Script aussehen?
Sorry, dass ich so blöd frage...
Gruß,
Berndi -
Habe diese Anleitung mit Script gefunden, weil ich genau das gesucht habe. Daenbankverbindung klappt, Registrerung von neuen Nutzern auch. Nur der Login will nicht klappen. Ich bekomme immer "Check your Input!" eingeblendet. Ich habe das Ganze in Verbindung mit Bootstrap folgendermaßen implementiert:
<nav class="navbar navbar-inverse navbar-fixed-bottom">
<div class="container" style="display: flex; justify-content: space-between;">
<div id="navbar" class="navbar-collapse collapse">
<form action="./lib/loginscript.php" method="POST class="navbar-form navbar-right">
<div class="form-group">
<input type="text" name="uid" placeholder="Benutzer" class="form-control">
<input type="hidden" name="action" value="login">
</div>
<div class="form-group">
<input type="password" name="password" placeholder="Passwort" class="form-control">
</div>
<button type="submit" name="absenden" class="btn btn-success">Anmelden</button>
</form>
</div><!--/.navbar-collapse -->
</div>
</nav>
Alternativ habe ich versucht das Script direkt einzubinden und die login-Funktion über
define( "PATH_SOURCE", realpath( dirname( __FILE__ ) ) . '/lib/' );
include_once(PATH_SOURCE . "loginscript.php");
if(isset($_POST['ausführen'])) {login();}
aufzurufen.
Das hat aber auch nicht geklappt.
Was mache ich falsch?
Liebe Grüße,
Berndi