• Home
  • Forum
  • Fare Web
  • PHP

modificare il valore di un campo in un array

  • Creatore Discussione Creatore Discussione Ebongué André
  • Data di inizio Data di inizio 1 Feb 2012
  • Tag Tag
    array date php
  • 1
  • 2
Succ.
1 di 2 Succ. Ultimo
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 1 Feb 2012
  • #1
Ciao a tutti, questo è il mio primo post e spero di aver ben assimilato le regole del forum.
Allora premetto che non sono un phper ma un abaper...:mavieni: ma sto cercando di modificare un script php la gestione dei abonamenti a un sito. In pratica gli abbonamenti sono annuali ma vorrei inserirne uno che finisca sempre e comunque il 31/12 dell'anno di sottoscrizione.
i parametri dell'abbonamento sono contenuti una tabella ed li estraggo in array il prezzo viene calcolato con una funzione che fa cosi
Codice:
     function get_pricingarray() {

         $levels = $this->get_levels();

         $prices = array();

         foreach( (array) $levels as $key => $level ) {

            if($level->sub_type == 'indefinite') {
               // This will be the last item in any list
               $prices[] = array( 'period' => $level->level_period, 'amount' => $level->level_price, 'type' => $level->sub_type, 'unit' => $level->level_period_unit);
               break;
            } elseif($level->sub_type == 'serial') {
               // This will be the last item in any list
               $prices[] = array( 'period' => $level->level_period, 'amount' => $level->level_price, 'type' => $level->sub_type, 'unit' => $level->level_period_unit);
               break;
            } else {
               $prices[] = array( 'period' => $level->level_period, 'amount' => $level->level_price, 'type' => $level->sub_type, 'unit' => $level->level_period_unit);
            }
         }

         if(!empty($prices)) {
            return $prices;
         } else {
            return false;
         }

      }
la durata del contratto è il level_period per tutti i casi è fissato giustamente à 365 (giorni).
Non potendo inserire in tabella una durata variabile (il numero di giorni dal momento della sottoscrizione alla fine dell'anno), mi sono detto che potrei modificare runtime il valore nel array per avere la durata giusta.
1) posso farlo ? se si mi potete guidare nella sintassi che il mio php è parecchio arruginito...
2) esiste une funzione che mi permetta di calcolare il numero di giorni a la fine dell'anno e come usarla in questo caso?
spero di non aver esagerato con le domande e sopratutto di essere stato chiaro....grazie in anticipo.
per chi volesse potrei anche mandare lo script completo che magari ad altri potrebbe servire...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 1 Feb 2012
  • #2
ciao
potresti provare a usare che ritorna i giorni passati dall'inizio dell'anno
PHP:
<?php
$gg=365;
if(date('L')==1){
	$gg=366;
	echo "l'anno è bisestile: $gg<br>";
}else{
	echo "l'anno non è bisestile: $gg<br>";
}
$passati=date('z');
echo "passati: ".$passati."<br>";
echo "rimangono: ".($gg-$passati)."<br>";
?>

p.s.
usa il tag php, non code, per il php
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 1 Feb 2012
  • #3
A me era venua in mente una funzioncina così

PHP:
function quanto_manca() {

    $ultimo_dell_anno = date('Y') . "-12-31";

    $query = "SELECT DATEDIFF('$ultimo_dell_anno',CURDATE()) as giorni";
    $res = mysql_query($query);

    $row = mysql_fetch_assoc($res);

    return $row['giorni'];
}

echo "Mancano " . quanto_manca() . " giorni alla fine dell'anno";
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 1 Feb 2012
  • #4
grazie ad entrambi

un ultima domandina come riesco a modificare nel array il valore del level_period con il valore calcolato ('period' => $level->level_period)?
non so se come sintassi possà andare bene nello script...
...
} else {
--->calcolo il lavore $giorni
$level = $giorni;
$prices[] = array( 'period' => $level->level_period, 'amount' => $level->level_price, 'type' => $level->sub_type, 'unit' => $level->level_period_unit);

può funzionare? scusatemi se non provo ma sono col cell tornando a casa...se il concetto è corretto appena arrivato provo!
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 1 Feb 2012
  • #5
La sintassi è corretta, quindi se il codice è anche semanticamente corretto dovrebbe funzionare.
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 1 Feb 2012
  • #6
ottimo!!

volendo usare la funzioncina devo solo vedere come chiamarla ma direi che googleando o guardando nella sezione tutorial dovrei trovare come chiamare una funzione in php nella else, immagino sia una require o qualcosa del genere...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 1 Feb 2012
  • #7
Se la inserisci nella stessa classe di get_pricingarray()


PHP:
$giorni = $this->quanto_manca();

dovrebbe funzionare
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 1 Feb 2012
  • #8
Grazie!!!

funziona perfettamente! Grazie ancora.
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 1 Feb 2012
  • #9
ne approfito un pò...

ragazzi già che ci sono approfitto della vostra gentilezza, mi è si è detto che mi sono complicato la vita che avrei potuto semplicemente create un evento recursivo (frequenza giornaliera) in phpmyadmin per cambiare il numero di giorni direttamente nella tabella. Trovo interessante come soluzione ( avendo tutti i dritti su phpmyadmin).
Che ne dite? mi sto documentando per capire eventualmente come sarebbe la sintassi per la creazione di un evento...
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 1 Feb 2012
  • #10
Un buon punto di partenza è la documentazione di MySQL sugli eventi. Ovviamente adottando questa soluzione l'applicazione perde portabilità, ma te ne devi preoccupare solo se pensi di poter, un giorno, cambiare RDBMS.
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 1 Feb 2012
  • #11
grazie

ho iniziato in effetti a vedere la documentazione e leggendo mi sono imbatutto sul cron ed avendo cpanel, ho creato un cron che richiama la un php con la funzione di update. adesso devo testare la cosa per vedere se va...
Comunque mi studio la sintassi degli eventi in phpmyadmin che mi possono sempre servire se mi dovesse imbattere di nuovo in un script php del genere...
Inconvenienti di cron??? a me sembra assai flessibile.
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 2 Feb 2012
  • #12
euuuhh...

ancora io, la sintassi di php è ancora assai ostica, vorrei fare una piccola modifica alla function ed eseguire all'interno l'update di un valore dentro la tabella con il $row['giorni'].
in pratica se faccio
$var = quanto_manca();
$update = mysql_query("UPDATE wp_m_subscriptions_levels SET level_period=$var WHERE level_id='4'");
va tutto liscio , ma vorrei effettuare l'update direttamente dentro la funzione ( vorrei richiamare la function nel cron).
non riesco a modificare la sintassi...
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 2 Feb 2012
  • #13
ho provato cosi

$ultimo_dell_anno = date('Y') . "-11-31";
$update = mysql_query("UPDATE wp_m_subscriptions_levels
SET level_period=DATEDIFF('$ultimo_dell_anno',CURDATE())
WHERE level_id='4'");

update la tabella ma con un valore null... dove sbaglio?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 2 Feb 2012
  • #14
ciao
il sistema migliore per vedere dove sbagli, anche perchè lo script sembrerebbe sintatticamente corretto, è dividere la query e mettere dei var_dump
PHP:
<?php
$ultimo_dell_anno = date('Y') . "-11-31";
var_dump($ultimo_dell_anno);
$q="UPDATE wp_m_subscriptions_levels SET level_period = DATEDIFF('$ultimo_dell_anno',CURDATE()) WHERE level_id='4'"
var_dump($q);
$update = mysql_query($q);
?>
e verificare cosa riportano, cioe quello che vuoi tu
soprattutto il secondo che dovrebbe riportarti (metto dei numeri a caso)
string(76) "UPDATE wp_m_subscriptions_levels SET level_period = '155' WHERE level_id='4'"
Clicca per allargare...
anche se (forse e dico forse) l'inghippo potrebbe essere negli apici
PHP:
<?php
$q="UPDATE wp_m_subscriptions_levels SET level_period = 'DATEDIFF($ultimo_dell_anno,CURDATE())' WHERE level_id='4'"
?>
tra l'altro se i valori sono numeri interi (come valore e come tipo del campo) gli apici non servirebbero
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 2 Feb 2012
  • #15
interpetrare il risultato

seguendo il tuo consiglio ho modificato il codice cosi
Codice:
  $ultimo_dell_anno = date('Y') . "-11-31";
    var_dump($ultimo_dell_anno);
    $update = mysql_query("UPDATE wp_m_subscriptions_levels
                          SET level_period=DATEDIFF($ultimo_dell_anno,CURDATE())
                          WHERE level_id=4");
  var_dump($update);
$esito = mysql_query($update);
ottenendo questo:
string(10) "2012-11-31" bool(true)
che se capisco bene, il valore di ultimo_giorno è corretto la query est true...ma update con NULL
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 2 Feb 2012
  • #16
ciao
per quello che ti avevo detto di dividere la query
ti da bool(true) perchè effettua la query, ma mettendoti il campo vuoto
mettendo
PHP:
$q="UPDATE wp_m_subscriptions_levels SET level_period = DATEDIFF('$ultimo_dell_anno',CURDATE()) WHERE level_id='4'" 
var_dump($q);
se il var dump ti restituisce
string(73) "UPDATE wp_m_subscriptions_levels SET level_period = '' WHERE level_id='4'"
Clicca per allargare...
ti accorgi che l'errore potrebbe essere in DATEDIFF('$ultimo_dell_anno',CURDATE())
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 2 Feb 2012
  • #17
in effetti

restistuisce la stringa, quindi devo modificare qualcosa al livello sintassico, magari qualche apice che manca mi riguardo il manuale di sintassi.
Mi ci metto, grazie per l'aiuto.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 2 Feb 2012
  • #18
ciao
ohoops, visto il possibile errore:
30 di conta novembre con april giugno e settembre, di 28 cenè uno TUTTI gli altri ne han 31

l'ultimo dell'anno è
$ultimo_dell_anno = date('Y') . "-12-31";
 
E

Ebongué André

Utente Attivo
1 Feb 2012
42
0
0
Milan, Italy, Italy
www.promoshake.com
  • 2 Feb 2012
  • #19
si si

questo era voluto...dato che avevo il dato di dicembre in tabella..
cerco di semplicare, se io volessi mettere il risultato di diffdate dentro una variabile,
la sintassi dovrebbere essere
$var = DATEDIFF($ultimo_dell_anno,CURDATE());?
ho questo errore di sintassi: Call to undefined function datediff() ho davvero bisogno di riprendere la sintassi dalle fondamenta...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 2 Feb 2012
  • #20
ciao
ti da quell'errore perchè DATEDIFF non è una funzione nativa di php quindi cerca un qualcosa tipo dentro il tuo script
PHP:
function DATEDIF(){
//............
}
non trovandola ti da errore
prova una cosa del genere
PHP:
<?php
$ultimo_dell_anno = date("Y")."-12-31";
$oggi = date("Y-m-d");
$intervallo=date_diff($ultimo_dell_anno,$oggi);//devi avere PHP 5 >= 5.3.0
//e verifichi
var_dump($intervallo);
?>
 
  • 1
  • 2
Succ.
1 di 2 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

modificare il valore dellascroll bar di webkit
  • napuleone
  • 31 Lug 2022
  • HTML e CSS
Risposte
8
Visite
1K
HTML e CSS 7 Set 2022
akhilex791
A
P
php jquery ajax per modificare valore in un databe
  • paskuale
  • 6 Giu 2014
  • Ajax
Risposte
1
Visite
2K
Ajax 8 Giu 2014
paskuale
P
M
Php+MySql: Estrarre dati da tabella e consentire all'utente di modificare un valore 'in linea'
  • malela
  • 20 Mar 2014
  • PHP
Risposte
6
Visite
8K
PHP 24 Mar 2014
malela
M
S
ricavare valore get e modificare css
  • Salvo Salvi
  • 22 Mar 2013
  • PHP
Risposte
3
Visite
1K
PHP 22 Mar 2013
Salvo Salvi
S
S
Modificare la tonalità di una foto
  • sgrebs70
  • 13 Feb 2025
  • Photoshop
Risposte
0
Visite
185
Photoshop 13 Feb 2025
sgrebs70
S
M
[cerco webmaster] sito web da modificare
  • moicans
  • 24 Gen 2023
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
1K
Offerte e Richieste di Lavoro e/o Collaborazione 24 Gen 2023
moicans
M
G
Come modificare un pdf in php
  • Gabriele Sorbello
  • 29 Ago 2022
  • PHP
Risposte
1
Visite
2K
PHP 2 Set 2022
marino51
Modificare codice e creare link
  • Shyson
  • 5 Mag 2021
  • PHP
Risposte
0
Visite
1K
PHP 5 Mag 2021
Shyson
J
Modificare panorami 360 ps 2020
  • JULIANALVARO
  • 14 Gen 2021
  • Photoshop
Risposte
0
Visite
892
Photoshop 14 Gen 2021
JULIANALVARO
J
modificare il contenitore di un div
  • napuleone
  • 9 Gen 2021
  • Javascript
Risposte
2
Visite
1K
Javascript 9 Gen 2021
napuleone
  • Bloccata
modificare il contenitore di un div
  • napuleone
  • 9 Gen 2021
  • Javascript
Risposte
1
Visite
963
Javascript 9 Gen 2021
Max 1
D
modificare questo codice per inserimento in text e non in tabella
  • Domenico2013
  • 22 Ott 2020
  • jQuery
Risposte
1
Visite
3K
jQuery 23 Ott 2020
Domenico2013
D
C
modificare sito in locale con dreamWeaver
  • Cpu03
  • 28 Lug 2020
  • HTML e CSS
Risposte
3
Visite
2K
HTML e CSS 21 Ott 2020
ServWise.com
S
T
Modificare ruolo utenti in fase di registrazione
  • Tino85
  • 15 Lug 2020
  • E-Commerce
Risposte
0
Visite
2K
E-Commerce 15 Lug 2020
Tino85
T
M
modificare un file .XML da database Sql
  • Maxilboss93
  • 9 Giu 2020
  • PHP
Risposte
13
Visite
2K
PHP 10 Giu 2020
Maxilboss93
M
S
Modificare intestazione documento pdf con LO Draw
  • soom2545
  • 5 Giu 2020
  • Linux e Software
Risposte
0
Visite
2K
Linux e Software 5 Giu 2020
soom2545
S
Radio button e Bootstrap: modificare il colore di default!
  • felino
  • 23 Mag 2020
  • HTML e CSS
Risposte
1
Visite
3K
HTML e CSS 25 Mag 2020
felino
Modificare funzione php
  • Shyson
  • 2 Apr 2020
  • PHP
Risposte
15
Visite
2K
PHP 3 Apr 2020
marino51
W
Modificare il Type di un Input box in javascript ovunque si trovi
  • webmasterone
  • 18 Dic 2019
  • Javascript
Risposte
0
Visite
2K
Javascript 18 Dic 2019
webmasterone
W
F
Modificare report di etichette di access con vba
  • forlario
  • 7 Nov 2019
  • MS Access
Risposte
0
Visite
2K
MS Access 7 Nov 2019
forlario
F
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?