Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Convertire campo Vuoto in NULL

    Ciao a tutti,
    spero di non postare OT e soprattutto di non inserire un argomento già trattato, anche se non mi par di aver trovato nulla.
    Ho un problema che non riesco a risolvere.
    Sto realizzando un form che deve caricare alcune informazioni su un database, il problema è che alcune di queste informazioni sono condizionali, quindi certe volte ci possono essere altre, esiste una funzione per far sì che quando il campo è vuoto sul database diventi un NULL e non una cella senza nulla all'interno?
    Se non c'è una funzione può essere "confezionata su misura"?
    Grazie mille a chiunque vorrà rispondere!
    Alla prossima,
    Grigio.

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Basta che quando crei la tabella stabilisci che quel campo dovrà essere NULL di default, e il gico è fatto.

    un piccolo esempio:

    CREATE TABLE `TuaTabella` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `TuoCampo` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

  3. #3
    Ciao las, questa soluzione era quella che anche io ritenevo più opportuna, ma purtroppo non ha sortito l'effetto desiderato: quando lascio il campo vuoto su db rimane un campo... vuoto, ma non NULL.
    Avevo ipotizzato di fare una serie di IF ... ELSE, ma soluzione mi pare, oltre che molto macchinosa, anche complicata perché quando vado ad eseguire il caricamento dei dati se il campo è NULL deve essere indicato così senza virgolette o cose simili ché altrimenti viene immediatamente intesa come stringa e come tale inserita...!!

  4. #4
    Originariamente inviato da grigio_viandant
    Ciao las, questa soluzione era quella che anche io ritenevo più opportuna, ma purtroppo non ha sortito l'effetto desiderato: quando lascio il campo vuoto su db rimane un campo... vuoto, ma non NULL.
    Avevo ipotizzato di fare una serie di IF ... ELSE, ma soluzione mi pare, oltre che molto macchinosa, anche complicata perché quando vado ad eseguire il caricamento dei dati se il campo è NULL deve essere indicato così senza virgolette o cose simili ché altrimenti viene immediatamente intesa come stringa e come tale inserita...!!
    ma è un campo di testo? no perchè se tu gli passi magari il valore '', non penso che sia valore nullo ma appunto ''. Cmq sbaglierai a fare la query
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Il problema è esattamente quello, l'unico modo in cui sono riuscito a risolverlo, ma la trovo una scappatoia orribile oltre che impraticabile quando i campi null possono essere più d'uno è questa che propongo:
    Codice PHP:
    $testo nl2br(htmlentities($_POST['testo']));
    //campo t2 vuoto
    if (empty($_POST['t2'])) {
        
    $tab $_POST['tabel'];

        
    $inter 'INSERT INTO
        '
    .$tab.'
        (testo, t2, data)
        VALUES
        (
        "'
    .$testo.'",
        NULL,
        "'
    .$data.'"
        )'
    ;

    } else {
    //campo t2 pieno
    $t2 nl2br(htmlentities($_POST['t2']));
    /*assegnazione tab*/
    $tab $_POST['tabel'];

    $inter 'INSERT INTO
    '
    .$tab.'
    (testo, t2, data)
    VALUES
        (
        "'
    .$testo.'",
        "'
    .$t2.'",
        "'
    .$data.'"
        )'
    ;

    però appunto, a parte che trovo la soluzione molto inelegante ma oi mi costringe a dei voli pindarici (ed a Kg di codice probabilmente inutile nel caso in cui questi campi fossero di più!).
    La soluzione potrebbe essere definire la variabile $t2 come NULL se la condizione empty è vera, ma non so come inserire questa variabile dentro la query in modo corretto... non so se mi sono spiegato, spero di sì!

  6. #6
    allora,

    o usi soluzioni fatte bene tipo http://php.net/manual/en/pdo.prepared-statements.php

    oppure devi fare la stringa sql fatta bene...che so

    Codice PHP:

    sql 
    "insert into tableName(testo,t2,etc) values('".$testo."',".($t2 "'$t2'" "null").",'...')"
    qualcosa del genere insomma
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    quella è proporio una soluzione alla quel non credo sarei arrivato da solo
    Grazie!
    Ora provo e poi riporto i risultati...

  8. #8
    Nulla da fare, ho seguito le tue istruzioni, ma ricevo un errore: unexpected T_VARIABLE, provando a giocare con apici e virgolette ottengo sempre o la scritta NULL dentro il campo oppure un campo vuoto ma non NULL...

  9. #9
    Originariamente inviato da grigio_viandant
    Nulla da fare, ho seguito le tue istruzioni, ma ricevo un errore: unexpected T_VARIABLE, provando a giocare con apici e virgolette ottengo sempre o la scritta NULL dentro il campo oppure un campo vuoto ma non NULL...
    hai scritto male qualcosa
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Avevi ragione... stavolta ha funzionato!
    Grazie mille!!!!

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.