Creare alcune condizioni php

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
Io uso Wordpress e la mia richiesta di creare alcune condizioni php è dovuta al fatto che vorrei eseguire alcune modifiche al codice del plugin Wp PostRatings (è il plugin per esprimere un voto).
Ho già letto il post: https://www.mrw.it/php/condizioni-if-else-switch_9486.html però mi mancano le basi e forse dopo che mi aiutate con questo problema, riuscirlo a capirlo meglio.

Questa è una parte di codice del plugin:
Codice:
if($post_ratings_score == 0 || $post_ratings_users == 0) {
		$post_ratings = 0;
		$post_ratings_average = 0;
		$post_ratings_percentage = 0;
	} else {
		$post_ratings = round($post_ratings_average, 1);
		[COLOR="#FF0000"]$post_ratings_percentage = round((($post_ratings_score/$post_ratings_users)) * 100, 0);[/COLOR]
	}
	$post_ratings_text = '<span class="post-ratings-text" id="ratings_'.$post_id.'_text"></span>';
	// Get the image's alt text
	if($ratings_custom && $ratings_max == 2) {
		if($post_ratings_score > 0) {
			$post_ratings_score = '+'.$post_ratings_score;
		}

La parte colorata di rosso è secondo me quella più importante. Essa esprime il punteggio in percentuale. Da -100% a +100%.

Adesso io vorrei aggiungere a questo codice le seguenti condizioni:

1) Se il punteggio è inferiore a 60%, il numero del voto dovrà essere rosso, altrimenti verde.

2) Se il punteggio è inferiore a 60%, aggiungere la parola "Brutto" dopo il voto in percentuale, altrimenti "Bello".

Potete aiutarmi o chiedo troppo?
 
Ultima modifica:

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
E' la riga in rosso che mi dà il valore numerico da 0 a 100.

Per intenderci, il plugin del voto è quello contenuto in questa pagina:
http://www.giocare-online-gratis.it/evito-ball/

(editerò il post e toglierò il link, dopo che hai letto)


Poi senza usare php, ma direttamente nelle impostazioni del plugin sto utilizzando questo testo:
HTML:
<b>  - Vota: </b>%RATINGS_IMAGES_VOTE% %RATINGS_TEXT% - (<b>%RATINGS_PERCENTAGE%%</b> su <strong>%RATINGS_USERS%</strong> voti.)
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non so perchè si vede male quello che hai postato, ma se non ho capito male quella riga stampa il valore pernetuale %RATINGS_PERCENTAGE%%, giusto?
se è così devi "mescolare" un po' di php, ti schematizzo
PHP:
<!--.... -->
<?php
$colore="<b style=\"color:#00FF00 ;\">";//colore testo verde
$fine="</b>";//stampa solo chiusura tag b
if($post_ratings_percentage < 60){
	$colore="<b style=\"color:#FF0000 ;\">";//colore testo rosso
	$fine=" brutto</b>";//stampa brutto e chiusura tag b
}
?>
<!--.... -->
- Vota: </b>%RATINGS_IMAGES_VOTE% %RATINGS_TEXT% - (<?php echo $colore;?>%RATINGS_PERCENTAGE%%<?php echo $fine;?> su <strong>%RATINGS_USERS%</strong> voti.)
<!--.... -->
 

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
Si è %RATINGS_PERCENTAGE%

a tentativi e dopo tanti errori fatali sono riuscito a mettere il tuo codice senza usare <?php all'inizio e ?> alla fine.

L'ho messo dopo la parentesi graffa chiusa della riga evidenziata in rosso. (che purtroppo non tu vedi)

Ho sistemato anche la seconda parte di codice con <?php echo $colore;?>%RATINGS_PERCENTAGE%%<?php echo $fine;?> ma non è cambiato nulla. Mi lascia il colore di default ed ho anche azzerato la cache.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
guarda l'html che risulta, chiami la pagina e selezioni a monitor la parte che ti interessa, poi con il tool del bw fai "sorgente selezione", in teoria dovresti vedere (ipotesi 80)

HTML:
- Vota: ...... - (<b style="color:#00FF00 ;">80%</b> su <strong>ecc...

se non è così c'è qualcosa dento, penso, RATINGS_PERCENTAGE che già predispone lo style
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prova una cosa del genere
usando il tag <span> al posto del <b> e costruendo il tutto prima
PHP:
<?php
$colore="<span style=\"color:#00FF00 ;font-weight:bold\">".;//colore testo verde bold
$fine=" %</span>";//stampa solo chiusura tag span
if($post_ratings_percentage < 60){
    $colore="<span style=\"color:#FF0000 ;font-weight:bold\">";//colore testo rosso bold
    $fine=" % brutto</span>";//stampa brutto e chiusura tag span
}
$percento=$colore.$post_ratings_percentage.$fine;//valore da stampare
?>
<!--....-->
- Vota: </b>%RATINGS_IMAGES_VOTE% %RATINGS_TEXT% - (<?php echo $percento;?> su <strong>%RATINGS_USERS%</strong> voti.) 
<!--....-->
 

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
Se faccio ispeziona elemento su 100%, vedo questo:
HTML:
<!--?php echo $colore;?-->
100%
<!--?php echo $fine;?-->

Quindi non viene riconosciuto come php? Sarà questo il problema principale?

Il codice del tuo ultimo messaggio mi dà errore. Pensavo fosse più semplice, forse è per questo che l'autore del plugin non mi ha voluto aiutare. Almeno ci hai provato, grazie lo stesso. :D
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
quello NON è php
PHP:
<?php echo $colore;?>
il php non si vede perche viene processato dal server prina di arrivare al bw
se si vede NON è php
 

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
Ciao,
ti disturbo se discutiamo sempre dello stesso problema di questo post? ovvero cambiare il colore in funzione del punteggio.
Il codice è cambiato perché ho sostituito il widget di voto con le stelline ma il plugin è lo stesso.
$value = str_replace("%RATINGS_AVERAGE%", number_format_i18n($post_ratings_average, 0), $value);

Io sono ignorante in materia ma credo che quello che comanda il punteggio sia:
- %RATINGS_AVERAGE%

oppure

- $post_ratings_average

Dico questo perché se a quello "0" di colore verde posto alla fine del codice, lo sostituisco con il numero 1, appare il numero decimale (es. 2,2), se metto 2 al posto dello "0" appariranno anche i centesimi (es. 2,22)


Il punteggio va da 1 a 10. Vorrei che se il punteggio è superiore a 6 debba essere di colore verde. Se è 5 o inferiore deve essere rosso.

Il codice PHP lo provo a mettere direttamente sotto a questo che ho trovato. In teoria dovrebbe funzionare dato che dal CSS il colore predefinito so modificarlo anche da solo.

I tentativi li faccio su un sito ancora in costruzione, quindi non preoccuparti se i primi tentativi vanno male.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto quel numero che hai evidenziato in verde determina il numero di decimali che devono essere visualizzati (attento dico visualizzati non eliminati)
per cui il ratings_average (giudizio medio) è la media dei giudizi, cioè se in
$post_ratings_average hai (es) 7.3692 e metti 0 visualizzi 7, se metti 1 7.3 ecc...
poi quella funzione number_format_i18n non è una funzione nativa di php, ma una funzione creata appositamente da chi ha creato il plug e che quindi non so esattemente cosa faccia
poi tutta quella riga
PHP:
$value = str_replace("%RATINGS_AVERAGE%", number_format_i18n($post_ratings_average, 0), $value);
non fa altro che
1) arrotonda il valore (sembrerebbe) contenuto in $post_ratings_average con number_format_i18n
2) cerca in $value la stringa %RATINGS_AVERAGE% e la rimpiazza con quanto ottenuto da number_format_i18n
3) fatto quanto sopra rivalorizza (riassegna) $value
da quello che ho capito (non conosco il plug e quindi non so cosa faccia) la variabile $value conterrà un valore da 1 a 10, quindi nel punto in cui la visualizzi (penso con un echo) potresti fare
PHP:
<?php
//.......
$colore ="#FF0000"; //colore rosso
if($value >= 6){$colore ="#00FF00";}//colore verde
echo "<span style='color:$colore;' >$value</span>";
//.....
?>
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
scusa Borgo, non ho mai lavorato con wordpress ne tantomeno con i suoi plugin,
quindi perdona la mia domanda,
supponendo che $value sia solo una variabile usata per la visualizzazione, non si potrebbe agire direttamente su di essa con,
PHP:
$colore = $post_ratings_average >= 6 ? '#00FF00' : '#FF0000';
$value = str_replace("%RATINGS_AVERAGE%", number_format_i18n($post_ratings_average, 0), $value);
$value = "<span style='color:$colore;' >$value</span>";
così non dovrebbe subire mutazioni successive o sbaglio ?
ciao
Marino
 

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
@Marino51
il tuo metodo ha funzionato perfettamente (cioè è rosso quando deve essere rosso e verde quando deve essere verde), però non è gran che dal punto di vista estetico.
Posso farti un'altra richiesta basandomi sul tuo ultimo metodo?

Anziché il "valore numerico", riesci a fare in modo che cambi il background in funzione del valore?
Io uso già questo div che credo sia messo già al posto giusto:
<div class="site-score">

Devo fare in modo che se value è inferiore a 6 risulti rosso altrimenti verde.

background-color: #00FF00;

Adesso non so se questa funzione php sia in grado di modificare il background di un div...

Se riesci a fare pure questo, farò successivamente altre richieste per perfezionare la tecnica.
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
non riesco ad immaginare come potrebbe essere impostato il codice, al fine di non scrivere una stupidata,
puoi postare la parte di codice che inizia con '<div class="site-score">', che comprende il "$value" fino al "/div" di chiusura ?
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
PHP:
$colore = $post_ratings_average >= 6 ? '#00FF00' : '#FF0000';
$value = str_replace("%RATINGS_AVERAGE%", number_format_i18n($post_ratings_average, 0), $value);
$value = "<span style='color:$colore;' >$value</span>";
si potrebbe, pero, come dici tu, se $value serve solo per visualizzare ok, ma se serve per calcoli successivi si impalla
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
sempre con lo stesso metodo potresti
PHP:
<span style='background-color:$colore;' >$value</span>
oppore al posto di span puoi mettere div che forse è meglio gestibile
 

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
@Marino 51
forse conviene che scarichi il plugin e tieni aperto il file wp-postratings/wp-postratings.php .


Credo che il problema riguarda $Value che comprende l'intera funzione del plugin...
Vedi l'allegato 2744


Attualmente uso questo php
PHP:
$value = "<div style='background-color:$colore; width: 120px !important;' >$value</div>";


Io dovrei far cambiare solo il background e la dimensione della classe .site-score (cioè il primo quadro rosso dello screenshot) in funzione del valore di $Value e lasciare inalterato il resto. Però il div di site-score si trova nel HTML del plugin perché ce l'ho messo io in quanto non riesco ad individuare la sua posizione nel php.

Che casino, ma comunque ci siamo avvicinato molto alla soluzione finale :D
 
Ultima modifica:

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
Mi sa che non si può fare quello che chiedo io, ovvero modificare il background a seconda del punteggio non è possibile... perché sembrano tutti un unico codice.

Per ora mi limito a cambiare solo il colore numerico delle scritte in funzione del valore $Value utilizzando questo codice:

PHP:
$colore = $post_ratings_average >= 6 ? '#00FF00' : '#FF0000'; 
$value = str_replace("%RATINGS_AVERAGE%", number_format_i18n($post_ratings_average, 0), $value); 
$value = "<span style='color:$colore;' >$value</span>";

Ma serve ancora il vostro aiuto:

Potreste dirmi come impostare il colore grigio se il valore è fermo a zero.

E poi come impostare il valore giallo se è compreso tra 5 e 6.

Mentre se è inferiore a 5 deve essere rosso.

Se è superiore a 6 deve essere verde.

Anche se il colore cambia non solo per il numero ma anche per le scritte, non è un problema perché me le "gioco" con i css. So usare solo il css e un po' l'html.

Ho scritto tutti i casi possibili così sfrutterò questo tutorial per creare delle funzioni in base al colore :evil:
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
PHP:
if($post_ratings_average==0){
	$colore ="#666666";//grigio
}elseif($post_ratings_average >0 && $post_ratings_average < 5){
	$colore ="#FF0000";//rosso
}elseif($post_ratings_average >=5 && $post_ratings_average <=6){
	$colore ="#FFFF00";//giallo
}else{
	$colore ="#00FF00";//verde
}
$value = str_replace("%RATINGS_AVERAGE%", number_format_i18n($post_ratings_average, 0), $value); 
$value = "<span style='color:$colore;' >$value</span>";
però attento es. se $post_ratings_average è 0.11 diventa rosso,
forse ti conviene forzare ad intero i valori es.
if((int)$post_ratings_average==0){... e cosi sugli altri elseif
 

Lenigmista

Utente Attivo
17 Set 2015
50
2
8
Grazie di tutto. Alla fine non è male nemmeno questa soluzione, anche se il cambio di colore del background rendeva meglio l'idea.
Grazie anche per l'ultima dritta, al momento non la utilizzerò, perché i voti li ho impostati da 1 a 10, almeno su questo sono salvo.
Nel mio piccolo farò un guest post per pubblicizzarvi il sito... immagina che nemmeno l'autore del plugin mi ha voluto aiutare, che cattivone.
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Creare un testo trasparente dietro un div HTML e CSS 5
M Creare traccia di download file sul server HTML e CSS 2
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
L Creare ancore interne alla pagina PHP 1
I Creare un banner temporaneo JavaScript Javascript 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
U PHP creare un file excel dopo ricerca nel DB PHP 0
A Creare un cronometro PHP 5
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
F Creare elementi html con javascript Javascript 3
Shyson Modificare codice e creare link PHP 0
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Creare una forma geometrica Photoshop 1
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
S Libreria PHP per creare file dwg o dxf PHP 0
R Come creare sistema Add to homescreen PHP 3
L Creare un countdown con giorno specifico della settimana PHP 3
W Creare link di una dato Classic ASP 0
W creare file .jar Java 2
M Creare con il Vb 2010 Il Classico Notes di Windows Vista Visual Basic 1
MarcoGrazia Creare una password Snippet Javascript 0
J creare pagina php di prenotazione PHP 5
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
INTEROPERABILITY Sviluppatrice/formatrice creare APP Offerte e Richieste di Lavoro e/o Collaborazione 0
L Creare una pagina pre-home WordPress 1
G Creare side-bar non visibile da dispositivi mobile HTML e CSS 0
L creare oggetti da una classe tramite un form Javascript 0
Web93 CREARE SITO WEB COMICS CON WORDPRESS WordPress 0
maxnegri Contare sessioni aperte e creare condizione PHP 1
A Come creare pulsante donazione PayPal HTML e CSS 5
L [CERCO] Creare blog su WordPress con tema Divi Offerte e Richieste di Lavoro e/o Collaborazione 3
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
R [Photoshop] Creare Azione Photoshop 1
F [PHP] creare tabella e tasto cerca PHP 3
A Creare con Javascript un percorso all'interno di uno spazio Javascript 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
A [HTML] Creare sito web per eLearnig HTML e CSS 2
R Bootstrap 4 - creare una finestra di testo responsive sopra un Carousel jQuery 1
Spenalzo Creare tabelle multiple con Access via VBA MS Access 2
R [PHP] Creare sistema random PHP 3
D [PHP] Consigli su come creare form PHP 1
I Creare Qsl radioamatore con testo editabile Presentati al Forum 1
T [PHP] Creare Honeypot per form contatti PHP 10
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
Z Creare VirtualHost Apache2 con PHP? Programmazione 0
max_400 [HTML] Come creare un jpg animata (non gif animata) HTML e CSS 3
A Come creare un framset Sviluppo app per Android 1

Discussioni simili