- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form particolare - calcolo preventivo
-
Form particolare - calcolo preventivo
Ciao. Il mio terzo post di oggi
Ho trovato guide molto utili per la creazione di form ma nulla che spiegasse la creazione di un form con """calcolatrice""" integrata. Mi spiego meglio con un esempio.
Sul mio sito facciamo che vendo Mele e Pere.
-Mele 3 ? x 1pz
-Pere 1 ? x 1pzIl cliente entra nel sito e si trova davanti un form che calcola il preventivo. Con un menu a cascata seleziona "Mele" o "Pere" e in un altro menu a cascata seleziona la quantità.
Il cliente seleziona "Mele" per una quantità di "5". Il form in un campo risponde il totale facendo il calcolo 3?*5=15?.
In flash lo riesco a fare con più frame sovrapposti ma non riesco in modo testuale (php&html). Mi date una dritta? Come si relizza in codice questo esempio che ho fatto?
Grazie
-
Ciao Kian e benvenuto nel forum GT
Una volta recuperate le variabili
[php]$articolo=$_POST['articolo']; // esempio: Mele
$quantita=$_POST['quantita']; // esempio: 5// tramite query ti ricavi da una tabella il costo unitario di Mele, mettiamo 3
$tot = $valore_unitario * $quantita;
echo $tot; // risultato: 15[/php]
Dovrebbe funzionare
Facci sapere
-
Grazie funziona calcola che è una bellezza
Ora però mi sento in imbarazzo a dirlo ma, essendo questa la mia prima "creazione" di un php (fino ad ora mi sono limitato a modificarli ma mai a crearli dal nulla), non so come procedere
So cosa ci manca
- Tabella con i dati (dove il php da te scritto va a "pescare" i dati per i calcoli)
- Integrazione del php con il form... per farti capire io come un pollo sono andato a mettere dentro 'articolo'
[php]$articolo=$_POST['articolo'][/php]
il form pur sapendo che non serviva a nulla. Mi serve una spinta...
Grazie ancora
-
@Kian said:
So cosa ci manca
- Tabella con i dati (dove il php da te scritto va a "pescare" i dati per i calcoli)
Per questo puoi lavorare in due modi: - un database MySql (Scelta migliore)
- un file di testo (un po laborioso ma se po fa'
@Kian said:
- Integrazione del php con il form... per farti capire io come un pollo sono andato a mettere dentro 'articolo'
[php]$articolo=$_POST['articolo'][/php]
il form pur sapendo che non serviva a nulla. Mi serve una spinta...
Devi mettere come name della tua select name="articolo", con $_POST['articolo'] recuperi il dato inviato dal form e poi procedi secondo script .
Nella stessa pagina poi implementare tranquillamente il codice PHP che recupererà il valore inviato dell'option selezionata
- Tabella con i dati (dove il php da te scritto va a "pescare" i dati per i calcoli)
-
Inizio col dire che mi sento un genio mi piace il php anche se non sono riuscito a concludere niente :bho:
Nel mio delirio di onnipotenza ho fatto questo form con php
[PHP]<form action="mioform.php" method="post" name="fruttivendolo">
<input type="hidden" name="formID" /><label>Scegli il frutto</label>
<select class="other" name="$_POST['articolo']" id="q1" >
<option>Mela</option>
<option>Pera</option>
</select>
<label>Scegli la quantità</label>
<select class="other" name="$_POST['quantita']" id="q2" >
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<input type="submit" class="btn" value="Submit" />
</form>
<?
$articolo=$_POST['articolo'];
$quantita=$_POST['quantita'];
$mela = 3;
$pera = 1;
if ($articolo == 'Mela') {
$tot = $mela * $quantita";
}
echo $tot;
if ($articolo == 'Pera') {
$tot = $pera * $quantita;
}
echo $tot;
?>[/PHP]
In teoria nella mia testa funziona ma in pratica mi daParse error: syntax error, unexpected
illuminatemi quanto ho sbagliato?
-
@Kian said:
Inizio col dire che mi sento un genio mi piace il php anche se non sono riuscito a concludere niente :bho:
Nel mio delirio di onnipotenza ho fatto questo form con php
Bene l'approccio iniziale è giusto
@Kian said:In teoria nella mia testa funziona
In testa funziona sempre....poi con calma si notano le magagne[php]<form action="mioform.php" method="post" name="fruttivendolo">
<input type="hidden" name="formID" /> // a che ti serve??<label>Scegli il frutto</label>
<select class="other" name="articolo" id="articolo"> // avevi letto male ?
<option>Mela</option>
<option>Pera</option>
</select>
<label>Scegli la quantità</label>
<select class="other" name="quantita" id="quantita" >
<option value="1">1</option> // il valore che invierai lo devi assegnare all'attributo value
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<input type="submit" class="btn" value="Submit" />
</form>
<?
$articolo=$_POST['articolo'];
$quantita=$_POST['quantita'];
$mela = 3;
$pera = 1;
if ($articolo == 'Mela') {
$tot = $mela * $quantita;
}
echo $tot;
if ($articolo == 'Pera') {
$tot = $pera * $quantita;
}
echo $tot;
?>[/php]
invece di fare tanti if, puoi usare else if...alla fine fai un unico richiamo a $tot
Poi si puo' anche far in modo che ti figurino ancora selezionate le scelte fatte
-
Samyorn mi hai iniziato al php è una cosa bellissima! Sto creando form che si aggrovigliano tra loro in calcoli Ti ringrazio infinitamente!
Tuttavia la mia sete sta andando oltre... mi spiego: tutti i calcoli vengono effettuali alla pressione del tasto "Submit" e, sempre dopo la sua pressione, viene mostrato il risultato. Se volessi che "echo $tot" si aggiorasse e fosse mostrato in tempo reale come dovrei fare?
Te lo chiedo perchè non ho trovato nessuna guida che nemmeno lo accennasse mentre ho visto form dove viene fatto regolarmente quindi presumo si tratti di una cavolata.
Grazie 1000 per l'aiuto
-
in tempo reale???
due soluzioni:
La prima Ajax;
la seconda meno complessa ma un po' più bruttaRefresh della stessa pagina.Spiego la seconda
basta far sì che ad ogni click sui bottoncini + e - vrei un refresh della stessa pagina passandogli naturalmente i valori... essa si refresherà e ti mostrerà l'evento aggiornato... è una soluzione"sporca" ma efficace
vedi tu...
-
Ancora infinitamente grazie, mi state aprendo le porte di un mondo nuovo
Mi sono tuffato anche in Ajax
Ormai faccio tutto da me provando e riprovando imparando dagli errori però una cosettina ve la devi chiedere. Come interrompo lo svolgimento dello script?
[PHP]<?
if ($articolo == 'Tipo1') {
$tot = $Tipo1 * $quantita;
}
if ($tipo == 'Pubblico') {
$pubblico = 5;
$totale = $tot + $pubblico;
echo $totale;
}else{
echo $tot;
}
?>
<?
if ($articolo == 'Tipo2') {
$tot = $Tipo2 * $quantita;
}
if ($tipo == 'Pubblico') {
$pubblico = 5;
$totale = $tot + $pubblico;
echo $totale;
}else{
echo $tot;
}
?>[/PHP]
Succede che, nonostante nel form sia selezionata solo l'opzione "Tipo1", l'echo mi calcola e visualizza anche il "Titolo2". Ad esempio mi vien fuori 1350 dove il rosso è il risultato di "Titolo1" e il blu di "Titolo2".Non si tratta di interrompere lo script ma di fargli capire che deve calcolare solo la selezione del form.
-
@Kian said:
Ancora infinitamente grazie, mi state aprendo le porte di un mondo nuovo
Ingordo
Comunque si....andando avanti vedrai che il PHP (almeno al sottoscritto è accaduto così) ti spingerà sempre oltre@kian said:
Succede che, nonostante nel form sia selezionata solo l'opzione "Tipo1", l'echo mi calcola e visualizza anche il "Titolo2". Ad esempio mi vien fuori 1350 dove il rosso è il risultato di "Titolo1" e il blu di "Titolo2".
Non si tratta di interrompere lo script ma di fargli capire che deve calcolare solo la selezione del form.
Titolo1 e titolo2 sarebbero "pubblico"?Io noto dallo script che esegui comunque il controllo se $tipo è uguale a Pubblico, dovresti inserirlo dentro l'if di verifica articolo
[php]
<?
if ($articolo == 'Tipo1')
{
$tot = $Tipo1 * $quantita;
if ($tipo == 'Pubblico')
{
$pubblico = 5;
$totale = $tot + $pubblico;
echo $totale;
}
else
{
echo $tot;
}
}
?>[/php]Credo che così dovresti risolvere
-
Ok il mio form è completo anche grazie al vostro aiuto sicuramente ho fatto passaggi in più ma ciò che conta è che funziona. Ho riscontrato un solo problema... più che problema un fastidio. Quando clicco "Calcola" (sarebbe Submit) parte il calcolo e vengono mostrati i risultati ma si cancella il form.
Mi spiego: seleziono 5 mele e calcolo l'importo. Una volta calcolato l'importo le informazioni inserite precedentemente nel form si cancellano. E scomodo perchè non si può ricontrollare quello che si è scelto. Direi questione di cache. Sbaglio? Come faccio a salvare i dati inseriti nel form? Grazie.
[CENTER]--------------------[/CENTER]
[LEFT]Ed ora un domanda più seria. Avete capito che questo form calcola l'importo che un cliente deve pagarmi per un servizio. Adesso come faccio a "dire" a paypal o carta di credito di "prendere" il dato calcolato nel form e farlo pagare al cliente? Anche qui faccio l'esempio.[/LEFT]
[LEFT]Compilazione form > Calcolo importo totale dovuto > Acquista > Si apre paypal o carta di credito con l'importo calcolato nel form già inserito.[/LEFT]
[LEFT]Sapete dirmi qualcosa o dove posso chiedere per una cosa del genere?[/LEFT]
-
@Kian said:
Ok il mio form è completo anche grazie al vostro aiuto sicuramente ho fatto passaggi in più ma ciò che conta è che funziona. Ho riscontrato un solo problema... più che problema un fastidio. Quando clicco "Calcola" (sarebbe Submit) parte il calcolo e vengono mostrati i risultati ma si cancella il form.
Mi spiego: seleziono 5 mele e calcolo l'importo. Una volta calcolato l'importo le informazioni inserite precedentemente nel form si cancellano. E scomodo perchè non si può ricontrollare quello che si è scelto. Direi questione di cache. Sbaglio? Come faccio a salvare i dati inseriti nel form? Grazie.
inserisci un controllo nelle varie option che restituisca selected se il dato inserito corrisponde a quello relativo alla option
EDIT: dimenticavo e assegni value uguale alla quantità inserita che hai trasmessoPer paypal.....non so dirti:bho:
-
Se ho capito bene questo
<option value="0"></option> <option value="Tipo1">Tipo1</option> <option value="Tipo2">Tipo2</option> <option value="Tipo3">Tipo3</option>
Deve diventare
<option selected value="0"></option> <option selected value="Tipo1">Tipo1</option> <option selected value="Tipo2">Tipo2</option> <option selected value="Tipo3">Tipo3</option>
Solo che cosi non funziona :S restituisce come risultato sempre "Tipo3".
Per il fatto di paypall ho trovato il form
<FORM ACTION="paypal" METHOD="POST"> <INPUT TYPE="hidden" NAME="cmd" VALUE="_ext-enter"> <INPUT TYPE="hidden" NAME="redirect_cmd" VALUE="_xclick"> <INPUT TYPE="hidden" NAME="business" VALUE="[email protected]"> <INPUT TYPE="hidden" NAME="undefined_quantity" VALUE="1"> <INPUT TYPE="hidden" NAME="item_name" VALUE="hat"> <INPUT TYPE="hidden" NAME="item_number" VALUE="123"> <INPUT TYPE="hidden" NAME="amount" VALUE=" ***COSTO*** "> <INPUT TYPE="hidden" NAME="shipping" VALUE="1.00"> <INPUT TYPE="hidden" NAME="shipping2" VALUE="0.50"> <INPUT TYPE="hidden" NAME="currency_code" VALUE="USD"> <INPUT TYPE="hidden" NAME="first_name" VALUE="John"> <INPUT TYPE="hidden" NAME="last_name" VALUE="Doe"> <INPUT TYPE="hidden" NAME="address1" VALUE="9 Elm Street"> <INPUT TYPE="hidden" NAME="address2" VALUE="Apt 5"> <INPUT TYPE="hidden" NAME="city" VALUE="Berwyn"> <INPUT TYPE="hidden" NAME="state" VALUE="PA"> <INPUT TYPE="hidden" NAME="zip" VALUE="19312"> <INPUT TYPE="hidden" NAME="lc" VALUE="US"> <INPUT TYPE="hidden" NAME="email" VALUE="[email protected]"> <INPUT TYPE="hidden" NAME="night_phone_a" VALUE="610"> <INPUT TYPE="hidden" NAME="night_phone_b" VALUE="555"> <INPUT TYPE="hidden" NAME="night_phone_c" VALUE="1234"> <INPUT TYPE="image" SRC="paypal logo" BORDER="0" NAME="submit" ALT=Make payments with PayPal - it's fast, free and secure!> </FORM>
Al posto di COSTO devo inserirci il risultato del famoso form che calcola il prezzo. Per dirla brutta e facile dovrebbe essere
<INPUT TYPE="hidden" NAME="amount" VALUE=" <? echo $totale ?> ">
Ma non funziona come faccio a richiamare li dentro la mia variabile?
Grazie ancora, scusate se rompo ma quando non ci posso arrivare nè di mio nè con guide siete la mia ultima speranza
-
No, il mio discorso era diverso, devi fare in modo che quando invii i dati ti "spunti" il selected solo nella option relativa, ovvero:
[php]<?
$tipo=$_POST['articolo'];
?>
<select class="other" name="articolo" id="articolo">
<option selected value="0" <? if ($tipo==0) { echo "selected"; } ?>></option>
<option selected value="Tipo1" <? if ($tipo=="Tipo1") { echo "selected"; } ?>>Tipo1</option>
<option selected value="Tipo2" <? if ($tipo=="Tipo2") { echo "selected"; } ?>>Tipo2</option>
<option selected value="Tipo3" <? if ($tipo=="Tipo3") { echo "selected"; } ?>>Tipo3</option>
........[/php]e lo stesso discorso vale per la quantità