Bonjour,
Voila je rencontre un petit problème avec mon code.
Décrivez ici votre code ou ce que vous cherchez à faire
Je cherche à faire un systeme de commande mais pas d'achat, il n'y aura pas de transaction financiere
J'ai mon système qui marche sauf sur le bouton ajouter qui me rajoute que le premier produit issu de la bdd
Je pense que le problème vien peut etre du js de la fonction ajouter avec l'id du bouton +
<?php
$req = $bdd->prepare('SELECT * FROM produits WHERE id_commerce = ?');
$req->execute(array($_GET['id']));
while ($donnees = $req->fetch())
{
?>
<tr>
<td>
<h5><?php echo htmlspecialchars(ucfirst(strtolower($donnees['titre_produit']))); ?></label><input type = "hidden" value="<?php echo $donnees['id_produit'];?>" id= "id"></input></h5>
<p><?php echo htmlspecialchars(ucfirst(strtolower($donnees['texte_produit']))); ?></p>
</td>
<td><strong><input type = "text" value="<?php echo $donnees['prix_produit'];?>" id= "prix"></input></strong></td>
<td><strong><input type = "number" id = "qte" class="input-sm form-control"></input></strong></td>
<td class="options">
<a onclick="ajouter()"><i class="icon_plus_alt2"></i></a><!-- Ajout + -->
</td>
</tr>
<?php } $req->closeCursor();?>
// on afffiche les produits
<table id="tableau" class="table">
<thead>
<tr>
<th>Produit</th>
<th>Qte</th>
<th>Prix unitaire</th>
<th>Prix de la ligne</th>
<th>Supprimer</th>
</tr>
</thead>
</table>
Coté js:
<script type="text/javascript">
function ajouter()
{
var code = parseInt(document.getElementById("id").value);
var qte = parseInt(document.getElementById("qte").value);
var prix = parseInt(document.getElementById("prix").value);
var monPanier = new Panier();
monPanier.ajouterArticle(code, qte, prix);
var tableau = document.getElementById("tableau");
var longueurTab = parseInt(document.getElementById("nbreLignes").innerHTML);
if (longueurTab > 0)
{
for(var i = longueurTab ; i > 0 ; i--)
{
monPanier.ajouterArticle(parseInt(tableau.rows[i].cells[0].innerHTML), parseInt(tableau.rows[i].cells[1].innerHTML), parseInt(tableau.rows[i].cells[2].innerHTML));
tableau.deleteRow(i);
}
}
var longueur = monPanier.liste.length;
for(var i = 0 ; i < longueur ; i++)
{
var ligne = monPanier.liste[i];
var ligneTableau = tableau.insertRow(-1);
var colonne1 = ligneTableau.insertCell(0);
colonne1.innerHTML += ligne.getCode();
var colonne2 = ligneTableau.insertCell(1);
colonne2.innerHTML += ligne.qteArticle;
var colonne3 = ligneTableau.insertCell(2);
colonne3.innerHTML += ligne.prixArticle;
var colonne4 = ligneTableau.insertCell(3);
colonne4.innerHTML += ligne.getPrixLigne();
var colonne5 = ligneTableau.insertCell(4);
colonne5.innerHTML += "<button class=\"btn btn-primary\" type=\"submit\" onclick=\"supprimer(this.parentNode.parentNode.cells[0].innerHTML)\"><span class=\"glyphicon glyphicon-remove\"></span> Retirer</button>";
}
document.getElementById("prixTotal").innerHTML = monPanier.getPrixPanier();
document.getElementById("nbreLignes").innerHTML = longueur;
}
function supprimer(code)
{
var monPanier = new Panier();
var tableau = document.getElementById("tableau");
var longueurTab = parseInt(document.getElementById("nbreLignes").innerHTML);
if (longueurTab > 0)
{
for(var i = longueurTab ; i > 0 ; i--)
{
monPanier.ajouterArticle(parseInt(tableau.rows[i].cells[0].innerHTML), parseInt(tableau.rows[i].cells[1].innerHTML), parseInt(tableau.rows[i].cells[2].innerHTML));
tableau.deleteRow(i);
}
}
monPanier.supprimerArticle(code);
var longueur = monPanier.liste.length;
for(var i = 0 ; i < longueur ; i++)
{
var ligne = monPanier.liste[i];
var ligneTableau = tableau.insertRow(-1);
var colonne1 = ligneTableau.insertCell(0);
colonne1.innerHTML += ligne.getCode();
var colonne2 = ligneTableau.insertCell(1);
colonne2.innerHTML += ligne.qteArticle;
var colonne3 = ligneTableau.insertCell(2);
colonne3.innerHTML += ligne.prixArticle;
var colonne4 = ligneTableau.insertCell(3);
colonne4.innerHTML += ligne.getPrixLigne();
var colonne5 = ligneTableau.insertCell(4);
colonne5.innerHTML += "<button class=\"btn btn-primary\" type=\"submit\" onclick=\"supprimer(this.parentNode.parentNode.cells[0].innerHTML)\"><span class=\"glyphicon glyphicon-remove\"></span> Retirer</button>";
}
document.getElementById("prixTotal").innerHTML = monPanier.getPrixPanier();
document.getElementById("nbreLignes").innerHTML = longueur;
}
</script>
<script type="text/javascript">
function LignePanier (code, qte, prix)
{
this.codeArticle = code;
this.qteArticle = qte;
this.prixArticle = prix;
this.ajouterQte = function(qte)
{
this.qteArticle += qte;
}
this.getPrixLigne = function()
{
var resultat = this.prixArticle * this.qteArticle;
return resultat;
}
this.getCode = function()
{
return this.codeArticle;
}
}
</script>
<script type="text/javascript">
function Panier()
{
this.liste = [];
this.ajouterArticle = function(code, qte, prix)
{
var index = this.getArticle(code);
if (index == -1) this.liste.push(new LignePanier(code, qte, prix));
else this.liste[index].ajouterQte(qte);
}
this.getPrixPanier = function()
{
var total = 0;
for(var i = 0 ; i < this.liste.length ; i++)
total += this.liste[i].getPrixLigne();
return total;
}
this.getArticle = function(code)
{
for(var i = 0 ; i <this.liste.length ; i++)
if (code == this.liste[i].getCode()) return i;
return -1;
}
this.supprimerArticle = function(code)
{
var index = this.getArticle(code);
if (index > -1) this.liste.splice(index, 1);
}
}
</script>
J'ai ma boucle qui affiche du coup la liste de produits maintenant j'aimerais faire en sorte que le bouton + permet d'ajouter les produits selon leur id
Actuellement le code s'afffiche bien mais le bouton + ajoute seulement le premier produit...