Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517

    Problemi con query DELETE

    Salve ragazzi , volevo sapere se era possibile realizzare una query che eseguisse il delete se :

    codice:
    DELETE FROM magazzino_materie_prime WHERE (nome_materia_prima='$nome_articolo' AND quantita='0.0' AND data_arrivo=//data_arrivo + 5 anni
    E' possibile?

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    E perche' no... cmq non credo che sia il forum corretto qui e' piu' sql che php.

    Il controllo lo puoi fare in molti modi diversi in parte o completamente dipendenti dal tipo della colonna data_arrivo

    La soluzione piu' veloce che mi venga in mente risiede con un controllo parziale via codice che pre-formatta la data in formato unix. Ovviamente cio' funziona solo ed esclusivamente se la colonna data_arrivo e' di tipo date , dateTime o TIMESTAMP.


    Codice PHP:
    // Carico la timestamp per oggi
    $today date"Y-m-d" time() ) ;
    // Aggiungo 5 anni 
    $limitFiveYears $today+( 365*86400 ) ;
    // Creo la data unix
    $limitDate date("Y-m-d",$limitFiveYears) ;

    // Se la colonna invece e' dateTime o TIMESTAMP conviene 
    // esplicitare anche ore,min e sec per avere una sicurezza maggiore che anche 
    // ore,min e sec siano corretti
    $limitDate date("Y-m-d",$limitFiveYears)." 00:00:00" ;

    //Quindi imposti il limite nella query nell'opprtuno filtro 
    in alternativa ti conviene usare le funzioni mysql (che cmq e' consigliato).
    Anche perche' devi considerare gli anni bisesitili e ore solari/legali.

    Innanzitutto inizia controllando il man mysq per quanto riguarda il tipo di data che gestisci se non hai dimestichezza con questo tipo di dati : http://dev.mysql.com/doc/refman/5.0/en/datetime.html

    Poi le funzioni per gestire le date (sempre mysql)
    http://dev.mysql.com/doc/refman/5.1/...functions.html

    Poni atenzione alle seguenti funzioni che forse ti possono risolvere il problema :
    FROM_UNIXTIME()
    MAKEDATE()
    TIMESTAMPADD()
    UNIX_TIMESTAMP()
    ADDDATE()

    Gud Lac

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    grazie mille virus 101 sei stato gentilissimo, appena provo e trovo la soluzione t faccio sapere.

    grazie ancora e ciao

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Np, fammi sapere come va a finire .

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    virus , sto provando questa soluzione :

    codice:
    $query3=mysql_query("SELECT id_materia_prima,data_arrivo FROM magazzino_materie_prime WHERE (nome_materia_prima='$nome_articolo' AND quantita='0.0')");
    while($nomi=mysql_fetch_object($query3)){
     $query4=mysql_query("DELETE FROM magazzino_materie prime WHERE (id_materia_prima='$nomi->id_materia_prima' AND (SELECT CURTIME())=(SELECT ADDDATE( '$nomi->data_arrivo', INTERVAL 5 year )))");
    }
    ma alla query4 mi da questo errore:

    #1064 - You have an error in your SQL syntax ma non capisco dove

  6. #6
    codice:
    magazzino_materie prime
    Un po' di attenzione in più non guasterebbe!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    satifal hai ragione, scusami e grazie.

    Virus_101 ho risolto in questa maniera

    codice:
    $query3=mysql_query("SELECT id_materia_prima,data_arrivo FROM magazzino_materie_prime WHERE (nome_materia_prima='$nome_articolo' AND quantita='0.0')");
    while($nomi=mysql_fetch_object($query3)){
     $query4=mysql_query("DELETE FROM magazzino_materie_prime WHERE (id_materia_prima='$nomi->id_materia_prima' AND (SELECT CURTIME())<(SELECT ADDDATE( '$nomi->data_arrivo', INTERVAL 5 year )))");
    }
    grazie per i consigli

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Eccomi e' una soluzione che sfrutta le funzioni sql ... sappi che i conteggi delle date li deleghi al db i conti sulle date, tutto là. Se funge daghene ;D

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    scusa virus non ho capito cosa intendi dire

  10. #10
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Originariamente inviato da il pupo
    satifal hai ragione, scusami e grazie.

    Virus_101 ho risolto in questa maniera

    codice:
    $query3=mysql_query("SELECT id_materia_prima,data_arrivo FROM magazzino_materie_prime WHERE (nome_materia_prima='$nome_articolo' AND quantita='0.0')");
    while($nomi=mysql_fetch_object($query3)){
     $query4=mysql_query("DELETE FROM magazzino_materie_prime WHERE (id_materia_prima='$nomi->id_materia_prima' AND (SELECT CURTIME())<(SELECT ADDDATE( '$nomi->data_arrivo', INTERVAL 5 year )))");
    }

    grazie per i consigli
    non c'è bisogno che fai delle subquery per selezionare i valori di CURTIME() e ADDDATE(), che tipo di dato è data_arrivo?
    codice:
    DELETE 
        FROM magazzino_materie_prime 
    WHERE 
        id_materia_prima='$nomi->id_materia_prima' 
    AND 
        CURDATE() < ADDDATE( '$nomi->data_arrivo', INTERVAL 5 year)
    non so cosa contenga "$nomi->data_arrivo", ma questa è corretta?
    codice:
    ADDDATE( '$nomi->data_arrivo', INTERVAL 5 year)
    intendi questo?
    codice:
    ADDDATE( `data_arrivo`, INTERVAL 5 year) //backstics opzionali

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.