[PHP] Intercettare ed aggiornare campi di un database

piero60

Utente Attivo
26 Gen 2015
71
2
8
Non riesco a risolvere un problema, lo spiego:

In un database ho un campo che si chiama "selected" ed è di tipo "enum" che può valere 0 oppure 1, per defaul vale 0
Un secondo campo che si chiama "deseleziona" che è un "int(15)" nel quale scrivo l'ora presa dal sistema creando la variabile $ora = time();
La variabile la creo perchè poi mi serve per altro e la utilizzo anche per questa esigenza.

Fin qui nessun problema l'utente seleziona un oggetto, viene aggioranato il database, il campo "selected" viene settato a 1 e sul campo "deseleziona" viene scritta l'ora attraverso la variabile "$ora" prima creata.

Il problema nasce nel momento in cui devo aggiornare questi 2 campi:
L'esigenza è quella di rimettere a 0 tutti i record in cui il campo "selected" è uguale a 1 ed il campo "deseleziona" contiene un valore di tempo rispetto al quale l'ora attuale del sistema è superiore di 120 secondi o più,
se è inferiore o uguale non devo aggiornare nulla

Il tempo scritto nei vari campi "deseleziona" è sicuramente differente nei vari record perchè dipende dal momento in cui è stata effettuata la selezione e conseguentemente aggiornato il database.

Ho provato e riesco a settare tutto a 0 se superato il tempo stabilito di 120 secondi, quello che non riesco a fare è settare a zero i 2 campi solo nei record nei quali effettivamente il tempo salvato nel campo "deseleziona"
è superiore di 120 secondi o più rispetto all'ora attuale del sistema.

Qualche idea?

Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.046
192
63
Lombardia
il tempo salvato nel campo "deseleziona"
è superiore di 120 secondi o più rispetto all'ora attuale del sistema
non potrà mai essere …..
forse è vero il contrario

ps, considera che time restituisce il tempo UTC non locale, (può essere un vantaggio, basta saperlo)
 

piero60

Utente Attivo
26 Gen 2015
71
2
8
Ieri sera ho fatto alcune considerazioni ed ho risolto come da codice allegato, sembrerebbe funzionare.

PHP:
<?php
$ora = time();
$sel = "0";   
$azzeratime = 0;
$ip1 = "";
 
$sql = "SELECT * FROM evento1 WHERE selected ='1'" ;
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {   
          $id = $row['id'];   
          $calcola = $row['deseleziona'];     
          
$diff = $ora - $calcola;
    
//se ora attuale > di tempo di attesa azzero il record selezionati   
if ($diff > 120 ) {

    $sql = "UPDATE evento1 SET selected='$sel', deseleziona='$azzeratime', ip_registrazione='$ip1' WHERE id='$id' ";       
      mysqli_query($conn, $sql);   
    
echo "AZZERAMENTO RECORD EFFETTUATO <br>";       
  }
 }
}
echo "NESSUN RECORD DA AZZERARE <br>";
?>
 

marino51

Utente Attivo
28 Feb 2013
3.046
192
63
Lombardia
avresti potuto risolvere anche con una sola query
Codice:
$ora = time() - 120;

$sql = "UPDATE evento1 SET selected='0', deseleziona=0, ip_registrazione='' WHERE selected='1' and deseleziona<".$ora;       

.....
con attenzione agli apici da evitare per i campi numerici
 

Rikk73

Utente Attivo
7 Apr 2015
140
6
18
Arezzo
Scusa una domanda, ma perchè tutte queste interazioni con il db? appesantisci il network rallentando anche l'app e facendo lavorare quasi inutilmente il db. Potresti utilizzare le sessioni per salvare le informazioni temporanee ed andare ad agire nel db aggiornando il time solo quando serve (a meno che non mi sfugga qualcosa, non conoscendo l'architettura del software, ma così ottimizzeresti molto)
 
Discussioni simili
Autore Titolo Forum Risposte Data
M intercettare ultimo carattere stringa con PHP PHP 5
Couting95 inserire dati da un file di testo in una tabella in php PHP 0
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 1
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 0
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4

Discussioni simili