Funzione che risulta sempre 0

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio
ciao
prova a fare queste modifiche
PHP:
<?php
//.....
$i=0;
foreach($barcodeart_da_mostrare as $k){
        if(!isset($_SESSION['prezzosconto'][$i]) || empty($_SESSION['prezzosconto'][$i])){
			//vcerifica se il prezzo iniziale è $barcodeart['prezzo'][$k]
			$pre_da_vis[$i]=$barcodeart['prezzo'][$k];//prezzo da visualizzare nel campo di input
		}else{
			$pre_da_vis[$i]=$_SESSION['prezzosconto'][$i];
		}
		echo '
        <tr> 
        <td><input type="text" placeholder="Barcode" name="barcodeart_vecchi[]" id="barcodeart" size="11" align="center" value="'.$k.'"></td> 
        <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="'.$barcodeart[$k]['Descrizione'].'"></td> 
        <td><input type="text" style="text-align:center" placeholder="Qnt" name="quantita[]" id="quantita" size="3" value="1"></td> 
        <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="'.$barcodeart[$k]['Vendita'].'" ></td> 
        <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3" value="0"></td> 
        <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4" value="0"></td>'; 
        echo '<td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6" value="'.$pre_da_vis[$i].'"></td>';   
            echo '<td><input type="hidden" name="fornitore[]" id="fornitore" size="100" value="'.$barcodeart[$k]['Fornitore'].'"></td> 
        <td><input type="hidden" name="codice[]" id="codice" size="100" value="'.$barcodeart[$k]['Codice'].'"></td> 
        <td><input type="hidden" name="reparto[]" id="reparto" size="100" value="'.$barcodeart[$k]['Reparto'].'"></td> 
        <td><input type="hidden" name="UM[]" id="UM" size="100" value="'.$barcodeart[$k]['UM'].'"></td> 
       </tr> 
        ';   
        $i++;    
   }//chiusura del foreach (giusto chiuso qui?)             
} //chiusa la while proviamo...
//....
?>
mi raccomando tienti sempre una copia di riserva per tornare indietro
 
no borgo non va... oltre a non visualizzarlo, non fa neanche le altre righe quando cerco altri barcode...
 
ciao
intanto
non fa neanche le altre righe quando cerco altri barcode...
verifica l'apertura chiusura delle graffe
poi verifica con un solito var_dump se in quel punto esiste o la sessione o il prezzo ( $_SESSION['prezzosconto'][$i] e $barcodeart['prezzo'][$k]) mettendo i due var_dump prima dell'if/else.

poi ca..o: ne verremo a capo

comunque guardo ancora, se poi ancora non capisco esporta la tabella in formato sql zippala e postala (spero che non sia una tabella da mega)
 
hahah la tabella contiene circa 3700 referenze, ma faremmo del nostro meglio, se ti occorrono le credenziali per fare dei test te le do senza problemi... Ora metto i due var dump e ti posto risultato...
 
Risultato usando sempre gli stessi barcode :

Codice:
string(5) "

"
array(1) {
  [0]=>
  string(13) "1920100216004"
}
string(6) "

" string(5) "

"
array(2) {
  [0]=>
  string(13) "1920100216004"
  [1]=>
  string(13) "7640141078778"
}
string(6) "

" 1920100216004 BRACC.ELAST SWAROVSKI 3 FILI AMETISTA 129
7640141078778 BRACCIALE IN AGATA 2 FILE 129
 
ciao
hahah la tabella contiene circa 3700 referenze, ma faremmo del nostro meglio, se ti occorrono le credenziali per fare dei test te le do senza problemi... Ora metto i due var dump e ti posto risultato...
eventualmente basta l'sql della tabella senza dati (li metto io a caso) preferisco lavorare quando faccio le prove in locale perchè se salta fuori un pasticcio poi mi mangi :).
comunque scusa forse mi sono spiegato male dove mettere i var dump
PHP:
<?php
//....
foreach($barcodeart_da_mostrare as $k){
        var_dump("<pre>",$barcodeart['prezzo'][$k],"</pre>");
		var_dump("<pre>",$_SESSION['prezzosconto'][$i],"</pre>");
		if(!isset($_SESSION['prezzosconto'][$i]) || empty($_SESSION['prezzosconto'][$i])){
            //vcerifica se il prezzo iniziale è $barcodeart['prezzo'][$k]
            $pre_da_vis[$i]=$barcodeart['prezzo'][$k];//prezzo da visualizzare nel campo di input
        }else{
            $pre_da_vis[$i]=$_SESSION['prezzosconto'][$i];
        }
		var_dump("<pre>",$pre_da_vis[$i],"</pre>");
        echo '....'
//...
?>
 
messi come dicevi te... Quello della sessione prima sembra prenderlo,l'altro no.

Codice:
string(5) "

"
NULL
string(6) "

" string(5) "

"
int(129)
string(6) "

" string(5) "

"
int(129)
string(6) "

" string(5) "

"
NULL
string(6) "

" string(5) "

"
NULL
string(6) "

" string(5) "

"
NULL
string(6) "

" per 139 il prezzo scontato è: 139
array(1) { [0]=> int(139) } per 156 il prezzo scontato è: 146
array(2) { [0]=> int(139) [1]=> int(146) }
 
ciao
ricapitoliamo. se non leggo male i var_dump
questo var_dump("<pre>",$barcodeart['prezzo'][$k],"</pre>");
da NULL per entrambi i barcode quindi vuol dire che in quel punto non è ancora valorizzato

questo var_dump("<pre>",$_SESSION['prezzosconto'][$i],"</pre>");
ti da un intero uguale a 129 (129 è lo stesso per entrambi i barcode?) quindi comunque in quel punto la sessione esiste ed ha il suo valore (non è vuota)
quindi non capisco perche non entri nell'else in quanto il var dump
var_dump("<pre>",$pre_da_vis[$i],"</pre>");
da NULL per entrambi i barcode
cioè se la $_SESSION['prezzosconto'][$i] (dovrebbe essere $_SESSION['prezzosconto'][0]==129 I° barcode e $_SESSION['prezzosconto'][1]==129 per il secondo
quindi $pre_da_vis[0]== 129 e $pre_da_vis[1]== 129

allora verificami anche $i mettendo il solito var_dump($i); appena prima del var dump che verifica $barcodeart['prezzo'][$k]
al primo barcode dovrebbe essese int 0, al secondo int 1

eventualmente ti modifico i controlli in modo da capire meglio
 
ora sembra che funzioni, ma solamente perche ha in memoria l'altra sessione... dovremmo romperla completamente... in ogni caso ilrisutalto:

Codice:
int(0) string(5) "

"
NULL
string(6) "

" string(5) "

"
int(139)
string(6) "

" string(5) "

"
int(139)
string(6) "

" int(1) string(5) "

"
NULL
string(6) "

" string(5) "

"
int(146)
string(6) "

" string(5) "

"
int(146)
string(6) "

" per 139 il prezzo scontato è: 125.1
array(2) { [0]=> float(125.1) [1]=> int(146) } per 156 il prezzo scontato è: 126.36
array(2) { [0]=> float(125.1) [1]=> float(126.36) }
 
ciao
posta lo zip dll'sql della tabella vuota (puoi esportare solo la struttura) che faccio delle prove (i dati li metto a caso).
questo perche se posso testare direttamente lo script è più semplice trovare dove è l'inghippo (se lo trovo).
per lo script posso usare l'ultimo che hai postato?
 
si va bene l'ultimo te ne metto anche uno "originale" senza le nsotre prove.... faccio lo zip
 
ciao
sto cercando di capire (sto usando maschera_vendite2.php)
1)chiami la pagina e sotto le indicazioni
Barcode Descrizione Quantita' Prezzo Sconto % Sconto VAL Prezzo Finale
non vedi alcuna riga (nessun campo di input)
2) scrivi nel campo barcode il barcode e premi il submit alla sua dx
sotto ti appare una serie di campi corrispondenti a quanto scritto nelle indicazioni
(tralasciamo per ora sconti vari e limitiamoci ad un solo barcode)
con il barcode di prova mi appare

barcode => aa11
descrizione => primo AA
quantità => 1
prezzo => 200
sconto % => 0
sconto val => 0
prezzo finale => P.scontato

a questo punto cosa fai?
su quantità scrivi 2 e premi il "subtotali" ?
quindi la pagina si ricarica rimane tutto come prima ma in prezzo finale dovresti trovare 2x200 = 400?
 
Allora... hai ragione... se vedi la funzione barcode viene richiamata solamente se inserisci una tessera cazzo... ho sbagliato io... metti la pressione del subtotale senza tessera ...
In ogni caso si dovrebbe essere cosi...

Cmq ti rispiego la logica:

Inserisco il barcode e premo il tasto a dx, se lo trova in anagrafica recupera barcode,prezzo,descrizione e setta automaticamente quantita a 1.
A questo punto se mi serve cerco un altro barcode e lui automaticamente genera un altra riga con stesse indicazioni.
A questo punto inserisco gli eventuali sconti e premo subtotale. Una volta premuto subtotale, effettua i vari controlli e calcola il prezzo scontato (che in veriita devo cambiare in prezzo finale). Fatto questo dovrebbe inserire quel prezzo dentro ognuna di quelle caselle "prezzo Scontato".
 
ciao
quindi (è indifferente che sia uno o più barcode) modificati i valori al sub totale deve farti i calcoli e visualizzarli (anche se poi non capisco dove li invii)
 
esattamente... Il prezzo scontato (o prezzo finale) deve essere un array... Che sia uno o n è indifferente, dipende dalla vendita e dallo scarico...
L'invio lo faccio non appena riesco a sistemare tutta questa parte... Il tutto verrà inviato al DB Transazioni e conservato.... Quindi id multipli ma transazione unica (se ti serve ti posto lo schema della tabella trnasazioni).
 

Discussioni simili