écriture de deux tables SQL vers une seule
scarfesse
Messages postés
16
Statut
Membre
-
scarfesse Messages postés 16 Statut Membre -
scarfesse Messages postés 16 Statut Membre -
Bonjour tout le monde,
JE suis en train de réaliser un site de e-commerce, et je souhaite valider le panier du client en prenant des infos d'une première table qui contient les données sur les produits commandées,et des infos de la table du panier du client bien entendu. et là je roule dans du beurre!
Le problème est que j'essaie, après avoir rempli "$row_basket" d'inserer ces données en les récurérant avec une fonction "getsqlvaluestring".
Le code donne ça:
mysql_select_db($database_shop, $shop);
$query_basket = sprintf("SELECT shop_basket.id,
shop_basket.client,
shop_basket.article,
shop_basket.Quantity,
shop_products.price_ht,
shop_products.price_ttc,
shop_products.price_ht*shop_basket.Quantity AS total_ht,
shop_products.price_ttc*shop_basket.Quantity AS total_ttc
FROM shop_basket
INNER JOIN shop_products
ON shop_basket.article=shop_products.id
WHERE shop_basket.client = '".$_SESSION['MM_Username']."'");
$basket = mysql_query($query_basket, $shop) or die(mysql_error());
$row_basket = mysql_fetch_assoc($basket);
$totalRows_basket = mysql_num_rows($basket);
$compteur = 0;
while ($row_basket = mysql_fetch_assoc($basket) and $compteur < $totalRows_basket)
{
$query_line_order = sprintf("INSERT INTO shop_line_order (order, article, price_ht, price_ttc, Quantity, total_ht, total_ttc) VALUES (%s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($row_order['id'], "int"),
GetSQLValueString($row_basket['article'], "int"),
GetSQLValueString($row_basket['price_ht'], "double"),
GetSQLValueString($row_basket['price_ttc'], "double"),
GetSQLValueString($row_basket['Quantity'], "int"),
GetSQLValueString($row_basket['total_ht'], "double"),
GetSQLValueString($row_basket['total_ttc'], "double"));
mysql_select_db($database_shop, $shop);
$Result1 = mysql_query($query_line_order, $shop) or die(mysql_error());
$query_suppr_basket = sprintf("DELETE FROM shop_basket WHERE id=%s",
GetSQLValueString($row_basket['id'], "int"));
mysql_select_db($database_shop, $shop);
$Result1 = mysql_query($query_suppr_basket, $shop) or die(mysql_error());
$compteur = $compteur + 1;}
}
Ensuite j'efface la table du panier.
J'ai fait une boucle afin de faire cette opération pour toutes les références présentes dans le panier.
Durant les tests, j'ai une erreur de syntax sql au niveau de la fonction getSQLValueString.
Pour info le code la fonction est:
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
Si quelqu'un trouve une faille dans le code ou a une idée pour faire la même opération mais avec une procédure différente, je suis preneur!
Merci.
JE suis en train de réaliser un site de e-commerce, et je souhaite valider le panier du client en prenant des infos d'une première table qui contient les données sur les produits commandées,et des infos de la table du panier du client bien entendu. et là je roule dans du beurre!
Le problème est que j'essaie, après avoir rempli "$row_basket" d'inserer ces données en les récurérant avec une fonction "getsqlvaluestring".
Le code donne ça:
mysql_select_db($database_shop, $shop);
$query_basket = sprintf("SELECT shop_basket.id,
shop_basket.client,
shop_basket.article,
shop_basket.Quantity,
shop_products.price_ht,
shop_products.price_ttc,
shop_products.price_ht*shop_basket.Quantity AS total_ht,
shop_products.price_ttc*shop_basket.Quantity AS total_ttc
FROM shop_basket
INNER JOIN shop_products
ON shop_basket.article=shop_products.id
WHERE shop_basket.client = '".$_SESSION['MM_Username']."'");
$basket = mysql_query($query_basket, $shop) or die(mysql_error());
$row_basket = mysql_fetch_assoc($basket);
$totalRows_basket = mysql_num_rows($basket);
$compteur = 0;
while ($row_basket = mysql_fetch_assoc($basket) and $compteur < $totalRows_basket)
{
$query_line_order = sprintf("INSERT INTO shop_line_order (order, article, price_ht, price_ttc, Quantity, total_ht, total_ttc) VALUES (%s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($row_order['id'], "int"),
GetSQLValueString($row_basket['article'], "int"),
GetSQLValueString($row_basket['price_ht'], "double"),
GetSQLValueString($row_basket['price_ttc'], "double"),
GetSQLValueString($row_basket['Quantity'], "int"),
GetSQLValueString($row_basket['total_ht'], "double"),
GetSQLValueString($row_basket['total_ttc'], "double"));
mysql_select_db($database_shop, $shop);
$Result1 = mysql_query($query_line_order, $shop) or die(mysql_error());
$query_suppr_basket = sprintf("DELETE FROM shop_basket WHERE id=%s",
GetSQLValueString($row_basket['id'], "int"));
mysql_select_db($database_shop, $shop);
$Result1 = mysql_query($query_suppr_basket, $shop) or die(mysql_error());
$compteur = $compteur + 1;}
}
Ensuite j'efface la table du panier.
J'ai fait une boucle afin de faire cette opération pour toutes les références présentes dans le panier.
Durant les tests, j'ai une erreur de syntax sql au niveau de la fonction getSQLValueString.
Pour info le code la fonction est:
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
Si quelqu'un trouve une faille dans le code ou a une idée pour faire la même opération mais avec une procédure différente, je suis preneur!
Merci.
A voir également:
- écriture de deux tables SQL vers une seule
- Écriture facebook - Guide
- Nombre de jours entre deux dates excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Ecriture en gras - Guide
- Comment faire deux colonnes sur word - Guide