आपको implode
का उपयोग नहीं करना चाहिए . यह आपके द्वारा सम्मिलित की जाने वाली प्रत्येक पंक्ति में प्रपत्र में प्रत्येक चीज़ की अल्पविराम से अलग की गई सूची डालता है, और चेक किए गए प्रत्येक बॉक्स के लिए इसे दोहराता है। सरणियों को अनुक्रमित करके आपको प्रत्येक पंक्ति में केवल एक आइटम सम्मिलित करना चाहिए।
हालांकि, जब आपके पास किसी फॉर्म में चेकबॉक्स होता है, तो यह केवल चेक किए गए लोगों को सबमिट करता है। इसका परिणाम यह होता है कि $_POST['checkbox']
. की अनुक्रमणिकाएं सरणी संबंधित $_POST['item']
. से मेल नहीं खाती और $_POST['quantity']
तत्व आपको स्पष्ट अनुक्रमणिका को checkbox
. में डालने की आवश्यकता है नाम ताकि आप उन्हें जोड़ सकें।
<form method = "POST">
<input type = "hidden" name = "item[]" value = "cupcake">
<input type = "text" name = "items" value = "cupcake" readonly><br>
<b>Price :</b> <span name = "price" value = "3.00">$17.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /><span>Add to Cart</span></label></div></div></td><br>
<input type = "hidden" name = "item[]" value = "cake">
<input type = "text" name = "items" value = "cake" readonly><br>
<b>Price :</b> <span name = "price" value = "20.00">$20.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /><span>Add to Cart</span></label></div></div></td><br>
<input type = "submit" name = "insertBT"><br>
</form>
तब आपका PHP कोड इस तरह हो सकता है:
$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)");
$stmt->bind_param("sis", $name, $quantity, $price);
foreach ($_POST['checkbox'] as $i => $price) {
$name = $_POST['name'][$i];
$quantity = $_POST['quantity'][$i];
$stmt->execute();
}
बीटीडब्लू, कीमतों को अपने एचटीएमएल में डालना एक बुरा विचार है। उपयोगकर्ता द्वारा फ़ॉर्म सबमिट करने से पहले वेब इंस्पेक्टर का उपयोग करके HTML को संशोधित करने से कुछ भी नहीं रोकता है, ताकि वे कीमत कम कर सकें। फ़ॉर्म को संसाधित करते समय आपको डेटाबेस से मूल्य प्राप्त करने चाहिए।
साथ ही, ध्यान दें कि आपने अपने मूल कोड में MySQLi का उपयोग करके डेटाबेस कनेक्शन खोला था, लेकिन फिर आपने mysql_query
का उपयोग करके सम्मिलित करने का प्रयास किया। $conn->query()
. के बजाय . आप एपीआई को इस तरह नहीं मिला सकते हैं; myql_query
केवल तभी उपयोग किया जा सकता है जब आप mysql_connect
. के साथ कनेक्शन खोलते हैं ।