Visualizzazione risultati 1 fino 26 di 26

Discussione: help me ( form con controllo )

  1. #1
    Guest

    Predefinito help me ( form con controllo )

    stavo cercando d'imparare dove sbaglio sto cercando di raffrontare 2 dati inseriti uno via form e uno di confronto inserito dentro lo script ... e poi gli dico se x=x stampamelo ! ... il problema e che lui non aspetta che io inserisca la parola e invii il tutto ( potete vederlo da voi stessi qui) ... cosa sbaglio ?
    Codice PHP:
    <?php
    $test
    =$_POST['test'];
    $test2 = "prova";
    if(
    $test=$test2)
    {
    echo
    $test;
    }
    else {
    echo(
    "parola sbagliata");
    }
    ?>
    <table bgcolor="orange">
    <form method="post" action=<?php $_SERVER['PHP_SELF'] ?>>
    <tr><td>inserisci il tuo nome</td>
    <td><input type="text" name="test"></td>
    <td><input type="submit" name="submit" value="invia"></td>
    </tr>
    </form>
    </table>

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Prima di eseguire la parte PHP, devi controllare se hai inviato il form. Questo controllo puoi farlo usando la isset() su $_POST['test'].

    Ciao!

  3. #3
    Guest

    Predefinito

    if($test=$test2) prova a mettere == dovrebbe andare meglio il tutto... fammi sapere ciao!

  4. #4
    Guest

    Predefinito

    Se vuoi utlizzare PHP
    Devi sapere che il method post non funziona con il refresh della pagina con le nuove variabili da submit, prova con get e vedrai che funziona =P.

    Forse però potresti provare con delle sessioni e attribuire ad ogni sessione il valore del $_post['variabile']. Ma non ti garantisco che funge, perchè è proprio il post che non va nella stessa pagina.

    --------------------------------------------------------------------------------------------

    Se vuoi utilizzare JavaScript
    E' normale che ti invia tutto! Stai utilizzando nell' <input text= il comando submit. Devi settarlo con un comando qualsiasi, ad esempio button o cacca.

    Come mai ciò?
    Semplicemente perchè quello è uno comando standard HTML, un po' come <br /> etc.

    Dai uno sguardo qui: *****
    oppure qui: *****

    P.S Il sito è in costruzione, è vuoto. Non c'è niente =P
    Ultima modifica di alemoppo : 27-06-2013 alle ore 13.19.05 Motivo: rimossi link: uno punta al nulla. L'altro è inutile (e con codice anche errato).

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Citazione Originalmente inviato da torland Visualizza messaggio
    Devi sapere che il method post non funziona con il refresh della pagina con le nuove variabili da submit
    In realtà, i browser decenti chiedono se si vuole re-inviare i dati. Ma che centra questo con la discussione?

    Citazione Originalmente inviato da torland Visualizza messaggio
    E' normale che ti invia tutto! Stai utilizzando nell' <input text= il comando submit. Devi settarlo con un comando qualsiasi, ad esempio button
    Cosa centra javascript? Dove vedi un comando javascript? il "submit" è soltanto una proprietà di "puro" html, che non centra nulla con javascript. Per inviare un form tramite javascript occorre invocare il metodo .submit() del form.
    Inoltre, se un input è submit non può essere text...

    Citazione Originalmente inviato da torland Visualizza messaggio
    o cacca.


    Ciao!
    Ultima modifica di alemoppo : 27-06-2013 alle ore 13.18.44

  6. #6
    Guest

    Predefinito

    Ho postato i due metodi per ottenere il $_POST, non penso di essere andato OFF-TOPIC, infatti c'è scritto chiaramente:

    Se vuoi utilizzare PHP
    Se vuoi utilizzare JavaScript

    E poi dovresti sapere che in realtà il $_POST non è possibile riottenerlo nella stessa pagina =) Prova e vedrai!

    Mi spiego meglio:
    Pagina 1 -> Scrivo POST da INPUT BOX -> Ritorno Pagina 1 tramite PHP_SELF -> Echo POST fallito

    Invece se uno fa
    Pagina 1 -> Scrivo POST da INPUT BOX -> Pagina 2 nascosta -> Salvo la variabile in una $_SESSION o etc. -> Redirect nascosto a Pagina 1 -> Echo POST\Variabile ottenuto

    ---------------------------------------
    Emh? Dov'è che i Link puntano al NULLA?

    http://torland.altervista.org/it/login/
    http://torland.altervista.org/it/register

    Ricontrolla, scusami =D

    ----------------------------------------

    Comunque scusami per il mio comportamento un po' "avventato", avevo appena litigato con la ragazza e stavo nervous.
    Ultima modifica di torland : 27-06-2013 alle ore 14.14.16

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Prima di eseguire la parte PHP, devi controllare se hai inviato il form. Questo controllo puoi farlo usando la isset() su $_POST['test'].

    Ciao!
    vediamo se ho capito come funziona ( il libro dove sto studiando non lo tratta proprio ) .. la stringa dovrebbe essere piu o meno cosi
    Codice PHP:
    isset(empty($_POST['test'])) { variabile positiva } else {variabile negativa }
    giusto ??

    EDIT:

    Citazione Originalmente inviato da gmda Visualizza messaggio
    if($test=$test2) prova a mettere == dovrebbe andare meglio il tutto... fammi sapere ciao!
    gia sperimentato , ma il problema non cambia !! ... cmq si poi dopo esser venuto a capo di dove sbaglio aggiusto anche questo !! ... grazie per il consiglio !
    Ultima modifica di alemoppo : 27-06-2013 alle ore 20.50.01 Motivo: Non fare post consecutivi: usa il tasto "Edita" per modificare i messaggi!

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Una cosa del tipo:

    Codice PHP:
    <?php
    if(isset($_POST['test']))
    {
    $test=$_POST['test'];
    $test2 = "prova";
    if(
    $test==$test2)
    {
    echo
    $test;
    }
    else
    {
    echo(
    "parola sbagliata");
    }
    }
    ?>
    <table bgcolor="orange">
    <form method="post" action=<?php $_SERVER['PHP_SELF'] ?>>
    <tr><td>inserisci il tuo nome</td>
    <td><input type="text" name="test"></td>
    <td><input type="submit" name="submit" value="invia"></td>
    </tr>
    </form>
    </table>
    • sostituito l'operatore di assegnazione con quello di uguaglianza (come suggerito da gmda)
    • aggiunta la isset()


    Più brevemente, lo stesso codice potrebbe essere riscritto:

    Codice PHP:
    <?php
    if(isset($_POST['test']))
    {
    if(
    $_POST['test']=='prova')
    echo
    $_POST['test'];
    else
    echo
    'parola sbagliata';
    }
    ?>
    <table bgcolor="orange">
    <form method="post" action=<?php $_SERVER['PHP_SELF'] ?>>
    <tr><td>inserisci il tuo nome</td>
    <td><input type="text" name="test"></td>
    <td><input type="submit" name="submit" value="invia"></td>
    </tr>
    </form>
    </table>
    Visto che la password è comunque una stringa non vuota, la empty() puoi non metterla, in quanto lasciando il campo vuoto, ti dirà che la password è sbagliata. Se però vuoi aggiungere il controllo del campo vuoto, devi controllare prima con la isset(), poi con la empty(). Fare il contrario non ha senso, perché controlli (con la empty()) una variabile che non sai nemmeno se esiste .

    Comunque sia, alcune cose che non centrano nulla con il corretto funzionamento dello script:
    • Evita di usare le tabelle per formattare contenuti nella pagina: le tabelle si usano per far tabelle, e non per posizionare gli elementi nelle pagine: per posizionare gli elementi dei usare CSS.
    • non usare mai proprietà in html per specificare lo stile: ad esempio hai usato "bgcolor". Per lo stile, va usato CSS! L'html definisce la struttura della pagina. Il css lo stile.


    Ciao!
    Ultima modifica di alemoppo : 27-06-2013 alle ore 20.52.44

  9. #9
    Guest

    Predefinito

    Beh l'isset va più che bene, si potrebbe utilizzare anche un if($_POST['nomevariabile']) in questo modo controlla prima se esiste quella variabile.

    Ma tanto per sapere, a cosa ti serve richiamare un valore dalla stessa pagina? (PHP_SELF)

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Settare una sessione, un cookie... o qualsiasi altra cosa che faresti inviando i dati ad un'altra pagina da un form :)

    Ciao!

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da torland Visualizza messaggio
    Se vuoi utlizzare PHP
    Devi sapere che il method post non funziona con il refresh della pagina con le nuove variabili da submit, prova con get e vedrai che funziona =P.

    Forse però potresti provare con delle sessioni e attribuire ad ogni sessione il valore del $_post['variabile']. Ma non ti garantisco che funge, perchè è proprio il post che non va nella stessa pagina.

    --------------------------------------------------------------------------------------------

    Se vuoi utilizzare JavaScript
    E' normale che ti invia tutto! Stai utilizzando nell' <input text= il comando submit. Devi settarlo con un comando qualsiasi, ad esempio button o cacca.

    Come mai ciò?
    Semplicemente perchè quello è uno comando standard HTML, un po' come <br /> etc.

    Dai uno sguardo qui: *****
    oppure qui: *****

    P.S Il sito è in costruzione, è vuoto. Non c'è niente =P
    vediamo get se non mi ha spiegato male il libro serve per dare qualcosa ad uno script esempio per creare una una variabile $pinco=$_get['pincopalla']; o una cosa simile ... in questo caso se non ricordo male essendo un invia dovrebbe andare meglio il secondo da quanto spiegato dal libro ...
    ---
    per ora mi limito ad imparare e poi ad approfondire il php ... gia e tanto complicato che non vado a complicarmi la vita inserendo altri linguaggi all'interno !

    no c'e qualcosa ...esattamente 5 cartelle ( approposito come posso fare fuori un file che si chiama .\nomefile.jpg ) , che uso per esercitarmi e vedere i miei progressi nell'apprendimento .... appena saro ad un livello soddisfacente ( spero presto ) con quello che ho imparato provero ha fare un sito , nel frattempo mi sto esercitare nel creare qualcosa ( di molto semplice ) per mettere alla prova quello che sto imparando .

    EDIT:

    Citazione Originalmente inviato da torland Visualizza messaggio
    Beh l'isset va più che bene, si potrebbe utilizzare anche un if($_POST['nomevariabile']) in questo modo controlla prima se esiste quella variabile.

    Ma tanto per sapere, a cosa ti serve richiamare un valore dalla stessa pagina? (PHP_SELF)
    in questo script , serviva semplicemente per capire dove sbagliavo ... perche non capivo dove erravo ( sto imparando ) !

    nella realta lo script che sto realizzando e un pelino piu complicato e dovrebbe prima confrontare 2 dati ereditati da un link tramite pagina?id=xxxx&cod=0000 se sono esistenti , poi per conferma deve inserire una password temporanea cosi da confermare l'esistenza e quindi switchare da stato inattivo ad attivo !!

    EDIT:

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Settare una sessione, un cookie... o qualsiasi altra cosa che faresti inviando i dati ad un'altra pagina da un form :)

    Ciao!
    grazie mille ale ora funziona !! ora vado a capire come funziona empty()
    Ultima modifica di alemoppo : 28-06-2013 alle ore 01.03.48

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    empty() banalmente ritorna true se gli passi come parametro:

    Citazione Originalmente inviato da documentazione
    • "" (an empty string)
    • 0 (0 as an integer)
    • 0.0 (0 as a float)
    • "0" (0 as a string)
    • NULL
    • FALSE
    • array() (an empty array)
    • $var; (a variable declared, but without a value)
    Ciao!

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    empty() banalmente ritorna true se gli passi come parametro:



    Ciao!
    una domanda prima lui dovrebbe verificare che il campo è vuoto e poi se il campo e pieno controllare se le parole sono corrispondenti ... tipo
    Codice PHP:
    if(empty($_post['test']))
    {
    non hai scritto nulla;} else { if(isset($_POST['test']))
    {
    if(
    $_POST['test']=='prova')
    echo
    $_POST['test'];
    else
    echo
    'parola sbagliata';
    }

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Come ti avevo detto qualche messaggio su, prima di controllare se è vuota, devi controllare se esiste! Quindi, prima la isset(); Poi la empty():

    Codice PHP:
    if(isset($_POST['test']))
    {
    //ok, la variabile esiste. Il form è stato inviato.
    if(empty($_POST['test'])) //esiste... ma è vuota?
    echo 'Hai inviato i dati, ma non hai scritto nulla!';
    else
    {
    //la variabile non è vuota. Vediamo se c'é scritto quello che vogliamo:
    if($_POST['test']=='prova')
    echo
    $_POST['test'];
    else
    echo
    'parola sbagliata';
    }
    }
    Nota: si poteva anche fare:

    Codice PHP:
    if(isset($_POST['test']) && $_POST['test']=='prova')
    echo
    'ok. La variabile è corretta.';
    In quest'ultimo caso, però, non puoi sapere se è stato inviato il form, o se è stato inviato ma con una parola vuota o sbagliata (o meglio, potresti saperlo con l'else, ma senza altri if non saresti in grado di distinguere i vari casi).

    Ciao!
    Ultima modifica di alemoppo : 28-06-2013 alle ore 01.49.01

  15. #15
    Guest

    Predefinito

    Grazie mille ! ... per ora usero la forma piu semplice ! .... ora vado ad implementarlo sull'altro script vediamo se ci riesco !
    update nulla da fare ... ho implementato nell'altra parte il codice funzionante ma ora ho questo problema ... quando invio il codice risulta sempre errato !
    allego il codice
    Codice PHP:
    $id_num = $_GET['id'];
    $code = $_GET['coda'];
    $db = mysql_connect($host, $users) or die("impossibile accedere al db");
    //creo la connessione alle tabelle nel db
    mysql_select_db($database, $db) or die("impossibile connettersi al db");
    //creo la query dove gli dico di sezionare il campo password e del l'id numero selezionato sopra
    $result1 = mysql_query("SELECT (t_pass) FROM test2
    WHERE coda2 ='
    $id_num'");
    while(
    $row1 = mysql_fetch_array($result1))
    {
    //ora assegno la stringa nome al campo selezionato
    $nome1 = $row1["t_pass"];
    //faccio stampare il nome x vedere se è quello esatto
    echo $nome1;
    }

    //ora controllo che sia inserita la password nel form ho lasciato le scritte di alemoppo
    if(isset($_POST['pass']))
    {
    // ora che non sia vuoto il campo
    if(empty($_POST['pass']))
    {echo
    "non hai scritto nulla!";}
    else
    {
    // qui confronta le 2 password se sono uguali
    if($_POST['pass']!=='$nome1')
    // se sono uguali stampala di nuovo , in realta qui si dovrebbe apparire un link alla pagina dopo
    { echo $_POST['pass']; }
    else
    {echo
    'parola sbagliata';}
    }
    }
    dove sta l'errore perche non controlla se le 2 password sono uguali ?
    Ultima modifica di stest : 28-06-2013 alle ore 22.03.10 Motivo: updatato !

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da stest Visualizza messaggio
    Grazie mille ! ... per ora usero la forma piu semplice ! .... ora vado ad implementarlo sull'altro script vediamo se ci riesco !
    In bocca allo script

    Facci sapere!

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da torland Visualizza messaggio
    In bocca allo script

    Facci sapere!
    tanto non funziona !! :D

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Codice PHP:
    if($_POST['pass']!=='$nome1')
    Perché $nome1 è tra apici?

    Inoltre, le variabili per connettersi al database sono inizializzate? (e corrette?)

    Ciao!

  19. #19
    Guest

    Predefinito

    si li ho tolti ora insieme al ! e ora pare funzioni tutto lo script !! :D ... sono riuscito a completare le 2 fasi senza nessun problema ! ora passo alla fase 3 .. che non dovrebbe crearmi grandi grattacapi ! ... grazie mille per ora ( tanto vi disturbero ancora x qualche altro problema e consiglio )
    grazie mille !!

  20. #20
    Guest

    Predefinito

    problema nuovo ...

    il form invia 2 dati che devono essere uguali
    Codice PHP:
    if(isset($_POST['pass1']) && ($_POST['pass2']))
    {
    if(empty(
    $_POST['pass1']) && ($_POST['pass2']))
    {echo
    "hai inviato i dati, ma non hai scritto nulla";}
    else
    { if(
    $_POST['pass1']) == ($_POST['pass2']))
    {echo
    " le 2 password corrispondono ";}
    else{echo
    "non corrispondono ";}
    }
    perche mi appare sempre questo errore ?
    Parse error: syntax error, unexpected T_IS_EQUAL in /membri/stest/test5/fase2.php on line 34
    - UPDATE -
    ho risolto il problema mettendo if(isset($_POST['pass1'], $_POST['pass2']))
    e dando valore alla stringa $a = $_POST['pass1']
    cosi funziona ...
    ---
    scordavo 2 altre domande ... dovrei aggiungere 2 cose ma non ho idea di come fare
    la prima e che dovrei controllare che la password inserita sia di 10 caratteri
    la seconda dovrei mettere un pulsante che se schiacciato crea delle password ( fin qui lo so fare usando mt_rand) ... la domanda è esiste un comando in php che se clicco dopo aver generato la pass la stampa direttamente dentro il form la password generata ?
    Ultima modifica di stest : 29-06-2013 alle ore 21.26.03 Motivo: risolto il problema e aggiunte 2 domande

  21. #21
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Puoi usare strlen(), che torna un intero che è la lunghezza della stringa che gli passi.

    Per il secondo, non usando javascript, mi viene in mente soltanto che il pulsante per generare un "submit", quindi la pagina si ricarica e php rigenera e riscrive il nuovo valore nel form (ad esempio con echo).

    Ciao!
    Ultima modifica di alemoppo : 29-06-2013 alle ore 22.34.08

  22. #22
    Guest

    Predefinito

    vabeh per il primo per ora passo , lo affrontero quando avro un po piu di dimestichezza , dopo l'html5 ( cosi aggiorno l'html che consoco !! ) e i css !! ...
    ok vada per strlen() .. ora vado a guardare sul libro se lo tratta e poi vado su php.net a comprendere meglio
    Grazie mille per l'aiuto ! :D
    Ultima modifica di stest : 29-06-2013 alle ore 23.48.26

  23. #23
    Guest

    Predefinito

    l'ho fatta adesso ma non funziona !!
    Codice PHP:
    $t = strlen('ciao');
    echo
    $t;
    if(
    strlen($t =10))
    {echo
    "numero giusto";}
    else
    {echo
    "numero sbagliato";}
    cosa che non va ?

  24. #24
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    L'errore è qui:
    Codice PHP:
    if(strlen($t =10))
    ..prova a correggerlo. (devi imparare a correggere gli errori).

    Ciao!

  25. #25
    Guest

    Predefinito

    Ci mancherebbe altro Ale ... La mia domanda ( era volta ) a capire ( tramite un esempio banale fatto li per li ) l'uso di una funzione a me sconosciuta ... E la sua applicazione in un contesto , non citato dai vari php.net & co ( li al massimo ti spiegano come stampare i numeri della stringa ) ... Tipo quello con un operatore di raffronto .. se x = y fai z se x > y fai z ... Domani provo a correggerlo sempre se capisco dove mettere l'operatore !!! :)

  26. #26
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,573

    Predefinito

    Citazione Originalmente inviato da stest Visualizza messaggio
    se x = y fai z se x > y fai z
    Se x == y ...

    Comunque, la funzione l'hai usata correttamente:
    Codice PHP:
    $t = strlen('ciao');
    echo
    $t;
    in $t hai un numero che è il numero di caratteri della stringa che hai passato a strlen(). Quindi ora si tratta di usare semplici if... Non è necessario richiamare ancora la strlen(), perché hai già messo il risultato in $t.

    (poi magari, prova a farlo senza usare $t).

    Ciao!
    Ultima modifica di alemoppo : 30-06-2013 alle ore 11.28.32

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •