Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP вмъкване на множество масиви от квадратчета за отметка И текстови полета в MySQL база данни

Не трябва да използвате 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();
}

BTW, поставянето на цените във вашия HTML изглежда като лоша идея. Нищо не спира потребителя да променя HTML с помощта на уеб инспектора, преди да изпрати формуляра, за да може да намали цената. Трябва да получите цените от базата данни при обработка на формуляра.

Също така забележете, че в оригиналния си код сте отворили връзката към базата данни с MySQLi, но след това сте се опитали да направите вмъкването с помощта на mysql_query вместо $conn->query() . Не можете да смесвате API по този начин; myql_query може да се използва само когато отворите връзката с mysql_connect .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да настроите индексната структура на ElasticSearch с множество обвързвания на обекти

  2. Използване на MySQL IF EXISTS

  3. Как да намерите съпоставянията, поддържани от сървъра в MySQL

  4. Как да проверите състоянието на сървъра в MySQL Workbench с помощта на GUI

  5. Връщане на ResultSet