मैं एक बहुत ही सरल किराये के उद्धरण फॉर्म को संसाधित करने की कोशिश कर रहा हूं, मूल रूप से फॉर्म भर जाता है और फिर डेटा एक ईमेल पर भेजा जाता है।

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

यहाँ आउटपुट है, मैंने कुछ सीमाएँ जोड़ी हैं ताकि आप खाली कोशिकाओं को उत्पन्न होते देख सकें:

enter image description here

और यहां मेरे PHP कोड का अनुभाग है जहां मैं इसे संसाधित कर रहा हूं (यदि आप संपूर्ण कोड देखना चाहते हैं, तो बस मुझे बताएं):

<?php
 if(isset($_POST['submit']))
 {
$name = strip_tags($_POST['renter_name']);
$email = strip_tags($_POST['renter_email']);
$message = strip_tags($_POST['renter_message']);
$subject = "Quote Request";
$rentalItems = ($_POST['item']);

// $items  = implode(',', $_POST['item']);

$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<p><strong>Sent by:</strong> ".$name."</p>";
$msg .= "<p><strong>Items:</strong></p>";

$msg .="<table name='rental_items' style='border-collapse:collapse; border: 1px solid black;';> 
                <thead style='text-align:left;'>
                    <tr>
                        <th sytle='padding-right: 5px;'>Item Name and ID</th>
                        <th>Quantity</th>
                    </tr>    
                </thead>
                <tbody>";
                    foreach($rentalItems as $item) { 
                        $msg .="<tr>
                            <td style='border: 1px solid black;'>". $item['name'] ."</td>
                            <td style='border: 1px solid black;'>".$item['quantity']."</td>
                        </tr>";
                     } 
       $msg .= "</tbody>
</table>";   

$msg .= "<p><strong>Message:</strong> ".$message."</p>";
$msg .= "</body></html>";

वर्तमान में मैं लूप में एक पंक्ति और दो कक्ष चला रहा हूं। लेकिन किसी कारण से यह प्रत्येक टीडी को अपनी पंक्ति के रूप में मान रहा है।

अंतत: मुझे नाम और आईडी की जानकारी के साथ वह मात्रा संख्या चाहिए।

मैं आपके साथ ईमानदार रहूंगा, मैंने वर्षों में टेबल के साथ काम नहीं किया है, इसलिए संभवतः यह कुछ बहुत ही सरल हो सकता है जो मुझे याद आ रहा है या गलत है। या यह हो सकता है कि मैं इस पूरी चीज को सामान्य रूप से कैसे संरचित कर रहा हूं।

किसी भी सलाह या मदद की बहुत सराहना की जाएगी। दोबारा, अगर आपको और जानकारी चाहिए, तो बस मुझे बताएं।

यहाँ प्रपत्र का आइटम अनुभाग है:

<input type="checkbox" name="item[][name]" value="Name: <?php the_title();?> <?php echo "<br>"?> ID: <?php echo get_post_meta($post->ID, 'id_number', true); ?>" id="<?php the_title(); ?>"/>
<label for="<?php the_title(); ?>"><img src="<?php the_post_thumbnail_url(); ?>" alt="<?php the_title(); ?>" class="form-image" /></label>
<input type="text" name="item[][quantity]"/>
0
Danielle 29 अक्टूबर 2019, 18:27

1 उत्तर

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

जैसा कि आप डेटा के लिए item[][name] और item[][quantity] का उपयोग कर रहे हैं, आप अलग-अलग मानों वाले वैकल्पिक सरणी तत्वों के साथ समाप्त हो जाएंगे ...

Array(0 => ("name" =>"somename"), 
         1 => ("quantity" =>1))

जब आप इस सरणी पर foreach करते हैं, तो यह एक या दूसरे मान को प्रदर्शित करेगा, लेकिन 2 को एक साथ नहीं दिखाएगा।

तो यह आसान होगा (मुझे लगता है) लूप के लिए उपयोग करना और इसे 2 के चरणों में लेना ...

for($i = 0; $i < count($rentalItems); $i+=2) { 
    $msg .="<tr>
               <td style='border: 1px solid black;'>". $rentalItems[$i]['name'] ."</td>
               <td style='border: 1px solid black;'>".$rentalItems[$i+1]['quantity']."</td>
            </tr>";
} 

वैकल्पिक रूप से - सरणियों का नाम बदलकर item[name][] और item[quantity][] करें ताकि डेटा अलग हो, लेकिन फिर आप $item['name'][0] और $item['quantity'][0] का उपयोग कर सकते हैं।

1
Nigel Ren 29 अक्टूबर 2019, 16:08