У меня есть php для каждого цикла, который выводит форму для каждого продукта в моей базе данных.
Мне нужна помощь с этим битом jquery
<script type="text/javascript">
// When the document is ready
$(function() {
$('#foo').change(function() {
var form = $(this).parents('form');
// Size is whatever the value the user has selected
var size = $(this).val();
var price,
itemId;
// Determine the correct price and item ID based on the selected size
switch (size) {
<?php
$var = 1;
foreach($subitem['sizes'] as $size) {
echo "\n";
echo "\t\t\t\t\t\tcase '".$size."':\n";
echo "\t\t\t\t\t\t\tprice = '".$subitem['price']."';\n";
echo "\t\t\t\t\t\t\titemId = '".$subitem['prodid']."-".$var."';\n";
echo "\t\t\t\t\t\t\tbreak;\n\n";
$var++;
}
echo "\t\t\t\t\t}";
?>
form.find('.price').text(price);
form.find('[name=my-item-price]').val(price);
// Update the item ID
form.find('[name=my-item-id]').val(itemId);
});
});
</script>
Это выводв то же время, как форма и по существу является частью формы.Что он делает, когда пользователь выбирает опцию из списка выбора, он изменяет скрытый элемент формы, содержащий цену.
Что мне нужно сделать, это вместо жесткого кодирования цен, взять цены избаза данных.
Поскольку он просматривает 4 записи для заполнения списка выбора, невозможно просто отобразить цену в операторе switch.Я думал о том, чтобы иметь некоторые глобальные переменные, которые заполняются ценой из базы данных, а затем просто использовать эту глобальную переменную в операторе switch
Я думал, что мог бы инициализировать глобальные переменные здесь
//Create field for item name based upon record count
if(count($subitem['sizes']) > 1)
{
Мой код с php и jquery
foreach($items AS $subitem)
{
list($prodid, $item ,$size, $description, $price) = $subitem;
//Create field for item name based upon record count
if(count($subitem['sizes']) > 1)
{
$item_name_field = "<ul><li><select name=\"my-item-name\" id=\"foo\">\n";
foreach($subitem['sizes'] as $size)
{
$item_name_field .= "<option value=\"{$size}\">{$size}</option>\n";
}
$item_name_field .= "</select></li></ul>\n";
}
else
{
$item_name_field = "<input type=\"hidden\" name=\"my-item-name\" value=\"{$subitem['item']}\" />";
}
//Creat the form
if ($count % NUMCOLS == 0) { echo "<tr>"; } //new row
echo "<td>\n";
echo "<form method=\"post\" action=\"\" class=\"jcart\">\n";
echo " <fieldset>\n";
echo " <input type=\"hidden\" name=\"jcartToken\" value=\"{$_SESSION['jcartToken']}\" />\n";
echo " <input type=\"hidden\" name=\"my-item-id\" value=\"{$subitem['prodid']}\" />\n";
echo " <input type=\"hidden\" name=\"my-item-price\" value=\"{$subitem['price']}\" />\n";
echo " <input type=\"hidden\" name=\"my-item-url\" value=\"http://yahoo.com\" />\n";
echo " {$item_name_field}\n";
echo " <ul>\n";
echo " <li>Price: $<span class=\"price\">{$subitem['price']}</span></li>\n";
echo " <li><label>Qty: <input type=\"text\" name=\"my-item-qty\" value=\"1\" size=\"3\" /></label></li>\n";
echo " </ul>\n";
echo " <input type=\"submit\" name=\"my-add-button\" value=\"add to cart\" class=\"button\" />\n";
echo " </fieldset>\n";
echo "</form>\n";
echo "</td>\n";
?>
<script type="text/javascript">
// When the document is ready
$(function() {
$('#foo').change(function() {
var form = $(this).parents('form');
// Size is whatever the value the user has selected
var size = $(this).val();
var price,
itemId;
// Determine the correct price and item ID based on the selected size
switch (size) {
case 'Small':
price = '10.00';
itemId = '1-a';
break;
case 'Medium':
price = '20.00';
itemId = '1-b';
break;
case 'Large':
price = '30.00';
itemId = '1-c';
break;
case 'X-Large':
price = '30.00';
itemId = '1-c';
break;
}
form.find('.price').text(price);
form.find('[name=my-item-price]').val(price);
// Update the item ID
form.find('[name=my-item-id]').val(itemId);
});
});
</script>
<?php
$count++;
if ($count % NUMCOLS == 0) { echo "</tr>\n"; } # end row
//$counter++; //Doesn't appear this is used
}
РЕДАКТИРОВАТЬ:
Мне удалось заставить его работать, вроде как, но цены все одинаковые.
Что мне нужно сделать, так это назначить цену каждого размера размеру.
<script type="text/javascript">
// When the document is ready
$(function() {
$('#foo').change(function() {
var form = $(this).parents('form');
// Size is whatever the value the user has selected
var size = $(this).val();
var price,
itemId;
// Determine the correct price and item ID based on the selected size
switch (size) {
<?php
$var = 1;
foreach($subitem['sizes'] as $size) {
echo "\n";
echo "\t\t\t\t\t\tcase '".$size."':\n";
echo "\t\t\t\t\t\t\tprice = '".$subitem['price']."';\n";
echo "\t\t\t\t\t\t\titemId = '".$subitem['prodid']."-".$var."';\n";
echo "\t\t\t\t\t\t\tbreak;\n\n";
$var++;
}
echo "\t\t\t\t\t}";
?>
form.find('.price').text(price);
form.find('[name=my-item-price]').val(price);
// Update the item ID
form.find('[name=my-item-id]').val(itemId);
});
});
</script>