Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: problema funzione date

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    216

    problema funzione date

    Ciao, devo fare uno script php in modo che a un'ora stabilita elimini alcuni record
    nel database mysql.
    Ho fatto così ma non elimina i record:
    Codice PHP:
    $query mysql_query("select * from links") or die (mysql_error());        

    if(
    date("G:i"time()) == "5:50")
    {
    while(
    $sql mysql_fetch_object($query))
    {
    mysql_query("delete from links where link_id = $sql->link_id") or die (mysql_error());
    }

    Naturalmente prima di questo codice c'è la connessione al database.
    Mi potreste aiutare? Grazie

  2. #2

    Re: problema funzione date

    Originariamente inviato da Bruce5000
    Ciao, devo fare uno script php in modo che a un'ora stabilita elimini alcuni record
    nel database mysql.
    Ho fatto così ma non elimina i record:
    Codice PHP:
    $query mysql_query("select * from links") or die (mysql_error());        

    if(
    date("G:i"time()) == "5:50")
    {
    while(
    $sql mysql_fetch_object($query))
    {
    mysql_query("delete from links where link_id = $sql->link_id") or die (mysql_error());
    }

    Naturalmente prima di questo codice c'è la connessione al database.
    Mi potreste aiutare? Grazie
    Non si capisce bene cio' che vorresti fare. Forse se non sono le 05:50 non deve fare nulla ma allora potresti evitare anche la SELECT.

    Tieni anche presente che date('G:i') rende l'ora senza eliminare lo 0 e quindi '05:00' e' sicuramente diverso a livello di stringa da '5:00' .

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    aldilà dell'eguaglianza che ti dice piero.mac (alias San MySql) mi pare in tutta evidenza che vuoi fare qualcosa di diverso rispetto a quel che "farebbe" lo script che hai postato...

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    216
    in pratica vorrei che a una determinata ora scelta da me, venisse eseguita la delete

  5. #5
    Originariamente inviato da Bruce5000
    in pratica vorrei che a una determinata ora scelta da me, venisse eseguita la delete
    Se si capisce bene vorresti semplicemente svuotare la tabella ad una determinata ora. Organizza un evento per l'ora destinata alla pulizia ed esegui il TRUNCATE TABLE. E' inutile scorrere la tabella per cancellare poi gli id ad uno ad uno.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Ciao piero,
    intervengo per una mia curiosità.

    Premetto che non mastico benissimo l'inglese ed ho difficoltà di consultazione del manuale ufficiale.

    La domanda è: Quale è la differenza fra "DELETE FROM tabella" e "TRUNCATE TABLE tabella"?

    Io ho, al momento, colto esclusivamente una differenza: TRUNCATE resetta la tabella rendendola uguale a quando è stata creata e ciò è rilevante nel caso in cui sia presente un campo id autoincrement relazionato ad altra tabella.
    Infatti con TRUNCATE l'id autoincrement ripartirà da 1 e, quindi, se vi sono relazioni con altre tabelle ciò porta a risultati indesiderati dato che "sballa" tutte le relazioni (mi sono spiegato malino... ma sono sicuro che tu hai inteso...).

    Ma oltre a questo?

  7. #7
    Ma se hai delle relazioni con altre tabelle e cancelli tutti i record ad uno ad uno oppure esegui un truncate table mi sai dire qual'e' la differenza riguardo a queste relazioni?

    Eseguire un truncate table ti reinizializza la tabella e oltre all'autoincrement esegue pure un optimize cancellando gli spazi vuoti nel caso di MyISAM cosa che il delete non farebbe.

    Forse la differenza che tu indichi riguardo ai possibili riferimenti sarebbe piu' valida tra un update che pone tutti i campi al default escluso l'id ed un delete/truncate. Ma che senso avrebbe la relazione con un id di un record con i campi vuoti?

    Nota poi che ho suggerito un TRUNCATE perche' viene eseguito prima un SELECT senza condizioni e quindi seleziona TUTTI i record in un result set e poi una esegue una scansione dello stesso eseguendo nn query DELETE su ogni id trovato sempre che siano le ore 5:50. Se <= 5:49 o >= 5:51 ciccia.

    Meglio un evento ad una specifica ora che esegua il truncate. that's all.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Originariamente inviato da piero.mac
    Ma se hai delle relazioni con altre tabelle e cancelli tutti i record ad uno ad uno oppure esegui un truncate table mi sai dire qual'e' la differenza riguardo a queste relazioni?

    Nota poi che ho suggerito un TRUNCATE perche' viene eseguito prima un SELECT senza condizioni e quindi seleziona TUTTI i record in un result set e poi una esegue una scansione dello stesso eseguendo nn query DELETE su ogni id trovato sempre che siano le ore 5:50. Se <= 5:49 o >= 5:51 ciccia.

    Meglio un evento ad una specifica ora che esegua il truncate. that's all.
    Hai frainteso il mio intervento... non era legata alla specifica richiesta dell'utente in cui era palese l'errore della sua "procedura"... era una mia curiosità "extra topic" sul TRUNCATE

    Originariamente inviato da piero.mac
    esegue pure un optimize cancellando gli spazi vuoti nel caso di MyISAM cosa che il delete non farebbe.
    purtroppo non sò cosa sia myISAM (farò qualche ricerca... grrrrrr... inglese di M)

    Originariamente inviato da piero.mac
    Forse la differenza che tu indichi riguardo ai possibili riferimenti sarebbe piu' valida tra un update che pone tutti i campi al default escluso l'id ed un delete/truncate. Ma che senso avrebbe la relazione con un id di un record con i campi vuoti?
    Mi sono un pò perso qui. Per come ho interpretato tu dici che il problema che io ho esposto si presenta (soprattutto) quando faccio un update impostando tutti valori di default anche al campo id...
    mmm... si... ma io (perdonami la mia non professionalità) quando metto un id autoincrement ad una tabella imposto il campo come primary key così che "blocco" update di questo genere... o sbaglio qualcosa?

  9. #9
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    MyISAM è uno dei motori di database supportati da MySQL (storage engine è in inglese ma se lo fai tradurre a google è abbastanza comprensibile)

    Differenze tra truncate e delete ... il manuale MySQL sulla truncate spiega quel che chiedi.
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  10. #10
    Originariamente inviato da oly1982
    Mi sono un pò perso qui. Per come ho interpretato tu dici che il problema che io ho esposto si presenta (soprattutto) quando faccio un update impostando tutti valori di default anche al campo id...
    mmm... si... ma io (perdonami la mia non professionalità) quando metto un id autoincrement ad una tabella imposto il campo come primary key così che "blocco" update di questo genere... o sbaglio qualcosa?
    Non mi saro' spiegato troppo bene.

    truncate table = resetta la tabella ai primordi.
    delete from table = cancella solo i record presenti lasciando le altre cose cosi' come sono.

    update = mantiene i record aggiornando il contenuto a quello che ti pare.

    La tua eccezione su tabelle con riferimenti esterni quindi non regge. Se cancelli ... cancelli ed il riferimento sparira' sia se usi delete sia se usi truncate. Ok? Vuoi mantenere il record di riferimento per motivi previsti dal progetto? Allora usa update lasciando i record dove sono.

    Non esiste un "sopratutto" e manco "un blocchi di update". O cancelli (delete - truncate) o mantieni il record (update). Se usi il motore InnoDB puoi impostare l'integrita' referenziale con le foreign keys, se usi il motore MyISAM ci dovrai pensare da te all'integrita' del riferimento.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.