Jump to content
PLC Forum


Problema migrazione da php 5 a php 8.2


Recommended Posts

Posted

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?


max.riservo
Posted

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 ...

 

Posted

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.

Posted

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 

  • 10 months later...
DavideDaSerra
Posted (edited)

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

Edited by DavideDaSerra
Livio Orsini
Posted

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

 

  • Livio Orsini locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...