calcolo addizionale

E si non ho inserito qualcosa che identifichi il cliente
Devo quindi creare un record id_cliente?
si nella tabella acquisti trovo i record relativi ad un ordine e pensavo di dargli la passibilità di accedere
a tale sezione messa nel carrello solo dopo il login questo non dovrebbe assicurami di tenere traccia del cliente?
nel senso che, se si loga luca rossi e mette nel carrello i prodotti, avendo creato la sessione al login,
non è quello il carrello di luca rossi?
il record prezzo contiene la somma del prezzo moltiplicato per la quantità quindi devo richiedere il calcolo di prezzo
ma funzionerà anche se è in virgola mobile?

Mi da questo errore :(

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

ho scitto così :

$query=mysql_query("SELECT SUM(prezzo) FROM acquisti");
$rows=mysql_fetch_array($query);
echo "il totale dell'ordine è $rows['prezzo']";

posto tutto lo script magari può servire:

<?PHP
header('Cache-Control: no-cache');
header('Pragma: no-cache');
$dbhost = 'localhost';
$dbuser = 'dbuser';
$dbpass = 'dbpass';
$dbname = 'dbname';
$connessione = mysql_connect("localhost", "dbuser", "dbpass") or die("Impossibile connettersi al server host");
mysql_select_db(dbname, $connessione) or die ("Impossibile selezionare il database.");
$dialogo="risposta=".$dialogo;
$Id_prodotto=$_POST["id_prodotto"];
$Nome_prodotto=$_POST['nome_prodotto'];
$Prezzo=$_POST['prezzo'];
$calcolo= number_format($Prezzo, 2, ',', '.');
$Quantita=$_POST['quantita'];
$memoria=$_POST['calcolo'];

////////////////////// query select sum ////////////////////////////////////////////////////////////////////////////

$query=mysql_query("SELECT SUM(prezzo) FROM acquisti");
$rows=mysql_fetch_array($query);
echo "il totale dell'ordine è $rows['prezzo']";

////////////////// if per update cambio quantità manuale o riconoscimento doppio click ////////////////////////

if($Quantita==1){
$query = "UPDATE acquisti SET nome_prodotto='$Nome_prodotto',prezzo='$Prezzo',calcolo='$memoria',quantita='$Quantita' WHERE nome_prodotto= '$Nome_prodotto'";
}
if($Quantita>1){
$query = "UPDATE acquisti SET nome_prodotto='$Nome_prodotto',prezzo='$Prezzo',calcolo='$memoria',quantita='$Quantita' WHERE nome_prodotto= '$Nome_prodotto'";
}
if (mysql_query($query, $connessione)){
$risposta='...';
echo "risposta=".$risposta;
}else{
$risposta='dati non scritti';
echo "risposta=".$risposta;
}
mysql_close($connessione);
?>
 
Ultima modifica:
ciao
tre cose.
ma il campo prezzo non contiene il prezzo unitario del prodotto?

secondo, l'unica cosa che vedo "T_ENCAPSED_AND_WHITESPACE" come spazio bianco è nel punto della query dove vai a capo tra ca e lcolo , tra ca e lcolo c'è uno spazio?

tu usi il number_format mettendo il punto per le migialia e la virgola per i decimali (come dovrebbe essere in italiano) però se il numero float è es. 12345.381 questo diventa 12.387,38 questo, secondo me, non è un nimero riconosciuto da php. per salvare nel db userei il float e solo al momento della visualizzazione lo trasformerei (puo essere ch anche questo ti dia l'errore segnalato)

non so se devi creare una tabrella con gli identificativi del cliente (secondo me sarebbe opportuno altrimenti come fai a sapere chi ha ordinato), io in un sito per distinguere i vari ordini e davo un numero d'ordine dato dal microtime dell'inserimento definitivo, le probabilità che esistano due ordini con numero uguale sono praticamente zero.

comunque do un altro occhio allo script poi ti so dire meglio
 
Per prima cosa grazie mille.
No non c'è uno spazio quindi il problema sarà sicuramente relativo al calcolo per via della virgola mobile :(
Per quanto concerne il numero ordine hai proprio ragione mi conviene inserirlo magari genero un numero casuale che si immette ad ogni ordine e che identifichi appunto l'ordine specifico esempio: ordine 35700= luca rossi etc etc giusto?
 
ciao
scusa se non ho risposto subito ma ho grossi probelemi :incazz2:(penso) di linea (per caricare mr webmaster 10 tentativi e minimo 5 minuti di attesa), quindi ti rispondo succintamente
...problema sarà sicuramente relativo al calcolo per via della virgola mobile...
è probabile come ti ho dette ti conviene inserire il float e trattarlo dopo solo per la visualizzazione e/o stampa.

...che identifichi appunto l'ordine specifico...
penso che sia proprio necessario, anche se come detto userei microtime() al posto di un numero random (sei più sicuro di non avere doppioni)

se il problema di linea si sistema ti do tra poco altre informazioni
 
ciao, problemi di linea permettendo, riprenderei il discorso.

per il float devi solo impostare il campo della tabella a float,
nello script php il float si genera "spontaneamente" es.
$quantita= 2; //è un intero
$prezzo_unitario=100.257; //è un float
$prezzo_totale=$quantita*$prezzo_unitario;//è un float

se ti serve inserire nella tabella il $prezzo_totale NON usare number_format, tanto
la formattazione ti serve solo a minitor o a stampa per cui es.

echo "prezzo totale ".number_format($prezzo_totale, 2, ',', '.');." euro";

per il numero d'ordine con microtime basta che tu faccia

$numero_ordine=microtime();
il numero d'ordine deve essere generato solo quando l'utente ha terminato il tutto, al momento
di registrare l'ordine nella tabella_ordini
tra l'altro con il numero d'odine così generato puoi visualizzare anche la data in formato usuale, es

echo "ordine inviato il ".date("d m Y";$numero_ordine/1000);// diviso mille perche microsecondi

pui vedere meglio al link
http://it.php.net/manual/en/function.microtime.php

p.s.
se vuoi ti posto anche delle dritte di come ho realizzato io un qualcosa di simile
 
Ciao Borgo grazie mille.
Vediamo se ho capito.
Allora imposto float nella tabella e il db e la query mi danno
un calcolo con il float poi codifico il calcolo float con il number_format
in echo per mostrare a monitor il calcolo in valuta euro giusto?
e il primo problema dovrebbe essere risolto.
Per l'altro tenterò di studiare la guida ma non ho ancora imparato l'inglese come un ciuco e quindi spero nella traduzione google e che dio ce la mandi buona :)
Ti posto poi lo script del pastrocchio che genero
sperando di aver capito tutto e di aver fatto tutto bene :)
 
ciao
si il campo della tabella deve essere impostato a float sia il prezzo unitario (es. 124.37) che il totale quantità per unitario.
però volevo dirti una cosa
a che ti serve salvare il prezzo totale?
ti basta salvare la quantità e l'unitario, poi quando vai a leggere la tabella ti scrivo sommariamente
//query e fetch_array

echo "prezzo totale ".number_format($rows['quantita']*$rows['unitario']*, , 2, ',', '.');." euro";

risparmi un campo nel db
 
Aspetta che tu per me sei troppo avanti io vado con l'analogico tu sei una 50mg. :)
Mi serve il calcolo totale per la cassa quando devono pagare il tutto e dovrei sommarlo anche al costo del corriere per questo sono proprio stralunato e confuso.
 
ciao
...per questo sono proprio stralunato e confuso.
scusa se mi permetto di dirti una cosa che sto ripetendo in vari post.
molti hanno un'idea e si mettono al pc iniziando a scrivere codice.
arrivati ad un certo punto si sentono come te (è capitato anche al sottoscritto).
qullo che ti voglio dire (imparato sulla propria pelle) che prima di passare al pc/codice, si deve/dovrebbe passare dalla carta e matita e studiare quello che si vuole fare partendo dal generale giù giù sino hai particolari, valutando prima quello che serve e poi (sempre sulla carta) come farlo. cercando di ragionare in modo rigido come il pc, ponendosi spesso la domanda "ma se faccio così cosa succede?"
ti faccio un esempio esemplificato per il tuo caso.
prodotti: mi serve una tabella prodotti; sono divisibili in categorie?; cosa mi serve per il prodotto?immagine? nome?descrizione?unità di misura? prezzo unitario?il prodotto ha un codice?mi serve sapere il fornitore?
terminate le domande per i prodtti ti accorgi che i prodotti sono es suddivisibili in categorie: mi serve una tabella per le categorie? se si con cosa? eccc.... con pazienza e pazienza e .... sino ha che non hai sviscerato tutto il problema.
ci vuole un po' di allenamento, ma se vuoi fare qualcosa ne vale la pena.

comunque (per ora) sono qui
 
Hai pienamente ragione!!!.
Infatti potrei scansionarti le foto dei 5 fogli con lo schema di questo sistema e il ragionamento :).
Infatti mi sono posto tutte le domande di sorta e ho creato lo schema di ogni step il problema è che arrivato all'ultimo step sto avendo problemi ma non è una confusione dovuta alla mancanza di linee guida
è dovuta al calcolo fisico :(.
Riassumo gli step e i due problemi fondamentali che incontro:

Step 1 con annesse funzioni:
messa nel carrello
Cancellazione ordine singolo
Cancellazioni di tutti gli ordini
Sostituzione manuale numero quantità prodotto
Memoria Numero quantità prodotto in base al click sul prodotto stesso
Calcolo automatico costo in base alla quantità

Step 2 Pagemento
Riconoscimento acquisti utente
Calcolo totale + spese spedizione

Il primo step funziona perfettamente, tutte le sue funzioni le ho create e ringraziando dio funzionano e rispondo benissimo è il secondo step che non riesco a creare, ma non perchè non abbia le idee chiare su quello che mi serve perchè non ho le idee chiare su come impostare il calcolo :(
Sintetizzando mi servirebbe riconoscere l'acquisto delinato ad ogni singolo utente e recuperare il calcolo totale più le spese di spedizione in valuta euro :(
 
Ultima modifica:
ciao
perfetto.
quindi concentriamoci sullo step 2.
Riconoscimento acquisti utente
intendi che tu vuoi visualizzare l'ordine del cliente?
gli acquisi sono in una tabella immagino
indicami i campi delle tabella e le loro caratteistiche
 
Gli acquisti sono nella tabella acquisti però come mi hai fatto notare ieri se io non delineo e differenzio l'acquisto di luca rossi da quello di mario bianchi mischio tutto e poi come si fa???

comunque la tabella acquisti l'ho strutturata strutturata così:

Tabella: acquisti
set: Id_prodotto, Nome_prodotto, prezzo, quantita, codice, calcolo

1. id_prodotto: deve contenere l'identificativo numerico del prodotto
2. Nome_prodotto: contiene il nome del prodotto
3. prezzo: Questo record contiene il prezzo in valuta euro frutto della codifica con number_format
4. quantita: contiene il numero dei prodotti
5. codice: dovrebbe contenere il codice prodotto
6. calcolo: contiene un numero intero da cui ricavo il calcolo in valuta euro con virgola mobile con number_format

questo è il casino che ho combinato :)
 
ciao
nella tabella dovresti inserire il campo ordine (identificativo dell'ordine) e secondo me, id_cliente (identificativo del cliente)
inoltre i campi con i prezzi devono essere di tipo float (li sistemi solo a monitor e/o stampa) a che ti serve che nel db siano scritti es 1.300,56?secondo me a nulla.
guarda come farei la tabella

id int(20) autoincrement primary key
id_ordine int(20)
id_cliente int(20) //dovresti ricavarlo nell'anagrafica clienti
id_prodotto se è un numero int(20) altrimenti varchar(20)
prezzo float
quantità se hai solo "pezzi" int(10) altrimenti float es. per peso o metratura
codice come id_prodotto, ma ti serve? o questo o id_prodotto
calcolo float, ribadisco a che ti serve?

ora per valutare meglio come impostare il numero d'ordine vorrei sapere se:
il record dell'ordine viene salvato ad ogni immissione nel carrello oppure l'utente fa prima tutte le scelte e l'ordine viene salvato solo alla fine?
per ora fermiamoci qui
 
Non ho capito.
Mi spiego, a me serve scrivere nel database il prezzo sommato in base
alla quantità per mostrarlo al cliente.
Non ha senso immetterlo nel database basta solo mostrarlo al cliente con la codifica number_format?.
Dopo aver calcolato il costo moltiplicato per quantità automaticamente
nell'immissione nel carrello automaticamente bisognerebbe ottenere
il calcolo in base al carrello.
Esempio: metto nel carrello due vasi dal valore di euro 6,00 l'uno
totale euro 12,00 più spese di spedizione.
Se invece mettessi nel carrello 2 vasi che costano 6,00 euro
e un sacchetto di terra che costa 4,00 euro totale euro 16,00 più spese di spedizione.
Questo dovrei fare.
L'ordine viene generato automaticamente in base alle scelte
che fa l'internauta con annesso calcolo, al click di paga il sistema manda il costo totale alla pagina di pagamento.
 
Allora tanto per tagliare la testa al toro.
Ho creato il set id_utente che prendo da una queri di select
dall'anagrafica del cliente quindi ecco riconosciuto il cliente no?
Il primo problema dovrebbe essere risolto.
Ora mi manca solo il calcolo della somma totate più le spese di spedizione e ho risolto :)
 
ciao, non verrei deluderti, ma
Ho creato il set id_utente che prendo da una queri di select
dall'anagrafica del cliente quindi ecco riconosciuto il cliente no?
si riconosci il cliente, pero si ti fa (quel cliente) un ordine oggi ed uno tra un mese? come fai a sapere a quale ordine ti riferisci?
 
ciao
riprendiamo il discorso dalla tabella che hai fatto tu, per avere il totale dell'ordine (quale?)

Tabella: acquisti
set: Id_prodotto, Nome_prodotto, prezzo, quantita, codice, calcolo

1. id_prodotto: deve contenere l'identificativo numerico del prodotto
2. Nome_prodotto: contiene il nome del prodotto
3. prezzo: Questo record contiene il prezzo in valuta euro frutto della codifica con number_format
4. quantita: contiene il numero dei prodotti
5. codice: dovrebbe contenere il codice prodotto
6. calcolo: contiene un numero intero?? float da cui ricavo il calcolo in valuta euro con virgola mobile con number_format

tu inserisci i vari record nella tabella apprendendo i valori da inserire con $_POST
$id_prodotto=$_POST['id_prodotto'];
$nome_prodotto=$_POST['nome_prodotto'];
$prezzo=$_POST['prezzo'];
$quantita=$_POST['quantita'];
$codice=$_POST['codice'];
$calcolo=$prezzo*$quantita;//lascia perdere per ora i vari format-number
quando inserisci il primo record avrai una query di insert del tipo

"INSERT INTO acquisti(id_prodotto, nome_prodotto, prezzo, quantita, codice, calcolo) VALUES('$id_prodotto', '$nome_prodotto', '$prezzo', '$quantita', '$codice', '$calcolo'"
quindi la tabella ti si riempie per esempio con
333 camice 10.00 3 CA23uu 30.00
545 calzini 5.00 8 CZ324 40.00
269 mutande 3.00 2 MU2x37 12.00
ecc....
è giusto sin qui?
ora a te serve la somma della colonna calcolo cioe il totale dell'ordine?lasciamo perdere quale ordine

per avere a monitor o a stampa tale somma puoi procedere in quasto modo

PHP:
//connessione al db
$somma=0;//azzero la somma
$query="SELECT * FROM acquisti"; //'' quale ordine??
echo "sono stati ordinati:";
while($rows=mysql_fetch_array($query)){
$id_art=$rows['id_prodotto'];
$nome=$rows['nome_prodotto'];
$prezzo=$rows['prezzo'];
$quantita=$rows['quantità'];
$codice=$rows['codice'];
$calcolo=$rows['calcolo'];
$somma+=$calcolo;//faccio la somma per il totale
echo "n° ".$quantita." di ". $nome." cod.".$codice." prezzo uni: ".number_format($prezzo,',','.')." per ".number_format($calcolo.',','.'). "euro <br>";

}//fine del while
echo "--------------------------------------------per un totale di ".number_format($somma,',','.')." euro";


ops: ci sentiamo domani
 

Discussioni simili