Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da Talion
    Non puoi creare dinamicamente un trigger che vada a fare il controllo sulla corretta sintassi del campo quando l'utente sceglie il tipo "Email" da CMS/Creazione Tabella?

    Una soluzione potrebbe essere:

    User sceglie campo con tipo di dato Email in fase di creazione da GUI.

    Se tipo di dato == Email --> creo trigger on before insert (che fa controllo su nome campo scelto da user)
    trigger --> richiama una SP che faccia il controllo sintattico del campo . Se il campo non è corretto tramite SIGNAL raise dell'errore o quello che ti serve
    altrimenti COMMIT del dato.
    ??? Se parliamo di mysql non serve alcuna stored, va tutto nel trigger.
    E, tra l'altro, non mi sembra particolarmente "furbo", visto che - da quanto ho capito - l'applicazione ha un sorgente che può modificare.
    perfino con javascript si vuol poco a parsare un campo email

  2. #12
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Originariamente inviato da lanciafiamme
    ??? Se parliamo di mysql non serve alcuna stored, va tutto nel trigger.
    Perchè in questo caso il trigger ha 3 righe di codice oggi, e se deve fare n operazioni che fai? E se decide di espandere i controlli amplificandone la complessità?Scrivi 200 righe di trigger? Puoi benissimo scrivere una classe con un solo metodo e 10000 righe di codice o fare n classi e n metodi, ovviamente la prima la scarto a priori, personalmente preferisco impostare bene da subito le cose e non tacconare dopo. Stesso discorso per Trigger/SP. Tra l'altro la sp potrebbe essere riusabile venendo parametrizzata.


    Ritornando in tema ha chiesto una possibile gestione del campo email, ovvio che ci sono n modi diversi per gestirlo, potrebbe anche forzare il nome del campo nel db mettendogli il suffiso email e poi gestirlo da codice. Potrebbe benissimo usare jquery lato client, php e via discorrendo, ma dato che ha scritto nella sezione database ho dato una soluzione che gestisse il campo da DB

  3. #13
    Grazie a tutti per le risposte.
    Vi vado a chiarire cosa può fare il cliente con il CMS in modo da trovare la soluzione...

    Il cliente si crea la sua tabella con tutti i dati che vuole nome cognome email città etc ...
    e per l'inserimento di un singolo record non ho problemi ad gestirlo perchè è già presente il problema sta quando eseguo l'import da una texarea.

    il cliente incolla in una textarea una lista di email nella pagina successiva vede l'email riconosciute a quel punto seleziona la tabella su cui importare i dati e da qui io dovrei beccare il campo email ed eseguire l'insert solo sul campo mentre gli altri dati saranno null.

    Spero di essere stato abbastanza chiaro.

    Io ho pensato di dare la possibilità di creare un tipo di tabella "mailing" e la sua struttura sarà solo id codeUnivoco Email e di questa non può modificare nulla solo inserire record o import ed esport.

  4. #14
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Pensavo ti servisse un campo email che controllasse la sintassi della mail in fase di insert

    Ma la tabella la crea da pagina web? Se è cosi immagino che scelga anche il tipo del campo (int, varchar, date, datetime, ecc...) a cui puoi aggiungere il campo virtuale email.
    Se è cosi una possibile soluzione potrebbe essere quella aggiungere il suffisso _EMAIL al nome del campo che deve gestire la mail e in fase di fase di insert ti fai prima la query "select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where table_name='tabella';"

    ti cerchi il campo col suffiso _EMAIL nel resulset e a questo punto sai qual'è il campo che l'utente ha scelto come campo email. Altrimenti puoi fare una tabella di configurazione KEY-VALUE (in cui potrai poi inserire altri valori di configurazione) che ti dica qual'è il campo email scelto dall'utente.

  5. #15
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da Talion
    Perchè in questo caso il trigger ha 3 righe di codice oggi, e se deve fare n operazioni che fai? E se decide di espandere i controlli amplificandone la complessità?Scrivi 200 righe di trigger? Puoi benissimo scrivere una classe con un solo metodo e 10000 righe di codice o fare n classi e n metodi, ovviamente la prima la scarto a priori, personalmente preferisco impostare bene da subito le cose e non tacconare dopo.
    Non mi è chiarissimo cosa cambi, niente del tutto direi, visto che le 10000 righe di codice ci vogliono nell'uno e nell'altro caso, e che chiamare una stored da un trigger mysql - che è lento già di suo operando su TUTTE le righe - vuol dire rallentare il database in ogni operazione che faccia "scattare" il trigger.
    Questo è mysql, non SQL server.

  6. #16
    Si è tutto dal web e può scegliere il tipo di campo.
    Allora vedrò di applicare il tuo consiglio e andrò ad inserire un suffisso email e farò la query al db information_schema.

    per ora vedo se riesco ad eseguire il tutto con l'import e qualche campo in più.

    Grazie

  7. #17
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    150
    Originariamente inviato da simone.marchese
    Grazie a tutti per le risposte.
    Vi vado a chiarire cosa può fare il cliente con il CMS in modo da trovare la soluzione...

    Il cliente si crea la sua tabella con tutti i dati che vuole nome cognome email città etc ...
    e per l'inserimento di un singolo record non ho problemi ad gestirlo perchè è già presente il problema sta quando eseguo l'import da una texarea.

    il cliente incolla in una textarea una lista di email nella pagina successiva vede l'email riconosciute a quel punto seleziona la tabella su cui importare i dati e da qui io dovrei beccare il campo email ed eseguire l'insert solo sul campo mentre gli altri dati saranno null.

    Spero di essere stato abbastanza chiaro.

    Io ho pensato di dare la possibilità di creare un tipo di tabella "mailing" e la sua struttura sarà solo id codeUnivoco Email e di questa non può modificare nulla solo inserire record o import ed esport.
    Bhè siamo sempre lì.
    Se esiste UNO, e UN SOLO campo email, ed il tuo problema è che non sai come si chiama, metti da "qualche parte" il nome del campo e buonanotte.

    Chessò la tabella si chiama
    tabellascema con campi nome,cognome,emailstrana

    e tu vuoi mettere "qualcosa" dentro il campo emailstrana.
    Bene, fai una tabella
    "configurazione" dove ci metti un campo nomecampoemail in questo caso con "emailstrana" e lo leggi da lì
    (un po' come fosse un puntatore... eehehhee pure C sto studiando)


    Perchè altrimenti vorresti fare una sorta di DESCRIBE per capire quale sia il campo email. Qui davvero i suggerimenti di usare elementi distintivi sono davvero "sporcaccioni", e non lo farei

  8. #18
    Sto utilizzando solo il DESCRIBE per renderlo il più dinamico possibile, in questo modo il cliente non dovrebbe avere limiti.

    E può crearsi una tabella per le proprie mailing list o raccolta dati o un piccolo db grazie a chiavi esterne etc ..

  9. #19
    Originariamente inviato da Talion
    COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where table_name='tabella';"
    Una volta eseguita questa query come faccio a cercare il campo con il suffisso EMAIL sto provando con implode dell'array e poi con stripos ma mi restituisce la posizione e a me interessa il nome del campo che è composto dal soffisso EMAIL.

    Quindi dal numero che mi da il stripos sino al prossimo ; come potrei fare?

  10. #20
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    non puoi fare un loop sull'array restituito dalla query e usare strpos? O in alternativa modifichi la query e metti la condizione direttamente li cosi ti restituisce un solo record

    codice:
    select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where table_name='tabella' AND 
     COLUMN_NAME LIKE '%_EMAIL'
    Se il suffisso _EMAIL lo metti in fondo. Questo presuppone che puoi specificare un solo campo email e che il suffisso _EMAIL non possa essere usato come "terminatore" di nome di altri campi nella creazione della tabella

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 © 2026 vBulletin Solutions, Inc. All rights reserved.