Visualizzazione dei risultati da 1 a 5 su 5

Discussione: campo vuoto

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    518

    campo vuoto

    Buonasera a tutti,
    ho un problema con un campo non obbligatorio di un form:

    query = "INSERT INTO utenti (username, nome, cognome, ragione, indirizzo, citta, provincia, cap, telefono, web) VALUES('".Addslashes ($username)."','".Addslashes ($nome)."','".Addslashes ($cognome)."','".Addslashes ($ragione)."','".Addslashes ($indirizzo)."','".Addslashes ($citta)."','".Addslashes ($provincia)."','".Addslashes ($cap)."','".Addslashes ($telefono)."','".Addslashes ($fax)."','".Addslashes ($email)."','".Addslashes ($categoria)."','".Addslashes ($sub_categoria)."','".Addslashes ($piva)."','".Addslashes ($web)."','".Addslashes ($start)."','".Addslashes ($start_a)."','".Addslashes ($consenso)."')";

    ho il campo web non obbligatorio, però se lo lascio vuoto non mi inserisce il record.
    Dove sbaglio?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    beh, se è vuoto dovresti passargli come parametro null (per lo meno io ho sempre fatto così)
    ho sempre fatto dei controlli sui campi non obbligatori...

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Sarebbe meglio se specifichi pure qual'è il campo non obbligatorio;
    in ogni caso a mio avviso quando ci sono dei campi non obbligatori è meglio costruire la query solo coi campi che sono stai riempiti e che quindi vanno inseriti.

    Ovvero:
    Dividi la query in due, esempio:
    Codice PHP:
    $query1 "INSERT INTO utenti (username, nome, cognome, ragione, indirizzo, citta, provincia, cap, telefono

    $query2 =  )VALUES('".Addslashes ($username)."','".Addslashes ($nome)."','".Addslashes ($cognome)."','".Addslashes ($ragione)."','".Addslashes ($indirizzo)."','".Addslashes ($citta)."','".Addslashes ($provincia)."','".Addslashes ($cap)."','".Addslashes ($telefono)."','".Addslashes ($fax)."' 
    Quindi fai un if che se il campo web è settato aggiungi una parte di query che contenga l'email, ad esmpio:

    Codice PHP:
    $query1 .= ",  web";
    $query2 .= ",'" .  $email "'"
    Pio unisci le due semiquery
    Codice PHP:

    $query 
    $query1 £query2 ");"
    Devi stare attento alle parentesi e alle virgole infatti le virgole ti conviene mettere all'inizio del pezzo di query che eventualmente aggiungi, in modo che se non viene aggiunto, non hai problemi con virgole in più, che troveresti se metti la virgola nella "query di partenza".

    P.S.
    Per quanto riguarda l'esempio, ho cercato di riferirmi a quello da te postato, ma se questa è la query che usi, non ti può funzionare, perchè nei values metti molti più campi di quelli che indichi nell'insert.

    P.P.S.
    é la prima volta che vedo l'addslahes messo direttamente nel costrutto della query, cioè stai inserendo le slash, ma il risultato non lo stai memorizzando in nessuna varabile,
    io ho sempre fatto tipo : $variabile = addslashes ($variabile)
    e poi usavo la variabile;
    Volevo sapere se questo metodo l'hai usato altre volte e ti funziona.

    Ciao.

  4. #4
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    lo trovo un po' macchinoso....io faccio solo
    if(strlen($campo1)==0) $campo1="null";
    e tutti i campi
    poi la query
    INSERT INTO tabella VALUES(tutte le var per tutti i campi);

    PPS: come non le salvi....vengono salvate nella variabile query

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    MM attenzione che addlashes potrebbe inserire slqsh aggiuntive se le gpc_magiq_quotes sono attive!!!!

    Codice PHP:

    $query 
    "insert into 
    tabella(campo1 ,campo2)
    values('"
    .(get_magic_quotes_gpc()? addslashes($var1) : $var1  )."'  , 
    "
    .(get_magic_quotes_gpc()? addslashes($var2) : $var2  ).")" 
    COsi' eviterai le \\\' in quanto se le magic quotes sono attive in automatico php aggiunge le \ ai caratteri tipo ' quindi se poi aggiungi nuovamente le \ le avrai doppie il che crea un po' di problemi.

    Ovviamente devi fare attenzione se i campi opzionali sul db sono settati come tali perche' se hanno l'attributo "not null" ti consiglio di dargli da db un valore di default che usi per segnare il fatto che tale valore e' vuoto.

    P.S.
    Gia' e' macchinosa come query io mi piazzo solitamente tutto su array filtrando direttamente la var in post o get con un foreach iniziale..... mooooooolto piu' comodo cosi' mi posso configurare esternamente le var che devo caricare dargli le prorp e lo script poi esegue tutto quello che deve eseguire.

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.