2010-12-14 26 views
2

Disons simplement que j'ai un (plusieurs beaucoup de) champs de texte sur une page ... et j'entre une nouvelle valeur dans l'un d'eux, puis cliquez sur un bouton ... Comment puis-je mettre à jour la base de données avec juste cette nouvelle valeur? Ou, si ce serait plus facile ... Comment puis-je mettre à jour tous ces champs de texte dans la base de données?Obtention de valeurs de champs de texte à la page

Merci :)

+1

les noms des champs de texte les mêmes que les noms de champs dans la base de données? –

+0

@matt_abury, ils peuvent être. Je suis sûr que ce ne sera pas un problème du tout. –

Répondre

0

vous pouvez utiliser jquery data(), pour stocker le premier état,

lorsque vous souhaitez afficher, après que la zone de texte qui a été changé.

voir ce post

+0

Je ne pense pas que ça a quoi que ce soit à faire avec jquery (encore) –

0
<?php 
$sql = "UPDATE table_name SET"; 
foreach($_POST as $key=>$value){ 
    if($key != 'submit'){ 
     $sql .= " " . $key . " = '" . $value . "'"; 
    } 
} 
$sql = " WHERE ......"; 
?> 

Cela va générer l'instruction SQL pour vous. Vous avez juste besoin d'ajouter la sécurité, puis l'exécution.

+0

Donc, tout ce que j'ai à faire est juste d'ajouter un formulaire, puis en le soumettant, votre script ci-dessus mettra à jour le tout? Awesome :) Je vais essayer. –

+0

N'oubliez pas de valider les champs d'entrée en vérifiant la variable $ value dans la boucle pour vous assurer qu'ils ne saisissent pas quelque chose qu'ils ne devraient pas faire. –

+0

J'ai modifié la boucle pour m'assurer que vous ignorez le bouton de soumission. –

0

Pour mettre à jour tout:

Vous pouvez organiser vos entrées comme celui-ci (1,2,3,4 - sont de disques de id dans la base de données):

<input type="text" name="info[1]" value="blabla"> 
<input type="text" name="info[2]" value="blabla"> 
<input type="text" name="info[3]" value="blabla"> 
<input type="text" name="info[4]" value="blabla"> 
<!-- ... --> 

Ensuite, dans votre script PHP :

<?php 
foreach($_POST['info'] as $id=>$data){ 
    mysql_query("UPDATE table SET data = '".mysql_escape_string($data)."' WHERE id = ".intval($id)); 
} 
?> 

de cette façon, il y aura une instruction UPDATE pour chaque enregistrement

Pour mettre à jour que ceux qui ont changé:

Vous pouvez utiliser l'événement onChange() de javascript pour voir quels champs ont été modifiés et ne soumettre que ceux-ci. Attention, si un utilisateur a désactivé javascript, il ne pourra jamais changer d'enregistrement.

+0

Merci :) Comment pourrais-je juste mettre à jour celui qui vient d'être changé ?, Je n'ai besoin que d'eux pour changer une chose à la fois –

+0

Et c'est pourquoi l'utilisation de script Java dans ce scénario est inutile. –

0

identifier les valeurs de textfield: chaque champ de texte est censé avoir un attribut "name":

<input type="text" name="firstName" value="please enter your first name"/> 

vous pouvez l'accéder à la valeur du champ de texte "foo" avec $ _POST [ "foo"] Pour en savoir Si le champ a été modifié, vous devez le comparer à la valeur par défaut.

if($_POST["firstName"]!="please enter your first name"){ 
    /*do databse update*/ 
} 

Comment exactement la mise à jour de la base de données dépend de votre application.

0

Comme je peux le voir, il a deux approches

1 - Après avoir clique sur le bouton Enregistrer, vous collectez toutes les valeurs à un tableau (à l'aide JavaScrip) et passez ce tableau (Comme une liste séparée par des virgules ou quelque chose) au serveur. à l'intérieur d'un bloc de transaction, vous supprimez toutes les valeurs existantes de la table et insérez les nouvelles valeurs. 2 - Mais si vous avez beaucoup, beaucoup de valeurs de texte, ayez un javascript pour identifier seulement les zones de texte changeantes.

procédure simple serait,

  • sélectionner un champ de texte

    obtenir sa valeur à une variable

    lorsque l'utilisateur fait un changement au texte champ comparer toujours avec le d'origine valeur

    Si la valeur a changé, marquer ce texte case

    lorsque l'utilisateur clique sur 'Enregistrer' obtenir uniquement les champs de valeur modifiée

cheers

Sameera

0

Vous pouvez faire tout cela en utilisant javascript/jquery:

<div id="inputs"> 
    <input type="text" id="in1" /> 
    <input type="text" id="in2" /> 
    <input type="text" id="in3" /> 
    ... 
    </div> 

    $(function() { 
    $('#inputs input').each(function() { 
     $.ajax({ 
      type: 'post', 
      url: 'your script url' 
      data: { input : $(this).val(), id : $(this).attr('id') }, 
      success: function(result) { 
      //do whatever you want with result 
      } 
     }); 
    }); 
    }); 

je n'ai pas testé cela mais je suis sûr que cela fonctionnerait. Si vous avez de l'expérience avec javascript/jquery, c'est une base de données facile à mettre à jour en fonction des champs remplis. Vous pouvez tester côté client (javascript) si l'un des champs est vide.

a oublié d'ajouter: côté PHP:

 function somescript() { 
     if (!isset($_POST['input']) || ! isset($_POST['id']) { 
     //do something to handle post not being set 
     } 

     $in = sanitize($_POST['input']); 
     $id = sanitize($_POST['id']); 
     //sanitize is a function that you should write to clean the user input 

     //have a query and pass in the $in and $id 
     //id can be used in your where statement 
    }