Vai al contenuto
PLC Forum


Problema migrazione da php 5 a php 8.2


Messaggi consigliati

Inserito:

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?


Inserita:

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

 

Inserita:

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.

Inserita:

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
Inserita: (modificato)

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
Inserita:

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

 

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