Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46

    Trasformazione parametro da stringa vuota a NULL

    Ciao a tutti

    per comodità di database vorrei fare in modo che, ogni volta che un campo viene lasciato vuoto in una form in php di inserimento dati, il valore prima di essere scritto nel database venga riconosciuto come stringa vuota, e trasformato automaticamente in valore NULL. Sarebbe molto più comodo poi fare interrogazione per rilevare chi ha lasciato il campo in bianco, restituendo NULL

    sto provando in vari modi ma non riesco...

    ad esempio ho provato così:

    codice:
    	$nulla = NULL;
    	
    	if ($_REQUEST['fax'] == "")
    	
    		{$_REQUEST['fax'] = $nulla;
    		}
    	
    	$query= "INSERT INTO $tabella VALUES ('". $_REQUEST['email'] ."','" . $_REQUEST['nome']."','" . $_REQUEST['cognome']."','" . $_REQUEST['indirizzo']."','" . $_REQUEST['telefono']."','" . $_REQUEST['fax']."','" . $_REQUEST['cellulare']."','" . $_REQUEST['citta'] . "')";
    se vi viene in mente qualcosa, oppure magari sapete consigliarmi qualche sito dove reperire dei codici prefatti per risolvere questi problemi comuni ve ne sarei grato!

    grazie

  2. #2
    i NULL nel database fanno solo casini, secondo me, se puoi, ti conviene evitare.

    Per sapere chi ha lasciato il campo vuoto, puoi controllare se il campo è vuoto , niente di più facile.

    Dove è il problema nel fare ... WHERE campo = '' ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    potrebbe anche andarmi bene, il problema è che sui campi INT facoltativi, come ad esempio il numero di FAX, se l'utente che inserisce i dati lascia il campo vuoto, mi da un problema di "Out of range value adjusted for column 'fax' at row 1"
    com'è ovvio che sia perchè un INT non può assumere il valore di stringa vuota ""... quello che volevo provare a fare era gestire l'inserimento di stringhe vuote su campi INT, e l'automatica conversione in NULL prima che gli stessi dati vengano inseriti nel db...

    grazie mille a tutti

  4. #4
    nell'esempio che hai fatto, secondo me un campo INT non è adatto a un numero di FAX, visto che perderesti gli zeri del prefisso, meglio un campo di testo.

    Riguardo ai campi INT non inseriti, puoi assegnare loro un valore di default nella creazione della tabella ed evitare di inserirli nella query, se vuoti.

    La query la puoi far generare dinamicamente.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    Originariamente inviato da skidx
    nell'esempio che hai fatto, secondo me un campo INT non è adatto a un numero di FAX, visto che perderesti gli zeri del prefisso, meglio un campo di testo.

    Riguardo ai campi INT non inseriti, puoi assegnare loro un valore di default nella creazione della tabella ed evitare di inserirli nella query, se vuoti.

    La query la puoi far generare dinamicamente.
    ma io comunque nel database ho settato che il valore di default sia NULL, ciononostante se lascio il campo vuoto probabilmente si va a sovrascrivere il valore NULL di default con la stringa vuota...in pratica forse dovrei trovare il modo di far si che quando la stringa viene lasciata vuota semplicemente non venga aggiunto il valore nella query...

    sbaglio o dico correttamente?

    p.s. cosa intendi per generare la query dinamicamente? scusa ma sono alle prime armi...

  6. #6
    Originariamente inviato da EtHeReAl
    quando la stringa viene lasciata vuota semplicemente non venga aggiunto il valore nella query...

    sbaglio o dico correttamente?
    dici correttamente, è questo che intendo per generare la query in maniera dinamica.

    Ovviamente stiamo parlando di INSERT. Se si tratta di UPDATE il campo vuoto deve sovrascrivere l'eventuale valore precedente, io non lavoro con i NULL quindi nel caso sovrascrivo con una stringa vuota, senza alcun problema.
    Nel tuo caso se la stringa è vuota, nella query di update metti NULL.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    in pratica il consiglio che mi dai tu è:

    1) cambia il tipo da INT a VARCHAR

    2) lascia che il tuo utonto lasci il campo vuoto se così gli va

    3) fai un controllo sul campo vuoto, ed in quel caso fai un'UPDATE sul campo interessato passandogli come parametro NULL

    giusto?

  8. #8
    Originariamente inviato da EtHeReAl
    in pratica il consiglio che mi dai tu è:

    1) cambia il tipo da INT a VARCHAR

    2) lascia che il tuo utonto lasci il campo vuoto se così gli va

    3) fai un controllo sul campo vuoto, ed in quel caso fai un'UPDATE sul campo interessato passandogli come parametro NULL

    giusto?
    Sì, questo se tu vuoi che il campo contenga anche il valore NULL.
    Nel mio caso invece non devo preoccuparmi di questi controlli, se il campo è vuoto salvo la stringa vuota, più veloce e anche più pratico in lettura.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    ok più tardi provo e ti faccio sapere, grazie mille delle ottime dritte

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    46
    sono riuscito a risolvere con una concatenazione e un controllo sulle stringhe vuote:

    codice:
    $db=mysqli_connect($host, $user, $password) or die("impossibile connettersi al server $host");
    	mysqli_select_db($db, $database) or die("impossibile connettersi al database $database");
    	
    
    	$query = "INSERT INTO $tabella VALUES ('". $_REQUEST['email'] ."',";
    	
    	if ($_REQUEST['nome'] == "")
    		$query .= "null,";
    	else $query .= "'". $_REQUEST['nome'] ."',";
    	
    	if ($_REQUEST['cognome'] == "")
    		$query .= "null,";
    	else $query .= "'". $_REQUEST['cognome'] ."',";
    	
    	if ($_REQUEST['indirizzo'] == "")
    		$query .= "null,";
    	else $query .= "'". $_REQUEST['indirizzo'] ."',";
    	
    	if ($_REQUEST['telefono'] == "")
    		$query .= "null,";
    	else $query .= "'". $_REQUEST['telefono'] ."',";
    	
    	if ($_REQUEST['fax'] == "")
    		$query .= "null,";
    	else $query .= "'". $_REQUEST['fax'] ."',";
    	
    	if ($_REQUEST['cellulare'] == "")
    		$query .= "null,";
    	else $query .= "'". $_REQUEST['cellulare'] ."',";
    	
    	if ($_REQUEST['citta'] == "")
    		$query .= "null,";
    	else $query .= "'". $_REQUEST['citta'] ."'";
    	
    	$query .= ")";
    	
    
    	$q=mysqli_query($db, $query) or DIE (mysqli_error($db));
    spero che possa essere d'aiuto per altri...

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.