Variabili in textbox

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciao a tutti,
ho un problema che non riesco a capire come gestire...
Io ho 3 textbox in tutto.. Sul primo inserisco un numero, e sul secondo anche... Nel terzo invece devo effettuare una formula matematica prendendo i valori degli altri due textbox.. Esempio:

Acquisto - textbox 1
Ricarico - textbox 2
Vendita - textbox 3
Nel terzo la formula sarebbe ((Acquisto * 100)/ Ricarico) ed automaticamente si dovrebbe compilare...
Volevo sapere se è possibile farlo in tempo reale... Nel senso se cambio uno cambia l'altro e via via discorrendo...
è fattibbile?
Grazie.
 
Ciao,
dovrai usare javascript
ti posto un esempio
HTML:
<input type="text" onkeyup="vendita()" name="acq" value="0" id="acq"/>
<input type="text" onkeyup="vendita()" name="ric" value="0" id="ric"/>
<input type="text" readonly value="0" name="ven" id="ven"/>
<script type="text/javascript">
    function vendita() {
        var acq = document.getElementById('acq').value;
        var ric = document.getElementById('ric').value;
        var ven = parseInt((acq * 100) / ric);
        document.getElementById('ven').value = ven;
    }
</script>
è solo un inizio, bisogna aggiungere un controllo sui caratteri digitati, prevedere se ti servono i decimali e ottimizzarlo
al massimo ti spostiamo in javascript
 
innanzitutto grazie per la risposta... Purtroppo di java so quasi zero... e per me è arabo.. I controlli posso farli in php? nel senso stringa vuota,lettere, etc? è molto difficile come operazione da fare?
 
ciao
i controlli, se poi i dati del form es. devi inseririli in un db o inviarli per email, "devono" essere fatti anche in php in quanto i controlli in js possono essere aggirati.

p.s.
il controllo principale che devi fare in questo caso è che il campo ric sia diverso da 0 altrimenti la divisione ti manda in pallino lo script
io metterei
HTML:
<input type="text" onkeyup="vendita()" name="ric" value="1" id="ric"/>
 
Come ti è stato detto, per compilare automaticamente il form, devi usare il javascript (che ti consiglio di imparare, data la grande diffusione): quello che chiedi te, ossia la compilazione automatica utilizzando il PHP, non è fattibile (o meglio, è fattibile, ma rendendo il tutto molto lento e comunque coinvolgendo un poco di javascript), in quanto c'è una differenza fondamentale fra i due linguaggi citati: il PHP gira sul server (ciò vuol dire che, quando richiedi una pagina php, il server esegue lo script e ti invia l'output) mentre il javascript gira sul client (ossia il server ti invia direttamente lo script, sarà quindi compito del browser di eseguire tale script).
Una volta compilate le prime due textbox, con poche righe di javascript (come mostratoti) puoi riempire immediatamente anche la terza (questo perchè è il browser a fare il tutto).
Se vuoi un consiglio, studia un po di javascript e vedrai quante cose belle si possono fare con questo :)
Ovviamente, poi, esegui i controlli sui valori immessi anche in PHP, perchè, come ti è già stato detto, quelli fatti in javascript sono facilmente bypassabili... Cosa che, purtroppo, non è chiara a molti programmatori (e non solo in casi banali come l'inserire nel database un numero sbagliato, ma anche in casi in cui vengono lasciate falle enormi per queste stupidaggini).
 
e se io facessi un tasto con scritto calcola(submit) che se non lo clicchi non puoi salvare? tutto in php chiaramente... che dite?
 
ciao
un es di controllo, ammesso che i campi di input siano in un form che punta alla pag calcola.php
calcola.php
PHP:
<?php
//...
$acq=$_POST['acq'];
$ric=$_POST['ric'];
if($acq =="" || $acq <= 0){
	echo "il prezzo di acquiso non puo essere vuoto o minore uguale a zero";
	//e qui il ritorno automatico al form
	exit();
}
if($ric =="" || $ric <= 0){
	echo "il ricarico non puo essere vuoto o minore uguale a zero";
	//e qui il ritorno automatico al form
	exit();
}
$calcola=$acq*100/$ric;
echo "prezzo finale: $calcola";
//....
?>
non ti serve un pulsante in più, ma il semplice submit
 
si mi serve in piu perche vorrei che l'utente si calcolasse il prezzo e una volta effettuato il calcolo appaia sotto il SALVA. Una volta premuto salva inserire i campi delle textbox nel DB. è Fattibile??
 
ciao
prova questo (è come sopra) e vedrai che se uno non fa tutto giusto non può procedere
PHP:
<?php
if(isset($_POST['calcola'])){
	$acq=$_POST['acq'];
	$ric=$_POST['ric'];
	$errore="";//questi controlli se uno riesce a bypassare il js
	if($acq =="" || $acq <= 0 || is_nan($acq)){
    	$errore.= "il prezzo di acquiso non puo essere vuoto o minore uguale a zero";
	}
	if($ric =="" || $ric <= 0 || is_nan($ric)){
    	$errore.= "il ricarico non puo essere vuoto o minore uguale a zero";
	}
	if($errore==""){
		$calcola=$acq*100/$ric;
		echo "prezzo finale: $calcola<br />";//qui al posto dell'echo metti l'insert per salvare
	}else{
		echo $errore;
		echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}
}
?> 
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<input type="text" onkeyup="vendita()" name="acq" value="1" id="acq"/><br />
<input type="text" onkeyup="vendita()" name="ric" value="1" id="ric"/><br />
<input type="text" readonly value="0" name="ven" id="ven"/><br />
<input name="calcola" type="submit" id="calcola" value="calcola">
</form>
<script type="text/javascript">
    function vendita() {
        var acq = document.getElementById('acq').value;
        var ric = document.getElementById('ric').value;
		if(acq <= 0  ||  ric <= 0 ){
			alert('numeri non validi');
		}else{
        	var ven = parseInt((acq * 100) / ric);
        	document.getElementById('ven').value = ven;
		}
    }
</script>
 
ciau,
ho testato lo script che mi hai passato.. è perfetto e fa quello che mi occorre solo che mancano due accorgimenti... Il primo se io cancello tutto parte una serie infinita di alert... e per stoppare devo riuscire ad inserire un numero qualsiasi...L'latro è che ho bisogno anche di almeno 2 o 3 decimali dopo la virgola nei prezzi... Come risolvo? Inoltre come faccio a mandare tutti i dati ricavati in un Database?
Grazie ancora per l'aiuto e la pazienza....
 
ciao
cosa intendi con
Il primo se io cancello tutto parte una serie infinita di alert...
?
poi cosa vuoi salvare? secondo me ti manca la parte relativa all'utente. non credo che abbia senso salvare dei numeri se poi non sai a chi attribuirli

edit
per sicurezza ho riprovato lo script e gli alert parto solo (giustamente) se non insrisci un numero melle due caselle
 
Ultima modifica:
no se io cancello facendo backspace non mi da il tempo di scrivere... partono subito gli alert... Inoltre questa parte, è la aprte finale di uno script di inserimento di un articolo in magazzino..
 
ciao
si, se cancelli parte l'alert, ma se premi su ok ti fa inserire il numero, comunque forse per rfacilitare le cose bisogna modificsare il js, guardo meglio e ti so dire
 
infatti.. inoltre volevo sapere è possibile fare in modo che ci siano i numeri dopo la virgola approssimati per eccesso? parlo del campo vendita chiaramente :)
 
ok.. dò uno sguardo.. ma ora vorrei sistemare la cosa sopra che è piu impo... Inoltre, visto che ci stò... ma si può prendere un database MDF e trasformarlo in SQL?
 
Son riuscito a trasformare il database da mdb a mysql... Ora devo capire come fare in modo di spostare determinati record su un altra tabella... (prima la devo copiare tutta)
Tornando al discorso iniziale... Sei riuscito a far in modo che non avvengano gli alert se cancelli l'intera riga? mi ci sto scervellando...
 

Discussioni simili