[Javascript] jQuery PHP MySql - inserire variabile nel DataBase

giumazzi

Utente Attivo
16 Feb 2017
27
2
3
provincia PESARO
In un file jQuery ho questa selezione
Codice:
    click: function () { //Click event
        if (this.status() == 'available') { //optional seat
            var maxSeats = 3;
            var ms = sc.find('selected').length;
            //alert(ms);
            if (ms < maxSeats) {

                price = this.settings.data.price;



        $('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+'</option>')
                    .attr('id', 'cart-item-'+this.settings.id)
                    .attr('value', this.settings.id)
                    .attr('alt', price)
                    .data('seatId', this.settings.id)
                    .appendTo($cart);

                $counter.text(sc.find('selected').length+1);
                $counter.attr('value', sc.find('selected').length+1);

                $total.text(recalculateTotal(sc));
                $total.attr('value', recalculateTotal(sc));

                return 'selected';
            }
                alert('You can only choose '+ maxSeats + ' seats.');
                return 'available';

        } else if (this.status() == 'selected') { //Checked

                //Update Number
                $counter.text(sc.find('selected').length-1);
                $counter.attr('value', sc.find('selected').length-1);

                //Delete reservation
                $('#cart-item-'+this.settings.id).remove();

                //update totalnum
                $total.text(recalculateTotal(sc));
                $total.attr('value', recalculateTotal(sc));

                //Delete reservation
                  //$('#cart-item-'+this.settings.id).remove();
                //optional
                return 'available';

        } else if (this.status() == 'unavailable') { //sold
            return 'unavailable';

        } else {
            return this.style();
        }
    }
});
Per inserire anche il prezzo di ogni singolo posto ho modificato la variabile
$('<option selected>
così
Codice:
$('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+' P'+this.settings.data.price+'</option>')
Graficamente ho quindi questa situazione schermata.png

Tutti i dati della selezione vengono inseriti in un DB con questa pagina PHP
PHP:
<?php
if (isset($_POST['book'])) {
    $date = $_POST["date"];
    $session = $_POST["session"];
    $counter = $_POST["counter"];
    $total = $_POST["total"];
    $user_id = $_SESSION["id"];
    $film_id = $_GET['id'];
    $seat = (isset($_POST['seat']) ? $_POST['seat']:array());
    if (is_array($seat)) {                
        foreach ($seat as $selectedOption){
            $query = "INSERT INTO booking(USER_ID, FILM_ID, BOOKING_SESSION, BOOKING_DATE, BOOKING_SEAT, BOOKING_PRICE, BOOKING_NUM)
                        VALUES ('$user_id','$film_id','$session','$date','$selectedOption','$total','$counter')";

            $result = mysqli_query ($connection,$query)
                or die ("<div class='alert alert-danger' role='alert'>You couldn't execute query</div>");  
            }
        echo "  <div class='alert alert-success' role='success'>
                    Congrats your booking has been done! Print the tickets <a href='./fpdf18/generate-pdf.php?film=$film_id' target='_blank'>here</a>!
                </div>";
    }

}
?>
nella quale manca l'ulteriore campo, che ho creato nel DB, SEAT_PRICE.

Non riesco a capire come inserire il prezzo (che dovrebbe essere in $selectedOption) nel DB.

Ogni aiuto è apprezzato
 
Ciao, manca il value alla option, penso sia per qeullo.
edit
anzi c'è ma inseriscisci l'id non il price
.attr('value', this.settings.id)
 
Penso che pregiudichi il funzionamento del plugin
perché:
1) price è definita come this.setting.data.price
Codice:
price = this.settings.data.price;
2) price non è "value" ma "alt". value è riferita ai posti (es. A_1)
screen2.jpg

Codice:
                    .attr('id', 'cart-item-'+this.settings.id)
                    .attr('value', this.settings.id)
                    .attr('alt', price)
                    .data('seatId', this.settings.id)
                    .appendTo($cart);

Io mastico pochissimo jQuery ma credo sia diverso
 
Ultima modifica:
value è il parametro che ti arriva in post, se vuoi ricevere il price devi metterlo nel value.
Metti nel php var_dump($_POST) e guarda i parametri che arrivano.
$cart dovrebbe essere la select che avra un name il valore che ti aspetti lo trovi in $_POST['nome_della_select']
 
Ho provato a fare i cambiamenti come mi hai suggerito e ottengo questi risultati:
1) Situazione Corrente
Questo è il Dump
Codice:
array(6) { ["session"]=> string(5) "12:00" ["date"]=> string(10) "2016-01-11" ["seat"]=> array(1) { [0]=> string(3) "C_9" } ["counter"]=> string(1) "1" ["total"]=> string(5) "99.95" ["book"]=> string(4) "book" }
Questi i dati
Codice:
                    $('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+' P'+this.settings.data.price+'</option>')
                    .attr('id', 'cart-item-'+this.settings.id + )
                    .attr('value', this.settings.id)
                    .attr('alt', price)
                    .data('seatId', this.settings.id)
                    .appendTo($cart);

2) Situazione Con l'inserimento di price nel value
Questo è il Dump
Codice:
array(6) { ["session"]=> string(5) "12:00" ["date"]=> string(10) "2016-01-11" ["seat"]=> array(1) { [0]=> string(5) "99.95" } ["counter"]=> string(1) "1" ["total"]=> string(5) "99.95" ["book"]=> string(4) "book" }
Questi i dati
Codice:
                    $('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+' P'+this.settings.data.price+'</option>')
                    .attr('id', 'cart-item-'+this.settings.id)
                    .attr('value', this.settings.id)
                    .attr('alt', price)
                    .attr('value', price)
                    .data('seatId', this.settings.id)
                    .appendTo($cart);

Con la modifica mi passa il prezzo ma non più il posto
io però devo passare entrambi:
il posto (es. C_9) e il prezzo (es. 99.95)
 
OK e grazie adesso ci provo.
Solo per ricapitolare nel file js devo fare così?
Codice:
                    $('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+' P'+this.settings.data.price+'</option>')
                    .attr('id', 'cart-item-'+this.settings.id)
                    .attr('value', this.settings.id)
                    .attr('alt', price)
                    .attr('value', price)
                    .data('seatId', this.settings.id)
                    .appendTo($cart);

Oppure così

Codice:
                    $('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+' P'+this.settings.data.price+'</option>')
                    .attr('id', 'cart-item-'+this.settings.id)
                    .attr('value', this.settings.id)
                    .attr('alt', price)
                    .attr('value', this.settings.data.price)
                    .data('seatId', this.settings.id)
                    .appendTo($cart);

alt mi serve perché devo farci le somme
 
se segui il link postato devi fare cosi
Codice:
.attr('value', this.settings.id + "|" + this.settings.data.price)
 

Discussioni simili