Saya mencoba memproses formulir penawaran sewa yang cukup sederhana, pada dasarnya formulir diisi dan kemudian data dikirim ke email.

Masalah saya adalah bagaimana bagian item diformat. Saat ini saya sedang mencoba tabel dan mengisinya dengan loop foreach. Masalah utamanya adalah menghasilkan tag td kosong untuk beberapa alasan.

Inilah hasilnya, saya telah menambahkan beberapa batas sehingga Anda dapat melihat sel kosong yang dihasilkan:

enter image description here

Dan inilah bagian kode php saya tempat saya memproses ini (jika Anda ingin melihat seluruh kode, beri tahu saya):

<?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>";

Saat ini saya menjalankan satu baris dan dua sel dalam satu lingkaran. Tetapi untuk beberapa alasan ia memperlakukan setiap td sebagai barisnya sendiri.

Pada akhirnya saya ingin nomor Kuantitas itu di samping Nama dan info ID.

Saya akan jujur ​​​​dengan Anda, saya belum pernah bekerja dengan tabel selama bertahun-tahun jadi itu mungkin sesuatu yang sangat sederhana yang saya lewatkan atau salah. Atau bisa jadi bagaimana saya menyusun semua ini secara umum.

Setiap saran atau bantuan akan sangat dihargai. Sekali lagi, jika Anda memerlukan info lebih lanjut, beri tahu saya.

Inilah bagian item dari formulir:

<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 Oktober 2019, 18:27

1 menjawab

Jawaban Terbaik

Saat Anda menggunakan item[][name] dan item[][quantity] untuk data, Anda akan berakhir dengan elemen array alternatif yang berisi nilai yang berbeda...

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

Saat Anda melakukan foreach atas array ini, itu akan menampilkan satu nilai atau yang lain, tetapi tidak 2 bersama-sama.

Jadi akan lebih mudah (saya pikir) menggunakan for loop dan mengambilnya dalam langkah 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>";
} 

Atau - ganti nama array menjadi item[name][] dan item[quantity][] sehingga datanya terpisah, tetapi Anda kemudian dapat menggunakan $item['name'][0] dan $item['quantity'][0].

1
Nigel Ren 29 Oktober 2019, 16:08