Jamdev
Jamdev

Reputation: 552

Button gets an incorrect PHP value by default via javascript

I have the following selector with options:

<select name="" id="product-selector" class="list_item">
    <?php

    if( have_rows('section_a') ):
    while( have_rows('section_a') ): the_row();
    if( have_rows('product_item') ):
    while( have_rows('product_item') ): the_row();

    $product_item_quantity = get_sub_field('product_item_quantity');
    $product_item_price = get_sub_field('product_item_price');
    $product_item_id = get_sub_field('product_item_id');
    $product_item_variation_id = get_sub_field('product_item_variation_id');
        ?>
        <option value="<?php echo $product_item_variation_id; ?>" data-id="<?php echo $product_item_variation_id; ?>" data-content="<?php echo $product_item_quantity; ?> <span class='price' data-count='<?php echo $product_item_quantity; ?>' data-price='<?php echo $product_item_price; ?>'><?php echo $product_item_price; ?>"> </option>
    <?php endwhile; endif; endwhile; endif; ?>
</select>

And I have the following button:

<div class="submit">
<a class="btn btn-warning" id="purchase" href="?add-to-cart=<?php echo $product_item_id; ?>&variation_id=<?php echo $product_item_variation_id; ?>">Order Now</a>
</div>

My javascript is:

<script>
document.getElementById("product-selector").onchange = function() {
    document.getElementById("purchase").href = "?add-to-cart="+"<?php echo $product_item_id; ?>"+"&"+"variation_id="+this.value+"/";
}
</script>

When user click by the Order button the link changes dynamically - it gets the value of and should get the <?php echo $product_item_variation_id; ?>" via the "variation_id="+this.value+" and it works fine, but when the page loads, the <?php echo $product_item_variation_id; ?> value of the button get the LAST option value, but not a first (default) one.

Much appreciate any help.

Upvotes: 0

Views: 34

Answers (1)

user11133653
user11133653

Reputation:

I think that you should make a variable to save the first value. Because you already loop. so default value is last value of the select.

<?php $product_item_variation_id_first = ""; ?>
<select name="" id="product-selector" class="list_item">
    <?php

    if( have_rows('section_a') ):
    while( have_rows('section_a') ): the_row();
    if( have_rows('product_item') ):
    while( have_rows('product_item') ): the_row();

    $product_item_quantity = get_sub_field('product_item_quantity');
    $product_item_price = get_sub_field('product_item_price');
    $product_item_id = get_sub_field('product_item_id');
    $product_item_variation_id = get_sub_field('product_item_variation_id');
    if ($product_item_variation_id_first == "")
        $product_item_variation_id_first = $product_item_variation_id;
        ?>
        <option value="<?php echo $product_item_variation_id; ?>" data-id="<?php echo $product_item_variation_id; ?>" data-content="<?php echo $product_item_quantity; ?> <span class='price' data-count='<?php echo $product_item_quantity; ?>' data-price='<?php echo $product_item_price; ?>'><?php echo $product_item_price; ?>"> </option>
    <?php endwhile; endif; endwhile; endif; ?>
</select>

<div class="submit">
<a class="btn btn-warning" id="purchase" href="?add-to-cart=<?php echo $product_item_id; ?>&variation_id=<?php echo $product_item_variation_id_first; ?>">Order Now</a>
</div>

Upvotes: 1

Related Questions