PHP - Comment mettre à jour des données vers MySQL en cliquant sur un bouton radio

StackOverflow https://stackoverflow.com/questions/1626730

  •  06-07-2019
  •  | 
  •  

Question

Exemple de sauvegarde du genre

<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>

Voici un exemple pour mettre à jour la valeur

  if ($_REQUEST['gender']) {
  mysql_query("UPDATE users SET gender='$gender' WHERE id='" . $id . "'") or die(mysql_error());
  }

Comment faire en cliquant sur le genre, la valeur sera automatiquement sauvegardée dans la base de données. Faites le moi savoir.

Était-ce utile?

La solution

Quelque chose pour vous faire partir sur un chemin plus joli:

  // $_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;
          }
      }
  }

En supposant le même balisage, une solution ajaxy (utilisant 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>

Autres conseils

Vous ne pouvez pas faire cela avec PHP seul ... vous aurez besoin de JavaScript sur cette page qui exécute onchanged des radiobutton (s) et exécute un script PHP. Ceci s'appelle JavaScript et XML asynchrones ou & "AJAX &"; Et une introduction rapide serait http://www.w3schools.com/ajax/default.asp

+1 à karim79 pour avoir signalé jQuery / AJAX et $ _POST thingy. Très important.

Voici une solution sans jQuery (si vous ne souhaitez pas apprendre jQuery pour le moment)

Étape 1: ajoutez un onchange même sur vos balises de case à cocher, comme ceci:

<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>

Étape 3: ajoutez un attribut nom à la balise de formulaire, comme suit:

<form name="myform" action="check.php" method="post">

Étape 3: écrivez la fonction du gestionnaire d'événements onchange en javascript:

<script type="text/javascript">
function do_submit() {
  document.forms['myform'].submit();
}
</script>

Quelques points importants à noter.

  • $ _ POST est une meilleure option que $ _REQUEST.
  • Utilisez <?php à la place de la forme abrégée de la balise php <?. Il sera obsolète dans les futures versions de php.
  • Investir du temps dans l’apprentissage de jQuery / AJAX vaut à 100% le temps et les efforts nécessaires
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top