PHP - Wie Daten zu MySQL aktualisieren, wenn Sie auf ein Optionsfeld
-
06-07-2019 - |
Frage
Beispiel speichern Geschlecht
<form action="save.php?id=<?=$id?>" method="post">
<p><label><input name="gender" type="radio" value="male" <?php if($gender=='male'){?>checked="checked"<? }?> /> Male</label></p>
<p><label><input name="gender" type="radio" value="female" <?php if($gender=='female'){?>checked="checked"<? }?> /> Female</label></p>
</form>
Hier ist ein Beispiel, den Wert zu aktualisieren
if ($_REQUEST['gender']) {
mysql_query("UPDATE users SET gender='$gender' WHERE id='" . $id . "'") or die(mysql_error());
}
Wie machen, wenn wir uns auf das Geschlecht, den Wert klicken wird automatisch speichern auf die db. Lassen Sie mich wissen.
Lösung
Etwas setzen Sie auf einen schöneren Weg aus:
// $_POST is way cooler than $_REQUEST
if (isset($_POST['gender']) && !empty($_POST['gender'])) {
// sql injection sucks
$gender = my_real_escape_string($_POST['gender']);
// cast it as an integer, sql inject impossible
$id = intval($_GET['id']);
if($id) {
// spit out the boolean INSERT result for use by client side JS
if(mysql_query("UPDATE users SET gender=$gender WHERE id=$id")) {
echo '1';
exit;
} else {
echo '0';
exit;
}
}
}
Unter der Annahme der gleichen Auszeichnungs, eine AJAXy Lösung (mit jQuery ):
<script>
var id = <?=$id?>;
// when the DOM is ready
$(document).ready(function() {
// 'click' because IE likes to choke on 'change'
$('input[name=gender]').click(function(e) {
// prevent normal, boring, tedious form submission
e.preventDefault();
// send it to the server out-of-band with XHR
$.post('save.php?id=' + id, function() {
data: $(this).val(),
success: function(resp) {
if(resp == '1') {
alert('Saved successfully');
} else {
alert('Oops, something went wrong!');
}
}
});
});
});
</script>
Andere Tipps
Sie können dies allein mit PHP nicht tun ... Sie werden auf dieser Seite einige JavaScript benötigen, die onchanged
des Radiobutton (n) und führt einen PHP-Skript ausgeführt wird. Dies nennt man Asynchronous JavaScript and XML oder "AJAX" und eine schnelle Einführung wäre http: // www.w3schools.com/ajax/default.asp
1 bis karim79 für den Hinweis auf jQuery / AJAX und _POST Dingen $. Sehr wichtig.
Hier ist eine Lösung ohne jQuery (wenn Sie jQuery nicht interessiert sind jetzt in dem Lernen)
Schritt 1: Fügen Sie ein Onchange auch auf Ihren Checkbox-Tags wie folgt:
<p><label><input name="gender" type="radio" value="male" onchange="do_submit()" <?php if($_POST['gender']=='male'){?>checked="checked"<? }?> /> Male</label></p>
<p><label><input name="gender" type="radio" value="female" onchange="do_submit()" <?php if($_POST['gender']=='female'){?>checked="checked"<? }?> /> Female</label></p>
Schritt 3: Fügen Sie einen Namen Attribut-Tag wie folgt zu bilden:
<form name="myform" action="check.php" method="post">
Schritt 3: Schreiben Sie die Event-Handler onchange Funktion in javascript:
<script type="text/javascript">
function do_submit() {
document.forms['myform'].submit();
}
</script>
Ein paar wichtige Dinge zu beachten.
- $ _ POST ist eine bessere Option als $ _REQUEST.
- Verwenden Sie
<?php
statt Kurzform von PHP-Tag<?
. Es wird in zukünftigen Versionen von PHP veraltet. - Zeit Investition in das Lernen jQuery / AJAX ist zu 100% der Zeit und Mühe wert