Vai al contenuto
PLC Forum


Problema migrazione da php 5 a php 8.2


Zippo978

Messaggi consigliati

Salve a tutti,

 

premetto che non sono un programmatore ma per piccole modifiche me la cavo, ho questa funzione

 

if ($prezzo2 == '0') {    $prezzo2 = "";    } else    {    $prezzo2 = "$prezzo2,00";    }

 

e questa somma

 

$totale = "$prezzo0"+"$prezzo1"+"$prezzo2"+"$prezzo3"+"$prezzo4"+"$prezzo5"+"$prezzo6"+"$prezzo7"+"$intprezzo8";

 

ma mi restituisce questo errore 

 

Tipi di operandi non supportati: int + string

 

dato che nel db il campo non posso metterlo null e mi serve che nella pagina non venga visualizzato lo 0 come posso fare per non stamparelo nella pagina?

Link al commento
Condividi su altri siti


Ovviamente NON puoi sommare numeri con stringhe mentre la possibilità che sul DB un campo numerico possa anche contenere il valore NULL è una scelta progettuale, eventualmente modificabile nel caso tu avessi accesso al DB come amministratore dello stesso.

Quindi hai queste soluzioni :

- quando il campo vale zero rimate tale (cioè zero). In fondo che problema hai nel sommare zero al totale ?

- per ogni campo che non vuoi sommare quando è zero (che comunque non somma alcunché) esegui un test sul suo valore e se è zero non lo includi nella sommatoria.

- i campi che visualizzi a video sono una copia dei campi che utilizzi nella sommatoria. In questo modo il campo visualizzato a video può essere trasformato in stringa (quindi puoi anche visualizzare una stringa nulla/vuota/di lunghezza zero) mentre nella sommatoria continui ad utilizzare il campo numerico (anche quando vale zero).

 

Valuta di dotarti di un buon libro su PHP ...

 

Link al commento
Condividi su altri siti

immamzi tutto grazie mille per a risposta, ma mi sa che mi sono espresso male io, non mi interessa se alla somma mette lo 0 o meno mi interessa che non compaia nella pagina web

cioè da cosi

image.jpeg.5043b3ab35c21e89b4edbadc2705aeaf.jpeg

 

a cosi

 

image.jpeg.896ab2d4036a67f68afe92a2b7d09153.jpeg

 

quindi quell' $prezzo2 = ""  si puo anche eliminare l' importante è che a video non si veda lo 0.

 

Ho provato a mettere NULL la cella nel db ma non lo accetta.

Link al commento
Condividi su altri siti

immamzi tutto grazie mille per a risposta, ma mi sa che mi sono espresso male io, non mi interessa se alla somma mette lo 0 o meno mi interessa che non compaia nella pagina web

cioè da cosi

image.jpeg.5043b3ab35c21e89b4edbadc2705aeaf.jpeg

 

a cosi

 

image.jpeg.896ab2d4036a67f68afe92a2b7d09153.jpeg

 

quindi quell' $prezzo2 = ""  si puo anche eliminare l' importante è che a video non si veda lo 0.

 

Ho provato a mettere NULL la cella nel db ma non lo accetta.

 

Dopo una giornata a sbatterci la testa ho risolto, in pratica ho messo il ciclo if la sommatoria, in questa maniera la somma se la fa tranquillamente e dopo prende i risultati e li stampa come dico io, era cosi semplice che non ci avevo pensato 😅

 

Grazie @max.riservo 

immamzi tutto grazie mille per a risposta, ma mi sa che mi sono espresso male io, non mi interessa se alla somma mette lo 0 o meno mi interessa che non compaia nella pagina web

cioè da cosi

image.jpeg.5043b3ab35c21e89b4edbadc2705aeaf.jpeg

 

a cosi

 

image.jpeg.896ab2d4036a67f68afe92a2b7d09153.jpeg

 

quindi quell' $prezzo2 = ""  si puo anche eliminare l' importante è che a video non si veda lo 0.

 

Ho provato a mettere NULL la cella nel db ma non lo accetta.

 

Dopo una giornata a sbatterci la testa ho risolto, in pratica ho messo il ciclo if dopo la sommatoria, in questa maniera la somma se la fa tranquillamente e dopo prende i risultati e li stampa come dico io, era cosi semplice che non ci avevo pensato 😅

 

Grazie @max.riservo 

Link al commento
Condividi su altri siti

  • 10 months later...
DavideDaSerra

Per la gioia di spiegare:
 

if ($prezzo2 == '0') {    $prezzo2 = "";    } else    {    $prezzo2 = "$prezzo2,00";    }

 

L'errore è qui:

$prezzo2=""

metti una "stringa vuota" in un campo che poi sommi, l'operatore "+" vede da una parte un intero e dall'altra una stringa e non riesce a sommarli.

 

Aggiungo che anzicè aggiungere ",00" a mano avrei usato la funzione 

number_format($number, 2, ',', '.');

//2 è il numero di devimali, ',' è il separatore decimali e il terzo è il separatore delle migliaia. number_format(1234.564,2,',','.'); ti produce 1.234,56

Modificato: da DavideDaSerra
Link al commento
Condividi su altri siti

Livio Orsini

Dopo quasi un anno dovrebbe aver risolto il suo problema.😁

 

Link al commento
Condividi su altri siti

  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...