Ich habe erschöpfend auf Möglichkeiten gesucht, um diese Aufgabe zu erfüllen. Ich habe Probleme, Inhalt innerhalb eines Div in eine Variable zu verwandeln, die in eine PHP-Anweisung verarbeitet werden kann. Ich habe versucht mit AjaxForm Ich habe AJax ausprobiert.Wie nehmen Sie Inhalt in einem div, das in einem Formular ist und es in eine Datenbank zusammen mit anderen Formulardaten
Hier ist mein Formularcode, der unter dem Titel "library.php" steht. Hier habe ich ein div mit der ID "input". Ich versuche, die Daten in diesem Div zu bekommen, das entweder die Option "Öffentlich" oder "Privat" sein wird. Ich werde dann gehen Sie auf die Schaltfläche erstellen, um die Daten an die database.php
<form method="post" action="library.php" id="form3">
<a id="libOptPP" class="select">
**<div id="input" class="input" name="Privacy">
</div>**
<div id="libOptPP2" class="select-options">
<ul>
<li id="pub" value="1"><span>Public</span> (logo) </li>
<li id="priv" value="2" class="selected"><span>Private</span></li>
</ul>
</div>
</a>
<div class="libOptCS">
<span class="bbCT">
<button type="submit" name="create"> Create </button>
</span>
</div>
</form>
Hier vorzulegen ist das Skript, das im Kopf des library.php liegt, wo ich werde versuchen und die Verwendung AJAX um die Variable zu senden "Datenschutz" für die Database.php. Diese Variable enthält den Text des div, der im vorherigen Codeblock angegeben ist. Dies wird entweder die Option "Öffentlich" oder "Privat" sein. Anstatt den ID-Namen des divs zu verwenden, ging ich weiter und wählte die Klassen aus, die ".select .input" heißen.
<script>
$(document).ready(function main() {
$("create").click(function() {
var privacy = $(.select .input).text();
.ajax({
type: "POST",
url: ../../database/database.php,
data: "privacy="+privacy,
dataType: "html",
async: false,
success: function(data) {
alert(data);
}
});
});
});
</script>
Hier ist der PHP-Code für die Eingabe der Formulardaten in meine Datenbank. Sobald wir auf die Schaltfläche "Erstellen" klicken, wie im vorherigen Code angegeben, aktiviert dies die Übertragung von Daten in die entsprechende Tabelle und die nachfolgenden Zeilen.
if (isset($_POST["create"])) {
$Privacy = mysqli_real_escape_string($db, $_POST['privacy']);
$ETH = mysqli_real_escape_string($db, $_POST['ETH']);
$Email_Phone_Number = $_SESSION['Email_Phone_Number'];
if ($Privacy === "Public") {
$sql = "INSERT INTO library (Title, Privacy, Bio, User_iD)
VALUES ('$ETH', '$Privacy', 'testbio', (SELECT User_iD FROM logstart WHERE Email_Phone_Number='$Email_Phone_Number'))";
mysqli_query($db, $sql);
}
if ($Privacy === "Private") {
$sql = "INSERT INTO library (Title, Privacy, Bio, User_iD)
VALUES ('$ETH', '$Privacy', 'testbio', (SELECT User_iD FROM logstart WHERE Email_Phone_Number='$Email_Phone_Number'))";
mysqli_query($db, $sql);
}
if (mysqli_query($db, $sql)) {
echo "YES!";
} else {
echo "No!";
}
}
Irgendwo entlang Die Variable wird nicht identifiziert. Wenn ich den "create" Knopf drücke, wird ein Popup von "unidentified Index: privacy" erstellt. Mit anderen Worten, $ _POST ['privacy'] enthält nicht die Daten, die ich brauche, die öffentlich oder privat sein müssen, damit ich das identifizieren und den Rest des Codes weiter verwenden kann.
Ich kenne PHP nicht, aber ... warum benutzt du kein Eingabesteuerelement - egal ob versteckt, Text oder Textbereich? Außerdem sind Sie an das click-Ereignis der create-Schaltfläche gebunden, aber es handelt sich um eine Übermittlungsschaltfläche, und Sie rufen preventDefault nicht auf, damit das Formular möglicherweise übergeben wird, bevor der Code ausgeführt wird? – upsidedowncreature
Ihr Code ist anfällig für SQL-Injection-Angriffe. Sie sollten parametrisierte Abfragen und vorbereitete Anweisungen verwenden, um Angreifern zu helfen, Ihre Datenbank durch die Verwendung schädlicher Eingabewerte zu kompromittieren. http://bobby-tables.com/ gibt eine Erklärung der Risiken, sowie einige Beispiele, wie Sie Ihre Abfragen sicher mit PHP/mysqli schreiben können. – ADyson