</head> <body> <form action="edit_subjects.php""> </head> <body> <form action="edit_subjects.php""> </head> <body> <form action="edit_subjects.php"" />

टेक्स्ट फ़ाइल से लोड किए गए इनपुट डेटा में किए गए परिवर्तन सबमिट करें

मेरे पास कुछ डेटा के साथ एक टेक्स्ट फ़ाइल है, कि मैं किसी रूप में कुछ इनपुट में गुजर रहा हूं

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="edit_subjects.php" method="post">
    <?php
    $content = file('../db/test.txt');
    foreach($content as $eachLine) {
        list($subject, $type, $description) = explode('|', $eachLine);
        echo '';
        echo '<input type="text" name="subject" id="subject" value="'.$subject.'">
'; echo ''; echo '<input type="text" name="type" id="type" value="'.$type.'">
'; echo '
'; echo '
'; } ?> <input type="submit"> </form> </body> </html>

कोड चलाने से यह आउटपुट मिलता है:


<input type="text" name="subject" id="subject" value="Subject 1">
<input type="text" name="type" id="type" value="Type1">


<input type="text" name="subject" id="subject" value="Subject 2">
<input type="text" name="type" id="type" value="Type2">


<input type="text" name="subject" id="subject" value="Subject 3">
<input type="text" name="type" id="type" value="Type3">


जैसा कि आप नामों को बार-बार देख सकते हैं, तो मैं अलग-अलग इनपुट के प्रत्येक सेट को कैसे एक्सेस करूं और इसे फ़ाइल में लिखूं

0
मैं समझता हूं कि मैं इसे edit_subjects.php कर दूंगा, लेकिन मुझे नहीं पता कि इसे कैसे किया जाए
जोड़ा लेखक svendjokumsen, स्रोत
आप इसे edit_subjects.php में करेंगे - या यह एक आत्म संदर्भ फ़ॉर्म है?
जोड़ा लेखक hammus, स्रोत
ठीक है एक सेकंड और मैं एक समाधान पोस्ट करूंगा
जोड़ा लेखक hammus, स्रोत

2 उत्तर

Edit_subjects.php के लिए यहां एक समाधान है:

यदि आप फॉर्म लूप को उस तरह के लूप में प्रिंट करने जा रहे हैं, और फिर फॉर्म सबमिट होने पर उन्हें भेजें, तो आपको प्रत्येक लूप पर name = मान बदलना होगा। आप इस तरह का उपयोग और वृद्धिशील संख्या का उपयोग कर सकते हैं:

$i = 1;

foreach($content as $eachLine) {
        list($subject, $type, $description) = explode('|', $eachLine);
        echo '';
        echo '<input type="text" name="subject' . $i .'" id="subject" value="'.$subject.'">br>';
        echo '';
        echo '<input type="text" name="type' . $i .'" id="type" value="'.$type.'">
'; echo '
'; echo '
'; $i++ }

OR you can turn your form names into arrays:

echo '<input type="text" name="subject[]" id="subject" value="'.$subject.'">

मूल्यों को प्राप्त करने के लिए आपको edit_subjects.php में उन पर लूप करने की आवश्यकता होगी।

फिर, $ _POST सरणी से अपने फॉर्म मानों तक पहुंचें (कृपया ध्यान रखें कि आपको सभी मानों से बचना चाहिए):

    if (isset($_POST['subject'])
    {
        $subject = $_POST['subject'];
        $type = $_POST['type'];
        //your other form values here...
        $result = $subject . "," . $type //or however you want to structure it
        $file = fopen("../db/test.txt", "w");
        fwrite($file, $result);
    } else {
        echo "POST variables not set!";
        die;
    }

यदि आप सरणी का उपयोग करते हैं तो अपने POST मानों तक पहुंचने के लिए एक उदाहरण है:

if (isset($_POST['subject'])
    {
        $file = fopen("../db/test.txt", "w");
        $i = 0;

        foreach($_POST['subject'] as $array)
        {
           $result = $_POST['subject'][$i] . "," . $_POST['type'][$i] ."\r\n";
           fwrite($file, $result);
           $i++
        }


    } else {
        echo "POST variables not set!";
        die;
    }
0
जोड़ा
बात यह है कि इनपुट नाम बार-बार जाते हैं, ताकि केवल इनपुट के अंतिम सेट को ही सबमिट किया जा सके
जोड़ा लेखक svendjokumsen, स्रोत
क्या मैं उन्हें एक फाइल में लिखूंगा?
जोड़ा लेखक svendjokumsen, स्रोत
अगर मैंने सरणी नामों के रूप में इस्तेमाल किया तो मैं उन्हें कैसे एक्सेस करूं और लिखूंगा?
जोड़ा लेखक svendjokumsen, स्रोत
आखिरी बार मैंने टिप्पणी नहीं की है, इसलिए मैंने अभी आपका जवाब स्वीकार कर लिया है।
जोड़ा लेखक svendjokumsen, स्रोत
@RHNorskov मुझे यकीन नहीं है कि आप अंतिम प्रश्न का क्या मतलब है, कृपया पुनः लिखें
जोड़ा लेखक hammus, स्रोत
बहुत धन्यवाद! मैंने अपनी आखिरी टिप्पणी हटा दी है। एक बार फिर धन्यवाद
जोड़ा लेखक hammus, स्रोत

फ़ाइल edit_subjects.php में आपको पास किए गए पैरामीटर में $ _POST ['subject'] के साथ पढ़ना होगा, ... फिर सही प्रारूप ($ परिणाम) की स्ट्रिंग में चर शामिल हों और इसे निम्न कोड से वापस लिखें:

$fp = fopen("../db/test.txt", "r+");
if (flock($fp, LOCK_EX)) {
    ftruncate($fp, 0);      
    fwrite($fp, $result);
    fflush($fp);           
    flock($fp, LOCK_UN);    
} else {
    echo "Couldn't get the lock!";
}
fclose($fp);
0
जोड़ा