Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    funzione alternativa a str_to_date (causa bug della funzione)

    Codice PHP:
    SELECT 
    option_name
    ,
    class_options.optionid,
    variants.avail,
    STR_TO_DATE(option_name'%W %D %b %Y,%l.%i%p') as day_of_tour,
    MONTHNAME(STR_TO_DATE(option_name'%W %D %b %Y,%l.%i%p')) as month_of_tour
    FROM database
    .variants
    JOIN database
    .variant_items USING (variantid)
    JOIN database.class_options USING (optionid)
    WHERE productcode LIKE 'vatican%'
    ORDER BY day_of_tour
    ottengo risultati del genere (vedi allegato)

    solo che alle volte, a intervalli di tempo completamente irregolari, la funzione str_to_date mi ritorna NULL, quindi mi fallisce tutta la funzione! (che si basa sulla costruzione di select con day_of_tour).

    La cosa buffa è: facendo la query tramite command line sul server alle volte ritorna NULL le ultime due (str_to_date e monthname) poi magari 10 minuti dopo ritorna i dati corretti. E anche quando ritorna i dati corretti, tramite browser mi ritorna ancora NULL!!

    insomma, è un casino stranissimo boia, ma perchè tutte a me le cose strane!!

    Per questo devo trovare un alternativa in mysql al comando str_to_date che incasina tutto.. qualche consiglio?
    Vorrei evitare di costruire tutto in php perchè sarebbe troppo lento, ho troppi dati da caricare
    Immagini allegate Immagini allegate
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    up
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  3. #3
    Originariamente inviato da blekm
    up
    Se ti ritorna NULL e' perche' il formato della stringa non corrisponde a quella prevista per formare la data. verifica spazi eventuali prima e dopo la stringa stessa quando ricevi un NULL.

    Escluderei una malf di str_to_date. Da mysql 5.0.3 dovresti ricevere un warning in caso di errore della funzione. attiva mysql_error() sulla query

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

  4. #4
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da piero.mac
    Se ti ritorna NULL e' perche' il formato della stringa non corrisponde a quella prevista per formare la data. verifica spazi eventuali prima e dopo la stringa stessa quando ricevi un NULL.
    non vi sono errori del genere, perchè se provo a fare un

    codice:
    str_to_date('Saturday 5 May 2009,1.45pm' '%W %D %b %Y,%l.%i%p');
    restituisce sempre risultato.
    Però adesso magari la query iniziale dà null, dopo 10 minuti ritorna tutti i valori. Senza che io abbia cambiato niente

    Qualcosa di cache? boh
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  5. #5
    Originariamente inviato da blekm
    non vi sono errori del genere, perchè se provo a fare un

    codice:
    str_to_date('Saturday 5 May 2009,1.45pm' '%W %D %b %Y,%l.%i%p');
    restituisce sempre risultato.
    Però adesso magari la query iniziale dà null, dopo 10 minuti ritorna tutti i valori. Senza che io abbia cambiato niente

    Qualcosa di cache? boh
    Appunto. Se metti la stringa sicuramente corretta funziona. La domanda era invece sul contenuto del campo.

    Cerca di localizzare e dare una logica all'errore. Ripeto, attiva mysql_error() se hai mysql >= 5.0.3

    Dopo 10 minuti ritorna tutti i valori ... ma la stringa e' la stessa oppure nei 10 minuti e' cambiata?

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

  6. #6
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da piero.mac
    Appunto. Se metti la stringa sicuramente corretta funziona. La domanda era invece sul contenuto del campo.

    Cerca di localizzare e dare una logica all'errore. Ripeto, attiva mysql_error() se hai mysql >= 5.0.3

    Dopo 10 minuti ritorna tutti i valori ... ma la stringa e' la stessa oppure nei 10 minuti e' cambiata?
    mysql_error è attivo, ma non ricordo errori segnalati.

    Le stringhe sono sempre le stesse, ma oltre al fatto che a distanza di 10 minuti la cosa funziona e poi no, quando magari funziona, poi tramite browser (funzione php che crea codice html a partire da quella query) non funziona. :master:
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  7. #7
    Originariamente inviato da blekm
    Le stringhe sono sempre le stesse, ma oltre al fatto che a distanza di 10 minuti la cosa funziona e poi no, quando magari funziona, poi tramite browser (funzione php che crea codice html a partire da quella query) non funziona. :master:
    Questa non l'ho capita. con phpmyadmin funziona sempre? (ma e' anche lui uno script php solo che usa il suo script e nessuna variabile per la query).

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

  8. #8
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da piero.mac
    Questa non l'ho capita. con phpmyadmin funziona sempre? (ma e' anche lui uno script php solo che usa il suo script e nessuna variabile per la query).
    io ho ~100 stringhe nel db (option_name nell'immagine del primo post), e poi ho uno script php che per ogni riga genera del codice html, alla fine ottengo una select per ogni mese con l'elenco delle date mensili e la disponibilità.

    Ora, è successo per puro caso che ho scoperto che la pagina web non funziona, ritorna un messaggio di errore che ho inserito nel caso in cui day_of_tour fosse NULL.

    Apro putty, mi collego al server remoto, accedo a mysql ed eseguo la query. Effettivamente le ultime due colonne ritornano null. Passano 10 minuti (è un tempo indicativo) rieseguo la query come prima, e stavolta le ultime due colonne non sono più NULL, ma ritornano le date giuste. Senza che io abbia cambiato nulla o fatto qualche modifica, ho solo fatto passare N minuti.

    Allo stesso tempo, sia quando la query funziona e quando non funziona, la pagina web che usa la query per generare codice html restituisce l'errore, il che significa che day_of_tour è NULL. Mentre eseguendo direttamente la query funziona (ora, 10 minuti fa no )

    spero di essermi spiegato meglio
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  9. #9
    Non e' semplice far quadrare questo cerchio.

    Ti dico quello che farei. Visto che utilizzi (INNER) JOIN su due tabelle comincerei ad eseguire la query esclusivamente sulla tabella che contiene option_name. Tra l'altro .... a che ti serve fare quelle due JOIN? Ed in quale tabella hai il campo option_name?

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

  10. #10
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da piero.mac
    Ti dico quello che farei. Visto che utilizzi (INNER) JOIN su due tabelle comincerei ad eseguire la query esclusivamente sulla tabella che contiene option_name. Tra l'altro .... a che ti serve fare quelle due JOIN? Ed in quale tabella hai il campo option_name?
    queste sono le tabelle con i campi che mi servono

    variants (variantdid, productid, avail)
    class_options (optionid, classid, option_name)
    variant_items (optionid, variantid) ha solo questi due campi

    capisci a cosa mi servono le due join? in class_options non ho il collegamento diretto con variants (dove pesco productcode per il controllo) ma devo passare per variant_items che contiene solo le associazioni tra optionid e variantid

    se faccio questa query (come da te suggerito)

    Codice PHP:
    select option_name,
    STR_TO_DATE(option_name'%W %D %b %Y,%l.%i%p') as day_of_tour 
    from class_options 
    where classid
    >=645 && classid <=668//questa giusto per ottenere le righe con le date 
    sia in locale che online (appena provato, tra 10 chissà?) funzionano senza problemi
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

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.