Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    466

    [MySQL/PHP] Problema con inserimento NULL

    Ho una tabella coì fatta (solo lo schema non fate caso a errori di sintassi):

    Tabella(
    campoA INT NOT NULL,
    campoB NULL,
    campoC NULL,
    campoD NOT NULL,
    campoE INT NOT NULL,
    campoF INT NOT NULL)

    QuUesti campi vengono passati via form ed inseriti.

    Ora il fatto è che se nel mio form non inserisco i valori per campoB e campoC nel DB mi vengono messi i valori 0 e 0.0, io vorrei invece mettesse NULL.

    Pensavo una cosa del tipo

    Codice PHP:
    if (empty($_POST[campoB]))
    {
     
    $_POST[campoB]=NULL;
    }
    elseif(empty(
    $_POST[campoB]))
    {
     
    $_POST[campoC]=NULL;

    ma a questo punto dovrei pure prevedere due query a seconda del tipo di valore, ossia

    Codice PHP:
    //query in cui non ci sono valori nULL
    INSERT INTO tabella VALUES ('{$_POST[campoA]}','{$_POST[campoB]}','{$_POST[campoC]}','{$_POST[campoD]}','{$_POST[campoE]}','{$_POST[campF]}'
    Codice PHP:
    //query in cui ci sono valori NULL
    INSERT INTO tabella VALUES ('{$_POST[campoA]}',{$_POST[campoB]},{$_POST[campoC]},'{$_POST[campoD]}','{$_POST[campoE]}','{$_POST[campF]}'
    Penso esista un modo più intelligente per risolvere questa cosa, mi aiuttae?

    Grazie, Mc

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    212
    codice:
    if (empty($_POST[campoB])) {
        $_POST[campoB] = 'NULL';
    } else {
        $_POST[campoB] = "'" . $_POST[campoB] . "'";
    }
    if (empty($_POST[campoC])) {
        $_POST[campoC] = 'NULL';
    } else {
        $_POST[campoC] = "'" . $_POST[campoC] . "'";
    }
    $sql = "INSERT INTO tabella VALUES (
    '{$_POST[campoA]}', 
    {$_POST[campoB]}, 
    {$_POST[campoC]}, 
    '{$_POST[campoD]}', 
    '{$_POST[campoE]}', 
    '{$_POST[campF]}')";

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    466
    Lo sapevo che trovavo qualcuno più intelligente di me

    Grazie, Mc

  4. #4
    scusa xkè non settarli default a null ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    466
    Non ci avevo pensato sai, così lascerei tutto il compito al DVB, però non sono sicuro che la cosa funzioni perchè non ho ancora capito bene come si comporti php se nel campo non viene inserito nessun valore, ho notato che inserisce 0 e 0.0 (i campi sonoun int ed un decimal.)

    Se qualcuno mi illumina a riguardo sono apeto anche a questa soluzione.

  6. #6
    è sufficiente che imposti un valore di default, di solito viene inserito 0 automaticamente, cancellalo

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    466
    Mi avete fatto venire un dubbio, trattandosi di due campi numerici, un int ed un decimal, non è che mi conviene lasciare di default 0 e 0.0 invece di null?

    Non è che ho fatto tutto questo casino per nulla? E mi bastava lascirae 0 e 0.0?

    Io propendevo per NULL perchè indica proprio l'insieme vuoto però devo dire che i valori di defaul 0 e 0.0 non verrebbero maiinseriti in quei campi quindi non esiste il rischio di confonderli con altri.

  8. #8
    Originariamente inviato da mchorney
    Mi avete fatto venire un dubbio, trattandosi di due campi numerici, un int ed un decimal, non è che mi conviene lasciare di default 0 e 0.0 invece di null?

    Non è che ho fatto tutto questo casino per nulla? E mi bastava lascirae 0 e 0.0?

    Io propendevo per NULL perchè indica proprio l'insieme vuoto però devo dire che i valori di defaul 0 e 0.0 non verrebbero maiinseriti in quei campi quindi non esiste il rischio di confonderli con altri.
    NULL non e' vuoto, non e' zero, non e' negativo, e' il nulla. Non ti viene contato, calcolato, estratto con where campo="". ecc.

    Non li uso mai per campi numerici o date. E' facile provocare equivoci.


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

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    466
    Piero allora seguo il tuo consiglio e lascio di default 0 e 0.0.

    Grazie, Mc

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