[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.204
207
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.204
207
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
141
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
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

Discussioni simili