Doppio form con calcolo variabili

  • 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 credo sia banale ma è da stamane che ci sto dietro, mi scoppia la testa e non capisco dove sta l'errore...
Io ho una pagina in cui inserisco X articoli, i quali hanno ognuno un prezzo... Il tasto Subtotale dovrebbe fare in modo che, letto il valore del prezzo, controlla se ci sono eventuali sconti, li applica e sputi il risultato dentro un box... Sulla carta funziona... ma nella realtà mi si pianta mettendoci un casino...
Credo che il doppio form sia strutturato bene, i controlli sui valori li applico...
Questo è il form:
HTML:
<form method="post" name="read"> 
<p align="left"><a href="#" id="aggiungi">Aggiungi riga</a></p>
<div id="campi">
<div class="campo" style="display: none;">
<input type="text" placeholder="Barcode" name="barcode[]" id="clientID" size="15">
<input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="30">
<input type="text" placeholder="Quantità" name="campo[]" id="quantita" size="5">
<input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5">
<input type="text" placeholder="Sconto %" name="scontoperc[]" id="scontoperc" size="5">
<input type="text" placeholder="Sconto VAL" name="scontoval[]" id="scontoval" size="7">
<input type="text" placeholder="Prezzo Scontato" name="prezzosconto[]" id="prezzosconto" size="12" value="<?php echo $prezzosconto; ?> ">
<input name="read" type="submit" id="read" value="Transazione" onclick="this.form.action = 'read_dtt.php';">
<input type="submit"
value="Subtotale" class="subtotale" name="subtotale" onclick="this.form.action=' . htmlspecialchars($_SERVER['PHP_SELF']) . '">

Questa invece è la parte PHP:

PHP:
if(isset($_POST['subtotale'])){
$barcode=$_POST[barcode];
$prezzosconto=$_POST[prezzosconto];
$prezzo=$_POST[prezzo];
$scontoperc=$_POST[scontoperc];
$scontoval=$_POST[scontoval];
if($scontoperc==null && $scontoval==null){
	$scontoperc=0;
	$scontoval=0;
	} elseif($scontoperc==null){
		 $conta2 = count($barcode);
           for($c=0;$c<$conta2;$c++){
		   $scontoperc=0;
		   $sprezzosconto=($prezzo-$scontoval);
		                            }
	}elseif($scontoval==null){
		$conta3 = count($barcode);
           for($d=0;$d<$conta3;$d++){
		   $scontoval=0;
		   $percentuale=(($prezzo*$scontoperc)/100);
		   $prezzosconto=($prezzo-$percentuale);
		                             }
		                     }
}
	if($scontoperc==null)
	{ $scontoperc=0;}
	if($scontoval==null)
	{ $scontoval=0;}
	    if($prezzosconto==null){ 
	    $prezzosconto=0;
	    $somma=0;
        $conta1 = count($barcode);
           for($b=0;$b<$conta1;$b++){
	       $somma=($prezzo[$b]+$somma);
	       }
	                             } else {
                                        $somma=0;
										$conta= count($barcode);
										for($a=0;$b<$conta;$a++){
										$somma=($prezzosconto[$a]+$somma);
										}
										}

Chiaramente la variabile $somma è inserita nel box Totale che non ho messo...

Dove sbaglio?? A me sembra tutto ok... Bho...
 
ci mette un eternità a rispondermi... ed inoltre alla fine mi da errore caricamento pagina...
 
facendo otto milioni di prove sono arrivato ad un risultato che in se per se va bene, ma che io devo estenderlo all'array di dati... il quale non si sa da quanti valori è composto...(Anche se cmq per ora il max è 7 e il minimo è 1)
Questa pagina, non fa altro che creare una form brevissima con 5 campi indispensabili...
La quantita, il prezzo, i valori dis conto in percentuale o in valore numerico e l'eventuale prezzo finale scontato...
PHP:
<?php
if(isset($_POST['subtotale'])){
$prezzosconto=$_POST[prezzosconto];
$prezzo=$_POST[prezzo];
$scontoperc=$_POST[scontoperc];
$scontoval=$_POST[scontoval];
$quantita=$_POST[quantita];
if($quantita == null){  
$quantita=1;
}
if($scontoperc == null && $scontoval == null){
	$scontoperc=0;
	$scontoval=0;
	$prezzosconto=$prezzo*$quantita;
	                                     }
if($scontoperc == null){
$scontoperc=0;
$prezzosconto = (($prezzo*$quantita) - $scontoval);
                      }elseif($scontoval == null){
		                      $scontoval=0;
		                      $percentuale=(($prezzo*$scontoperc)/100);
		                      $prezzosconto = ($prezzo - $percentuale) ;
							  $prezzosconto = ($prezzosconto * $quantita);
		                                        }

}
?> 
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<input type="text" placeholder="Quantita" name="quantita" id="quantita" size="10" value="<?php echo $quantita; ?> ">
<input type="text" placeholder="Prezzo" name="prezzo" id="prezzo" size="10" value="<?php echo $prezzo; ?> ">
<input type="text" placeholder="Sc %" name="scontoperc" id="scontoperc" size="5" value="<?php echo $scontoperc; ?>" >
<input type="text" placeholder="Sc VAL" name="scontoval" id="scontoval" size="10" value="<?php echo $scontoval; ?>" >
<input type="text" placeholder="P.Scontato" name="prezzosconto" id="prezzosconto" size="10" value="<?php echo $prezzosconto; ?> "><br />
<input type="submit" value="Subtotale" name="subtotale"><br> 
<?php echo' La quantita è:' . $quantita . ''; ?>
</form>

Ora qui sorgono due problemi.. Il primo è che non so perchè in sconto % e sconto VAL funziona il placeholder mentre per gli altri no...
Il secondo è che non riesco ad iterarlo per X volte...

Ho provato mettendo il form cosi:

HTML:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<input type="text" placeholder="Quantita" name="quantita[]" id="quantita" size="10" value="<?php echo $quantita[$a]; ?> ">
<input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="10" value="<?php echo $prezzo[$a]; ?> ">
<input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="5" value="<?php echo $scontoperc[$a]; ?>" >
<input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="10" value="<?php echo $scontoval[$a]; ?>" >
<input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="10" value="<?php echo $prezzosconto[$a]; ?> "><br />
<input type="submit" value="Subtotale" name="subtotale"><br> 
<?php echo' La quantita è:' . $quantita[$a] . ''; ?>
</form>

E il codice php per l'iterazione ho usato il seguente :

PHP:
$conta = count($prezzo);
for($a=0;$a<$conta;$a++){
Instruzioni;
  }

Ma mi da errore... Sapete aiutarmi??
 
so facendo delle prove... e chiaramente riscontro errori di questo genere su qualsiasi pressioni di tasti separati... Mi spiego... Ogni riga come sopra ha un visto che controlla il barcode e scrive nella form quello che ricava... Chiaramente se non riesco a processare X volte il pulsante, ottengo un risultato solamente invece di X.... e quindi se per esempio clicco sul primo, funziona, ma se voglio aggiugnerne un secondo, chairamente cancella il primo e funziona il secondo... Io dovrei fare in modo che quando clicco il tasto visto, processi solamente la riga su cui si trova... lasciando intatta quella sopra...

Per provare basta andare qui:

http://laviadellanima.com/prove/ddt_go.php

Se provate vedrete che funziona il visto... ma ne funziona una alla volta...
 
aggiungo il pezzo di codice relativo al pulsante:

PHP:
<?php
if(isset($_POST['visto'])){
	$barcodevisto=$_POST[barcodeart];
	$queryart=("SELECT * FROM articoli WHERE Barcode='$barcodevisto'") or die (mysql_error()); 
	$result = MYSQL_QUERY($queryart) or die('Query failed: ' . mysql_error() . "<br />\n$sql"); 
    //verifico che esista una una card con tale barcode 
    $esistebc=mysql_num_rows($result);
    //se $esiste == 0 non cè
    if($esistebc > 0){//esiste
        //estraggo usn e pass
        $righi=mysql_fetch_array($result);
		$barcodenew=$righi[Barcode];
		$descrizione=$righi[Descrizione];
		$prezzo=$righi[Vendita];
		$fornitore=$righi[Fornitore];
		$reparto=$righi[Reparto];
		            } else {
						?>
						<script>
        alert('Email non trovata');
    </script>
    <?php
	                       }
 }
 ?>
 

Discussioni simili