Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    72

    campo obbligatorio e non

    ciao a tutti, ho un problema sui campi non obbligatori.

    In sintesi, il mio utente si registra dalla pagina di registrazione, registrazione.php, nella quale tutti i campi sono obbligatori. Quando effettua il login viene indirizzato nella sua area personale, personale.php, nella quale se vuole pu� inserire altri dati relativi alla propria anagrafica oppure modificare quelli gi� inseriti in fase di registrazione.

    ora, visto che nella pagina registrazione.php ho inserito dei vincoli per i campi, vorrei siano mantenuti anche durante la modifica, e se non modifica, e qui sta il mio problema, vorrei che il campo non modificato non trasmettesse al db il valore "" (vuoto) e che non stampi l'errore a video "Inserisci il tuo nome!".

    esempio sul campo nome


    registrazione.php (il campo nome qui � obbligatorio):

    // Controllo il Nome Utente
    $nome = $_POST['nome'];
    if($nome == ""){echo"Campo nome non compilato!";exit(); }
    if(strlen($nome) < 2 || strlen($nome) > 20 )
    die('Inserisci il tuo nome!');

    altri campi



    quindi in personale php (il campo nome non � obbligatorio, perch� gi� inserito in fase di registrazione, tuttavia l'utente pu� modificarlo pur rispettando i vincoli indicati in registrazione.php):

    // Controllo il Nome Utente
    $query_nome = mysql_query("SELECT nome FROM utenti WHERE id = '" . $_SESSION['login'] . "' LIMIT 1");
    $nome = $_POST['nome'];
    if(strlen($nome) < 2 || strlen($nome) > 20 )
    die('Inserisci il tuo nome!');
    $row_nome = mysql_fetch_array($query_nome);
    $nome_vecchio = $row_nome['nome'];
    if($nome == ""){$_POST[$nome = $nome_vecchio];}


    ovvero se vuoi modificare il campo rispetta che il testo sia maggiore di due lettere e minore di 20, ma se non lo vuoi modificare non scrivere nulla e passa al campo successivo.

    in questo caso se modifico, mi fa modificare, mase non scrivo nulla, mi da errore.
    Qualcuno mi pu� spiegare sbaglio?

    grazie mille in anticipo.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Questo non va.

    Codice PHP:
    if($nome == ""){$_POST[$nome $nome_vecchio];} 
    Forse volevi scrivere if($nome == ""){$_POST['nome'] = $nome_vecchio;}
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    72
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Questo non va.

    Codice PHP:
    if($nome == ""){$_POST[$nome $nome_vecchio];} 
    Forse volevi scrivere if($nome == ""){$_POST['nome'] = $nome_vecchio;}

    ciao badaze, provo a verificare. Ma il ragionamento del mio script è corretto a livello teorico?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    72
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Questo non va.

    Codice PHP:
    if($nome == ""){$_POST[$nome $nome_vecchio];} 
    Forse volevi scrivere if($nome == ""){$_POST['nome'] = $nome_vecchio;}

    Badaze, l'ho testato e mi da l'errore impostato mezzo die: "Inserisci il tuo nome!". hai alternative?

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Nel codice il tuo errore scatta prima di arrivare alla parte che non va. Manca la parte html ovvero la form che contiene i campi per potere dare un avviso.
    Fossi in te imposterei tutti i campi modificabili con i valori della tabella.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    72
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Nel codice il tuo errore scatta prima di arrivare alla parte che non va. Manca la parte html ovvero la form che contiene i campi per potere dare un avviso.
    Fossi in te imposterei tutti i campi modificabili con i valori della tabella.
    Da quello.che.mi dici devo concatenare gli.if, giusto?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    72
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Nel codice il tuo errore scatta prima di arrivare alla parte che non va. Manca la parte html ovvero la form che contiene i campi per potere dare un avviso.
    Fossi in te imposterei tutti i campi modificabili con i valori della tabella.

    la parte html c'è, non l'ho trascritta per non appesantire il post con un normalissimo form e poi in realtà nel mio caso tutti i campi sono modificabili.

    ho provato con il seguente script:

    if(strlen($nome) == ""){$_POST['nome'] = $nome_vecchio; }
    elseif(strlen($nome) < 2 || strlen($nome) > 20 )
    {die('Inserisci il tuo nome!'); }


    se non compilo il campo nome e compilo tutti gli altri, lo script sovrascrive nel database un campo vuoto senza segnalarmi di inserire il nome! quindi deduco che $_POST['nome'] = $nome_vecchio; } non sia corretto.

    quindi come devo variare questo script?

  8. #8
    Apparte che strlen() == "" non significa niente. Semmai dovresti usare strlen() == 0. Poi per quanto riguarda il tuo problema puoi risolverlo stampando sulle text del form il valore che ha impostato l'utente durante la registrazione oppure puoi effettuare una verifica sui campi appena inseriti. Ovvero potresti verificare che il campo appena inserito non sia vuoto. In tal caso non esegui nessuna azione per questo parametro, altrimenti vai ad inserirlo sul db.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    72
    Quote Originariamente inviata da hypertextPro Visualizza il messaggio
    Apparte che strlen() == "" non significa niente. Semmai dovresti usare strlen() == 0. Poi per quanto riguarda il tuo problema puoi risolverlo stampando sulle text del form il valore che ha impostato l'utente durante la registrazione oppure puoi effettuare una verifica sui campi appena inseriti. Ovvero potresti verificare che il campo appena inserito non sia vuoto. In tal caso non esegui nessuna azione per questo parametro, altrimenti vai ad inserirlo sul db.
    Ciao hipertextpro, il mio problema è dividere il codice, ovvero se il campo è pieno controllo le condizioni se é vuoto non inserisco nulla. La verità è che sto usando php da due settimane e per limite mio non so come scrivere il codice correttamente. Ti ringrazio per l'aiuto e ti posso chiedere se potresti farmi un esempio pratico?

  10. #10
    Quote Originariamente inviata da gianluis Visualizza il messaggio
    Ciao hipertextpro, il mio problema è dividere il codice, ovvero se il campo è pieno controllo le condizioni se é vuoto non inserisco nulla. La verità è che sto usando php da due settimane e per limite mio non so come scrivere il codice correttamente. Ti ringrazio per l'aiuto e ti posso chiedere se potresti farmi un esempio pratico?
    Non sarebbe più sensato, in fase di modifica, riempire il campo nome con il vecchio valore e rieseguire gli stessi controlli della registrazione sovrascrivendo sempre in caso di esito positivo? Se riempi il campo a priori e l'utente lo cancella dai un messaggio di errore se no lo modifichi se rispetta i tuoi criteri

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.