एचटीएमएल भाग
HTML फॉर्म में आपके इनपुट फ़ील्ड में ऐसे नाम होने चाहिए जो आपको भाषा की पहचान करने की अनुमति दें। HTML में आप वर्गाकार कोष्ठकों के साथ फ़ील्ड नाम बना सकते हैं। जब PHP इन मानों को प्राप्त करता है तो यह उन्हें एक सरणी के रूप में मानेगा। आप एक <textarea>
. परिभाषित कर सकते हैं इस तरह:
<textarea name="email_content[fr]">
फिर PHP में आप निम्न सिंटैक्स का उपयोग करके मान तक पहुँच सकते हैं:
$french = $_POST['email_content']['fr'];
नोट:
- एचटीएमएल
<textarea>
कोईtype
नहीं है न हीvalue
विशेषताएँ। hidden
जोड़ने के बजाय<input>
के लिए विशेषता तत्व, बस निर्दिष्ट करेंtype="hidden"
।- HTML में किसी भी गतिशील सामग्री को आउटपुट करते समय आपको XSS सुरक्षा ।
- के बजाय
<?php echo $var ?>
आप छोटे सिंटैक्स का उपयोग कर सकते हैं<?=$var ?>
तब आपका पूरा HTML फॉर्म कुछ इस तरह दिख सकता है:
<form action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post">
<input type="hidden" value="<?=$id?>" name="email_id">
<?php foreach ($languages as $lang) : ?>
<textarea value="1" name="email_content[<?=htmlspecialchars($lang)?>]" placeholder="<?=htmlspecialchars($lang)?>" value="<?=htmlspecialchars($lang)?>"></textarea>
<?php endforeach ?>
<button type="submit" name="save">Save</button>
</form>
PHP में फॉर्म प्राप्त होने के बाद आपका $_POST
इसमें कुछ इस तरह होना चाहिए:
array (
'email_id' => '12',
'email_content' =>
array (
'en' => '',
'fr' => 'French text',
'ru' => '',
),
'save' => '',
)
PHP भाग
पीडीओ का उपयोग करके PHP में एकाधिक मानों को सहेजने के लिए आपको लूप का उपयोग करने की आवश्यकता है। लूप से पहले, आपको स्टेटमेंट तैयार करना चाहिए और मापदंडों को बांधना चाहिए। PDO_stmt::bind_param()
शायद ही कभी उपयोग किया जाता है, लेकिन इस स्थिति में यह आपके कोड को साफ-सुथरा बना सकता है। आपको लेन-देन के अंदर सभी प्रविष्टियां भी करनी चाहिए।
$pdo->beginTransaction();
$stmt = $pdo->prepare("INSERT INTO emailtemplates (email_id,email_lang,email_content)
VALUES (:email_id, :email_lang, :email_content)");
$stmt->bindParam('email_id', $_POST['email_id']);
$stmt->bindParam('email_lang', $lang);
$stmt->bindParam('email_content', $contents);
foreach ($_POST['email_content'] as $lang => $contents) {
if ($contents && in_array($lang, $languages, true)) {
$stmt->execute();
}
}
$pdo->commit();
यदि आप सरल सिंटैक्स का उपयोग करना चाहते हैं तो आप PDO_stmt::execute()
का उपयोग कर सकते हैं पूर्व बाध्यकारी के बिना पैरामीटर पास करने के लिए।
$pdo->beginTransaction();
$stmt = $pdo->prepare("INSERT INTO emailtemplates (email_id,email_lang,email_content)
VALUES (:email_id, :email_lang, :email_content)");
foreach ($_POST['email_content'] as $lang => $contents) {
if ($contents && in_array($lang, $languages, true)) {
$stmt->execute([
'email_id' => $_POST['email_id'],
'email_lang' => $lang,
'email_content' => $contents,
]);
}
}
$pdo->commit();
निम्न पंक्ति जाँचती है कि क्या सामग्री प्रदान की गई थी और भाषा आपके द्वारा निर्दिष्ट भाषाओं की श्रेणी में है।
if ($contents && in_array($lang, $languages, true)) {