Fórum O nome do produto está sendo inserido de forma repetitiva no Mysql #608029
09/02/2020
0
$this->start();
foreach($this->details() as $product_name){
$product = $product_name['product_name'];
}
// Insert the items
if ($pass) {
$this->details();
$this->orderID = $this->lastID;
$sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`, `product_name`) VALUES ";
$cond = [];
foreach ($_SESSION['cart'] as $id=>$qty) {
$sql .= "(?, ?, ?, ?),";
array_push($cond, $this->orderID, $id, $qty, $product);
}
$sql = substr($sql, 0, -1) . ";";
$pass = $this->exec($sql, $cond);
}
André
Curtir tópico
+ 0Posts
10/02/2020
Kleber Santos
Sugiro você pegar um papel e anotar o valor das variáveis linha por linha respeitando as validações e loops, assim você consegue entender o que está acontecendo no teu código.
Gostei + 0
10/02/2020
Kleber Santos
Sugiro você pegar um papel e anotar o valor das variáveis linha por linha respeitando as validações e loops, assim você consegue entender o que está acontecendo no teu código.
Eu não lembro muito bem a sintaxe do PHP, más acredito que você vai ter que montar um array de objetos mais ou menos assim:
produtos: [
{ order_id= 1,
product_id= 2
quantity = 3,
product_name= nome1
},
{ order_id= 2,
product_id= 2
quantity = 3,
product_name= nome2
},
{ order_id= 3,
product_id= 2
quantity = 3,
product_name= nome3
}
]
depois fazer um foreach percorrendo o array de produtos
foreach ($produtos as $produto) {
echo produto
}
Gostei + 0
10/02/2020
André Luis
if ($pass) {
$this->details();
foreach ($this->details() as $nome) {
$product_name = $nome[$id]['product_name'];
}
$this->orderID = $this->lastID;
$sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`, `product_name`) VALUES ";
$cond = [];
foreach ($_SESSION['cart'] as $id=>$qty) {
$sql .= "(?, ?, ?, ?),";
array_push($cond, $this->orderID, $id, $qty, $product_name);
}
$sql = substr($sql, 0, -1) . ";";
$pass = $this->exec($sql, $cond);
}
Gostei + 0
11/02/2020
Kleber Santos
if ($pass) {
$this->details();
foreach ($this->details() as $nome) {
$product_name = $nome[$id]['product_name'];
}
$this->orderID = $this->lastID;
$sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`, `product_name`) VALUES ";
$cond = [];
foreach ($_SESSION['cart'] as $id=>$qty) {
$sql .= "(?, ?, ?, ?),";
array_push($cond, $this->orderID, $id, $qty, $product_name);
}
$sql = substr($sql, 0, -1) . ";";
$pass = $this->exec($sql, $cond);
}
foreach ($_SESSION['cart'] as $id=>$qty) {
$sql .= "(?, ?, ?, ?),";
array_push($cond, $this->orderID, $id, $qty, $product_name);
}
o loop do foreach está assim:
id qty $product_name
0 qty[0] $product_name[0]
1 qty[1] $product_name[0]
2 qty[2] $product_name[0]
3 qty[3] $product_name[0]
Percebeu que você não está percorrendo o array de produtos?
Gostei + 0
11/02/2020
André Luis
if ($pass) {
$this->details();
foreach ($this->details() as $nome) {
$product_name = $nome[$id]['product_name'];
}
$this->orderID = $this->lastID;
$sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`, `product_name`) VALUES ";
$cond = [];
foreach ($_SESSION['cart'] as $id=>$qty) {
$sql .= "(?, ?, ?, ?),";
array_push($cond, $this->orderID, $id, $qty, $product_name);
}
$sql = substr($sql, 0, -1) . ";";
$pass = $this->exec($sql, $cond);
}
foreach ($_SESSION['cart'] as $id=>$qty) {
$sql .= "(?, ?, ?, ?),";
array_push($cond, $this->orderID, $id, $qty, $product_name);
}
o loop do foreach está assim:
id qty $product_name
0 qty[0] $product_name[0]
1 qty[1] $product_name[0]
2 qty[2] $product_name[0]
3 qty[3] $product_name[0]
Percebeu que você não está percorrendo o array de produtos?
Poderia me dar um exemplo de como ficaria o código corretamente?
Gostei + 0
14/02/2020
Kleber Santos
if ($pass) {
$this->details();
foreach ($this->details() as $nome) {
$product_name = $nome[$id]['product_name'];
}
$this->orderID = $this->lastID;
$sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`, `product_name`) VALUES ";
$cond = [];
foreach ($_SESSION['cart'] as $id=>$qty) {
$sql .= "(?, ?, ?, ?),";
array_push($cond, $this->orderID, $id, $qty, $product_name);
}
$sql = substr($sql, 0, -1) . ";";
$pass = $this->exec($sql, $cond);
}
foreach ($_SESSION['cart'] as $id=>$qty) {
$sql .= "(?, ?, ?, ?),";
array_push($cond, $this->orderID, $id, $qty, $product_name);
}
o loop do foreach está assim:
id qty $product_name
0 qty[0] $product_name[0]
1 qty[1] $product_name[0]
2 qty[2] $product_name[0]
3 qty[3] $product_name[0]
Percebeu que você não está percorrendo o array de produtos?
Poderia me dar um exemplo de como ficaria o código corretamente?
Faça um echo em $this->details() e também em $_SESSION['cart'], e envie aki
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)