Aggiornamento di una variabile da un form

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno,
la situazione è la seguente:
Ho una pagina generata dinamicamente che riporta un calendario di lezioni, ciascuna con relativo costo di partecipazione, pagabile con un bottone "paga subito" personalizzato di PayPal.
Ora devo aggiungere la possibilità di acquistare la lezione per più persone (attualmente si dava per scontato che ognuno acquistasse per sè).
Ho quindi aggiunto un campo al form del bottone che visualizza una casella modificabile dall'utente (che ha come valore predefinito 1) inmodo da permettere l'inserimento della quantità richiesta dal cliente finale, che cos' acquista (per esempio per sè e la fidanzata) il corso di cucina con un'unica transazione.
La pagina su cui sto lavorando è questa: www.teatro7.com/corsi_test.php, per visualizzare ciò che voglio.
Il codice del form è questo:
PHP:
<tr>
          <td width="15%">Cod. lezione: <strong><? echo $id; ?></strong></td>
          <td align="center"><strong><? echo "$weekday, $giorno"; ?></strong></td>
          <td align="center">&nbsp;</td>
          <td align="right">

            <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
              <b>Quanti posti vuoi prenotare? <input type="text" name="prenotazione" value="<?php echo $prenotazione; ?>" size="3"></b>

              <?php 
              $posti_prenotati = $prenotazione;
              $totale = ($euro * $prenotazione); 
              $dati = '{"id": ' . $id . ',"prenotazione":"' . $posti_prenotati . '"}';

              ?>
       
          </td>
          <td align="center">&nbsp;</td>
          </tr>


        <tr>
          <td>&nbsp;</td>
          <td colspan="2" class="rosso"><? echo $t7invita; ?></td>
          <td align="right">

            
               <input type="hidden" name="cmd" value="_xclick">
               <input type="hidden" name="currency_code" value="EUR" />
               <input type="hidden" name="lc" value="IT" />
               <input type="hidden" name="item_name" value="Corso <?php echo $titolo; ?> a teatro7 | Lab" />
               <input type="hidden" name="amount" value="<?php echo $totale; ?>" />
               <input type="hidden" name="business" value="[email protected]" />
               <input type="hidden" name="custom" value="<? echo $dati; ?>" />
               
                <input class="rosso" type="submit" value="ACQUISTA LA LEZIONE" />
            </form>
          </td>
          <td>&nbsp;</td>
          </tr>
Il codice è distribuito su due righe della tabella che contiene i dati e dopo il campo modificabile dall'utente ho attribuito il valore inserito dall'utente a una nuova variabile $posti_prenotati, poi calcolo il totale della transazione con una semplice moltiplicazione euro * posti prenotati...
Almeno questo è il ragionamento.
Però il valore di $posti_prenotati resta sempre 1 e non si aggiorna dopo che ho scritto il nuovo valore nel form.
Dove sbaglio?
Perchè la variabile non mi si aggiorna?
Grazie
 

otto9due

Utente Attivo
22 Feb 2014
532
21
28
Secondo me dovresti fare una cosa, creare il form ed una seconda pagina a parte contenente una classe che processa i dati e invia i risultati. Non credo che php sia capace di valutare in questo modo ( "live" se così possiamo dire ) il numero indicato dall'utente nel form.

In più vedo anche che quando la pagina viene caricata, il form ha già un value che è "1". Quindi php ha già valorizzato la variabile.

Prima di adottare la soluzione indicata puoi ancora provare a fare una cosa..
Quando crei il form di inserimento lascia il value vuoto da far riempire all'utente oppure gli inserisci una cosa del genere
HTML:
<input type="number" name="points" min="0" max="100" step="1" value="1">

Dove max e min indicano il minimo e il massimo ordinabile.. step sono gli aumenti progressivi che puoi dare ovvero in questo caso una unità per volta e value è il valore di partenza assegnato a value ( che verrà modificato in base alla selezione )..

Per il funzionamento puoi dare un'occhiata qui : http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number_step

Se devi proprio inserire un dato visibile all'interno del campo form usa il placeholder, anche qui eccoti un esempio del suo utilizzo:
http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_placeholder
In questo modo al click il dato scompare e non va a impostare il value ad 1.

Ma credo che anche in questo caso comunque ci vuole una classe o una funzione che processi il tutto e poi spedisca i risultati.


Ecco qui nel tuo codice vedo questo:
PHP:
<b>Quanti posti vuoi prenotare? <input type="text" name="prenotazione" value="<?php echo $prenotazione; ?>" size="3"></b>

Dove value è assegnato.. Perchè?
 
Ultima modifica:

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
beh, avevo impostato value a 1 per evitare che qualcuno cliccasse sul pulsante acquista con un valore di 0... cosa che in effetti potrei fare testando il form con js prima di inviarlo...
Per il resto che mi hai suggerito, provo ad applicarlo e poi ti aggiorno.
Intanto grazie
 

otto9due

Utente Attivo
22 Feb 2014
532
21
28
Ma se usi questo ottieni lo stesso risultato con la variante che il value viene comunque impostato al momento dell'invio dei dati, non toccando nulla rimane sempre 1:

PHP:
<input type="number" name="points" min="0" max="100" step="1" value="1">

Sicuramente un controllo sul campo devi sempre farlo sia sul tipo valore numerico "intero" che sul valore >= 1, che sulla stessa presenza o meno del dato.
Saluti.

G.G.
 
Ultima modifica:

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
ok, con il metodo suggerito non devo pre-impostare a 1 la variabile dei posti prenotati.
Però quando eseguo
PHP:
$totale = ($euro * $posti_prenotati);
evidentemente non esegue nessuna moltiplicazione, visto che sulla pagina di pagamento di PayPal arrivo con un valore = 0.
Per recuperare il valore inserito nel form, faccio così:
PHP:
$posti_prenotati = $_GET['prenotazione'];
$totale = ($euro * $posti_prenotati);
ma credo che non sia giusto, visto il risultato...
E siccome non posso inviare a PayPal una variabile non standard, devo poi utilizzare la variabile "custom" che ho popolato con la riga successiva (devo inviare sia l'id della lezione prenotata che i posti prenotati):
PHP:
$dati = '{"id": ' . $id . ',"prenotazione":"' . $posti_prenotati . '"}';
Come mai non esegue la moltiplicazione?
 

otto9due

Utente Attivo
22 Feb 2014
532
21
28
Il motivo è lo stesso per cui prima ti leggeva il il value come 1, ed è molto semplice, php è un linguaggio server. La soluzione migliore è quella di creare un form che invia i dati ad una seconda pagina, che li processa, ( ricevendo i dati in post, metodo più sicuro ), fa le moltiplicazioni e calcolati tutti i valori invia il tutto.
Quello che cerchi di fare al momento è recuperare il valore di get nella stessa pagina, che peró riassegna a value 1 o in questo caso 0. Teoricamente c'è anche un modo per farlo eseguire nella stessa pagina. E se vuoi te lo indico pure ma non lo condivido e non lo consiglio assolutamente.


Saluti.
G.G.
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Beh si è risolto tutto per il meglio...
Applico il tuo suggerimento per l'inserimento della quantità, con name="quantity" (che è una variabile che posso utilizzare all'interno di un bottone di PayPal) e questo mi evita di dover fare qualunque calcolo - che viene fatto sulla pagina di ingresso di PayPal - e di dover registrare più valori nella variabile "custom".
Quindi così è perfetto:
PHP:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
              <b>Quanti posti vuoi prenotare? <input type="number" name="quantity" min="0" max="100" step="1" value="1" size="3"></b>

       
          </td>
          <td align="center"><?php echo "$posti_prenotati"; ?></td>
          </tr>


        <tr>
          <td>&nbsp;</td>
          <td colspan="2" class="rosso"><? echo $t7invita; ?></td>
          <td align="right">

            
               <input type="hidden" name="cmd" value="_xclick">
               <input type="hidden" name="currency_code" value="EUR" />
               <input type="hidden" name="lc" value="IT" />
               <input type="hidden" name="item_name" value="Corso <?php echo $titolo; ?> a teatro7 | Lab" />
               <input type="hidden" name="amount" value="<?php echo $euro; ?>" />

               <input type="hidden" name="business" value="[email protected]" />
               <input type="hidden" name="custom" value="<? echo $id; ?>" />
               
                <input class="rosso" type="submit" value="ACQUISTA LA LEZIONE" />
            </form>

Grazie per il suggerimento che mi ha schiodato da un loop incasinato di ragionamento...
 
Discussioni simili
Autore Titolo Forum Risposte Data
T Problema con l'aggiornamento di una tabella <Table> PHP 5
EffeElle Problema per una query di aggiornamento record php PHP 35
S Aggiornamento contenuto di un div dopo la creazione di una select dinamica Javascript 0
A Aggiornamento parziale di una pagina Ajax 2
G aggiornamento di una pagina web da smartphone Discussioni Varie 4
A Aggiornamento Windows blocca PC Windows e Software 0
A Tabella con bottoni per aggiornamento record PHP 6
Cosina script data aggiornamento pagina Javascript 1
L non duplicare dati in stato "aggiornamento" PHP 6
S Aggiornamento lista record Database 2
C Aggiornamento automatico da un sito ad un’altro WordPress 0
R aggiornamento valore db in base all'orario PHP 1
strambotto Query di aggiornamento MS Access 0
S [PHP] aggiornamento table tramite select senza ricaricare la pagina PHP 5
A [WordPress] Aggiornamento tema - non apre più il sito WordPress 0
L [Javascript] Drag and drop. Aggiornamento Campo Javascript 2
Max 1 Aggiornamento Windows Windows e Software 1
A [HTML] alternative a Google Maps - aggiornamento condizioni giugno 2018 HTML e CSS 6
Y [PHP] Aggiornamento sito PHP 8
N Cerco sviluppatore ASP per aggiornamento sito e-commerce esistente Offerte e Richieste di Lavoro e/o Collaborazione 0
momeraths [WordPress] cURL error: problema aggiornamento/installazione plugin WordPress 4
D [WordPress] Aggiornamento a php 5.6 causa blackout del sito WordPress 2
alessandroz Select ... where... AND... aggiornamento PHP non funziona PHP 9
M [PHP] Far rimanere biffata checkbox dopo aggiornamento pagina PHP 24
M alert dopo aggiornamento automatico pagina php PHP 4
crealatualista [PHP] Aggiornamento data e ora PHP 2
V [PHP] aggiornamento automatico immagini sito web PHP 3
booklisa Errori wordpress personalizzazione tema post aggiornamento 4.7 CMS (Content Management System) 0
Eugene [PrestaShop v.1.6.1.11] Problemi post aggiornamento CMS (Content Management System) 1
P [PHP] Loop WHILE aggiornamento campi e tabelle. PHP 2
fabryx Aggiornamento automatico periodico dati mySQL PHP 6
M Aggiornamento pagina php con ajax Ajax 2
Monital [Javascript]Barra di aggiornamento in pop pup Javascript 1
S [Javascript] Ultimo aggiornamento Javascript 6
D Creazione, riprogettazione e aggiornamento di siti web Offerte e Richieste di Lavoro e/o Collaborazione 0
E Richiamare funzione Jquery dopo aggiornamento parziale di pagina tramite ajax jQuery 0
P Aggiornamento vecchio sito Webdesign e Grafica 2
PikNuke Query senza aggiornamento pagina Ajax 1
F Aggiornamento variabili php PHP 1
P Problema tasferimento magento su altro server > mostra pagina "negozio in aggiornamento" Magento 0
C Aggiornamento automatico tabella db sql PHP 1
I aggiornamento pagina PHP 4
A Aggiornamento Hardware Hardware 1
P Creazione maschera con aggiornamento automatico MS Access 0
S aggiornamento div con passaggio parametri da href Ajax 8
R [CERCO] Redattori per turni di aggiornamento. Giornale di Napoli Offerte e Richieste di Lavoro e/o Collaborazione 0
T Utilizzo Handler per aggiornamento Seek Bar Sviluppo app per Android 4
S aggiornamento url Javascript 10
R query di aggiornamento tabella PHP 2
D Problemi con form aggiornamento dati PHP 4

Discussioni simili