ठीक है तो मेरे पास एक संपर्क फ़ॉर्म है मैं चाहता हूं कि लोग संपर्क फ़ॉर्म सबमिट करने के बाद एकाधिक आइटम चुनें, मैं चाहता हूं कि यह एक HTML टेम्पलेट का उपयोग करके एक ईमेल भेजे। मैंने इसे एचटीएमएल टेम्पलेट में डेटा को स्ट्रिंग करने के लिए सेट अप किया है, लेकिन हर बार जब मैं सरणी करने की कोशिश करता हूं तो यह ईथर कहता है या केवल चुने गए कई आइटमों में से एक दिखाता है।

यह HTML चयन कोड है जिसे मैंने एक सरणी में नाम बनाने के लिए [] जोड़ना सुनिश्चित किया है।

<select class="js-example-multiple js-states form-control" multiple="multiple" name="product[]">
   <option value="Baby Shark Castle 15ft x 18ft">Baby Shark Castle 15ft x 18ft</option>
   <option value="Pirate's assault course 12ft x 25ft">Pirate's assault course 12ft x 25ft</option>
   <option value="Yellow Mega Slide 18ftx18ft">Yellow Mega Slide 18ftx18ft</option>
   <option value="18ft x 18ft Disco Dome Lights &amp; Speaker">18ft x 18ft Disco Dome Lights &amp; Speaker</option>
   <option value="Assault Course 35ft Long 12 ft Wide">Assault Course 35ft Long 12 ft Wide</option>
   <option value="Inflatable Nightclub 12ft x 15ft">Inflatable Nightclub 12ft x 15ft</option>
   <option value="40ft Assault course 15ft x 40ft">40ft Assault course 15ft x 40ft</option>
   <option value="Inflatable Pub 17x17 - Holds 20 People">Inflatable Pub 17x17 - Holds 20 People</option>
</select>

यह PHP कोड है, मैं अन्य व्यक्तिगत मानों को बदलने में सफल रहा हूं लेकिन जब मैं एक को एकाधिक मानों से बदलने का प्रयास करता हूं तो यह केवल एक मान दिखाता है। मैंने फ़ोरैच लूप की कोशिश की लेकिन यह केवल तभी काम करता है जब मैं मूल्य $ उत्पाद को प्रतिबिंबित करता हूं। मैं केवल एक ही नहीं चुनी गई सभी वस्तुओं को स्ट्रिंग करना चाहता हूं, मेरे पास एक उदाहरण है कि मैं इसे नीचे जैसा दिखाना चाहता हूं।

    // Bring in the email template here
    $html = file_get_contents('template.html');

    // You only need to modify the following three lines of code to customise your form to mail script.
    $email_to = "aaron@pugmanmedia.co.uk";          // Specify the email address you want to send the mail to.
    $email_from = "info@pugmanmedia.co.uk";  //Specify the email address that you want to send the email from. This needs to be Fasthosts hosted,
    $email_subject = "Website Contact Form";    // Set the subject of your email.
    // Specify a page on your website to display a thankyou message when the mail is sent
    $thankyou_url = "../thankyou.html";

    // Get the details the user entered into the form
    $name = $_POST["name"];
    $reply_to = $_POST["email"];
    $number = $_POST["number"];
    $date = $_POST["date"];
    $message = $_POST["message"];
    $products = $_POST["product"];   
    

    // Validate the email address entered by the user
    if(!filter_var($email_from, FILTER_VALIDATE_EMAIL)) {
        // Invalid email address
        die("The email address entered is invalid.");
    }

    // Replacing the details in the template the above variables
    $html =  str_replace("{{username}}",$name,$html);
    $html =  str_replace("{{email}}",$reply_to,$html);
    $html =  str_replace("{{number}}",$number,$html);
    $html =  str_replace("{{date}}",$date,$html);
    $html =  str_replace("{{message}}",$message,$html);
    foreach($products as $product){
        $list = $product . "<br> test <br>";
        $html =  str_replace("{{list}}",$list,$html);
    };

यह html टेम्पलेट कोड है

 <div style="margin: 0px; padding: 0px;">
    <p style="margin: 0px; padding: 0px;">
        {{list}}
    </p>
 </div>

यह परिणाम मुझे मिल रहा है

 <div style="margin: 0px; padding: 0px;">
    <p style="margin: 0px; padding: 0px;">
        Pirate's assault course 12ft x 25ft
    </p>
 </div>

अंतिम परिणाम जो मैं चाहता हूं वह यह है कि जब लोग इसके लिए किसी भी संख्या में आइटम का चयन करते हैं तो सभी एक ही स्थान पर ऊपर की बजाय इस तरह दिखाई देते हैं

<div style="margin: 0px; padding: 0px;">
    <p style="margin: 0px; padding: 0px;">
       Baby Shark Castle 15ft x 18ft
       Assault Course 35ft Long 12 ft Wide
       Pirate's assault course 12ft x 25ft
       and so on
    </p>
 </div>
2
ginger279 25 नवम्बर 2021, 12:48

2 जवाब

सबसे बढ़िया उत्तर

आपको चाहिए

बदलने के

foreach($products as $product){
    $list = $product . "<br> test <br>";
    $html =  str_replace("{{list}}",$list,$html);
};

साथ

$list = implode("<br>",$products);
$html =  str_replace("{{list}}",$list,$html);
2
mplungjan 25 नवम्बर 2021, 12:59
धन्यवाद महोदय, आप नायक हैं, अब यह पूरी तरह से काम कर रहा है मैंने इंपोड का उपयोग करने की कोशिश की लेकिन यह पीछे की ओर या कुछ था। फिर से धन्यवाद
 – 
ginger279
25 नवम्बर 2021, 13:45

जब आप ऐसा करते हैं:

foreach($products as $product){
    $list = $product . "<br> test <br>";
    $html =  str_replace("{{list}}",$list,$html);
};

आप वास्तव में प्रतिस्थापन n बार कर रहे हैं, लेकिन केवल पहला काम करेगा, क्योंकि बाद में प्रतिस्थापित करने के लिए "{{list}}" और नहीं है। यह कोई त्रुटि नहीं है, बस वह नहीं जिसकी आप अपेक्षा करते हैं।

इसे इस तरह आजमाएं:

$html =  str_replace("{{message}}",$message,$html);
$list = '';
foreach($products as $product){
    $list .= $product . "<br>";
};
$html =  str_replace("{{list}}",$list,$html);

अब आप सभी चयनित उत्पादों के साथ एक अस्थायी स्ट्रिंग चर बना रहे हैं और फिर आप इसे केवल एक बार बदलते हैं।

1
Johannes Freudendahl 25 नवम्बर 2021, 12:59