2009-11-09 9 views
0

Pouvez-vous me aider dans les deux scénarios suivants (PHP + Mysql)comparaison des champs de formulaire avec des champs de base de données et mettre en évidence les champs de formulaire

Scénario1: je dois comparer les valeurs des champs de formulaire HTML avec les valeurs de champ de base de données et mettez en surbrillance les champs de formulaire dans une couleur dont les valeurs sont différentes des valeurs de base de données avant de soumettre le formulaire (pour alerter l'utilisateur).

: Scénario 2

Le chargement de la forme, je dois comparer les valeurs présentes dans 2 tables de base de données différentes (tables ayant des noms de colonnes, mais les informations sont identiques). les champs qui ne sont pas identiques doivent être surlignés dans le formulaire html pour indiquer aux utilisateurs que les données de base sont différentes des données secondaires.

Pourriez-vous m'aider quelle est la manière efficace de faire cela (comparaison et mise en évidence des valeurs de formulaire).

merci à l'avance Naveen

Répondre

0

Scénario 1

<form method="post"> 
    <? foreach ($fields as $field) : ?> 
    <? if (in_array($diff_fields, $field)) : ?> 
    <div style="background-color:red"> 
    <? else : ?> 
    <div> 
    <? endif; ?> 
     <input type="text" value="<?= $record[$field] ?>"/> 
    </div> 
    <? endforeach; ?> 
</form> 

$fields = array('id', 'name', 'created_at'); 
$diff_fields = array(); 

$record = fetch_from_db($record_id); 

foreach ($fields as $field) { 
    if (isset($record[$field]) && $record[$field] != $_POST[$field]) { 
    $diff_fields[] = $field; 
    } 
} 
0

Puisque vous voulez gérer un scénario avant de soumettre le formulaire, vous devez utiliser JavaScript La comparaison. Si vous connaissez la structure du formulaire avant de générer la page, il est préférable d'écrire une série de comparaisons en utilisant jQuery, change() et les champs masqués dans le formulaire. Pour le scénario 2, cela dépend un peu de votre définition de «efficace». Si vous souhaitez utiliser la ressource serveur la plus petite possible, vous pouvez renvoyer la page avec les deux tables de base de données entrées dans des tables bien nommées, puis utiliser à nouveau JavaScript pour mettre en évidence les différences. Si vous voulez une solution qui ne dépend pas de JS s'exécutant sur le navigateur du client, vous pouvez faire la comparaison dans une requête vers MySQL. L'exécution de la comparaison dans PHP lui-même est probablement la plus facile à coder et donc la plus efficace pour le temps du programmeur, mais l'exécution la plus lente (si cela dépend de plusieurs choses comme la taille de la table).

+0

Y at-il une autre alternative sans utiliser Jquery? –

+0

Si vous souhaitez traiter le client avant de soumettre le formulaire, JavaScript est l'outil à utiliser. Il y a certainement d'autres bibliothèques que vous pourriez utiliser, ou vous pourriez vous passer d'une bibliothèque si vous le vouliez. Je suggère simplement jQuery parce que cela facilite le travail avec JS. – acrosman

Questions connexes