Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Invio dati tramite POST con input lontano da tag <form>

  1. #1

    Invio dati tramite POST con input lontano da tag <form>

    Ciao a tutti !

    Ho un problema con l'invio di dati recuperati da checkbox tramite POST, in cui il tag di chiusura e apertura <form> e </form> e' distante dal relativo campo di input.

    Mi spiego meglio:
    vorrei poter far selezionare, in una tabella con vari record, piu' checkbox (per intenderci, come su phpmyadmin che ti permette selezione multiple di record tramite checkbox) in modo da poterle cancellare tutte in una volta tramite un unico pulsante:

    -----------------------------------
    checkbox | record 1
    -----------------------------------
    checkbox | record 2
    -----------------------------------
    checkbox | record 3
    -----------------------------------
    checkbox | record 4
    -----------------------------------
    ecc...ecc.....

    pulsante CANCELLA MULTIPLO (che rimanda a una pagina .php di conferma eliminazione multipla...)

    In pratica, ad ogni riga dentro una tabella avro':

    <form name="cancellaConf" method="post" url=""conferma-eliminazione.php">
    <input type="checkbox" name="canc[]" value="1">
    <input type="checkbox" name="canc[]" value="2">
    <input type="checkbox" name="canc[]" value="3">
    <input type="checkbox" name="canc[]" value="4">
    </form>

    e poi, al di sotto della tabella:

    <form name="cancellaConf" method="post" url=""conferma-eliminazione.php">
    <input type="submit" name="cancella" value="Conferma Eliminazione Multipla">
    </form>

    Ovviamente non mi funziona (tenete conto che ho altri campi <form> all'interno della stessa pagina).
    Cosi' non mi recupera i dati, e se provo a mettere all'inizio della tabella <form...> e alla fine </form>, me li recupera, ma poi si va a incasinare con un altro bottone con relativo <form> che manda dati diversi.

    Come posso risolvere questo problema ??

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    10,725
    I form sono argomento html, non PHP.
    Sposto.

  3. #3
    In effetti, hai perfettamente ragione, sorry ;-)

  4. #4
    Quote Originariamente inviata da _Micky_73 Visualizza il messaggio
    Ciao a tutti !

    Ho un problema con l'invio di dati recuperati da checkbox tramite POST, in cui il tag di chiusura e apertura <form> e </form> e' distante dal relativo campo di input.

    Mi spiego meglio:
    vorrei poter far selezionare, in una tabella con vari record, piu' checkbox (per intenderci, come su phpmyadmin che ti permette selezione multiple di record tramite checkbox) in modo da poterle cancellare tutte in una volta tramite un unico pulsante:

    -----------------------------------
    checkbox | record 1
    -----------------------------------
    checkbox | record 2
    -----------------------------------
    checkbox | record 3
    -----------------------------------
    checkbox | record 4
    -----------------------------------
    ecc...ecc.....

    pulsante CANCELLA MULTIPLO (che rimanda a una pagina .php di conferma eliminazione multipla...)

    In pratica, ad ogni riga dentro una tabella avro':

    <form name="cancellaConf" method="post" url=""conferma-eliminazione.php">
    <input type="checkbox" name="canc[]" value="1">
    <input type="checkbox" name="canc[]" value="2">
    <input type="checkbox" name="canc[]" value="3">
    <input type="checkbox" name="canc[]" value="4">
    </form>

    e poi, al di sotto della tabella:

    <form name="cancellaConf" method="post" url=""conferma-eliminazione.php">
    <input type="submit" name="cancella" value="Conferma Eliminazione Multipla">
    </form>

    Ovviamente non mi funziona (tenete conto che ho altri campi <form> all'interno della stessa pagina).
    Cosi' non mi recupera i dati, e se provo a mettere all'inizio della tabella <form...> e alla fine </form>, me li recupera, ma poi si va a incasinare con un altro bottone con relativo <form> che manda dati diversi.

    Come posso risolvere questo problema ??
    Per come hai descritto... ti basta fare:
    codice:
    <form name="cancellaConf" method="post" url="conferma-eliminazione.php">
    <input type="checkbox" name="canc[]" value="1">
    <input type="checkbox" name="canc[]" value="2">
    <input type="checkbox" name="canc[]" value="3">
    <input type="checkbox" name="canc[]" value="4">
    <input type="submit" name="cancella" value="Conferma Eliminazione Multipla">
    </form>
    
    Fai attenzione che in
    codice:
     url="conferma-eliminazione.php" 
    c'erano due ""

  5. #5
    Quote Originariamente inviata da _Micky_73 Visualizza il messaggio
    Ciao a tutti !

    Ho un problema con l'invio di dati recuperati da checkbox tramite POST, in cui il tag di chiusura e apertura <form> e </form> e' distante dal relativo campo di input.
    Dalla versione 5 di HTML, gli elementi di un form non devono necessariamente essere collocati all'interno del tag form.

    E' possibile associare gli input ad un form tramite l'attributo "form", applicato all'input (o alla select, textarea, ecc.), che conterrà l'id del form cui l'elemento si vuole far appartenere.

    Maggiori informazioni qui:
    https://www.w3schools.com/TAgs/att_input_form.asp

    Una controindicazione all'uso di questo metodo è che l'attributo "form" non è supportato dal browser di casa Microsoft, quindi se vuoi essere cross-browser dovresti strutturare diversamente il tuo documento HTML.

  6. #6
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Dalla versione 5 di HTML, gli elementi di un form non devono necessariamente essere collocati all'interno del tag form.

    E' possibile associare gli input ad un form tramite l'attributo "form", applicato all'input (o alla select, textarea, ecc.), che conterrà l'id del form cui l'elemento si vuole far appartenere.

    Maggiori informazioni qui:
    https://www.w3schools.com/TAgs/att_input_form.asp

    Una controindicazione all'uso di questo metodo è che l'attributo "form" non è supportato dal browser di casa Microsoft, quindi se vuoi essere cross-browser dovresti strutturare diversamente il tuo documento HTML.
    Ciao Luca,

    grazie per il suggerimento, purtroppo, devo necessariamente essere cross-browser e percio' supportare anche IE.

    Se posso abusare ancora un po' del tuo aiuto, come mi suggeriresti di fare per strutturare diversamente la pagina, in modo da permettere all'utente di effettuare una selezione multipla di checkbox facendola digerire anche a IE (in realta' la pagina e' in PHP).

    Grazie comunque e ciao !

  7. #7
    Quote Originariamente inviata da supersqualo Visualizza il messaggio
    Per come hai descritto... ti basta fare:
    codice:
    <form name="cancellaConf" method="post" url="conferma-eliminazione.php">
    <input type="checkbox" name="canc[]" value="1">
    <input type="checkbox" name="canc[]" value="2">
    <input type="checkbox" name="canc[]" value="3">
    <input type="checkbox" name="canc[]" value="4">
    <input type="submit" name="cancella" value="Conferma Eliminazione Multipla">
    </form>
    
    Fai attenzione che in
    codice:
     url="conferma-eliminazione.php" 
    c'erano due ""
    Grazie anche a te, ma era un semplice errore di battitura quando ho scritto il post.


  8. #8
    Quote Originariamente inviata da _Micky_73 Visualizza il messaggio
    Ciao Luca,

    grazie per il suggerimento, purtroppo, devo necessariamente essere cross-browser e percio' supportare anche IE.

    Se posso abusare ancora un po' del tuo aiuto, come mi suggeriresti di fare per strutturare diversamente la pagina, in modo da permettere all'utente di effettuare una selezione multipla di checkbox facendola digerire anche a IE (in realta' la pagina e' in PHP).

    Grazie comunque e ciao !
    Senza conoscere né la parte HTML né la parte PHP non è semplice.
    Un'idea che mi viene è che potresti racchiudere tutto il contenuto della pagina in un unico form e poi usare dei submit con nome di modo da sapere cosa fare quando il modulo viene inviato.

    Una cosa del genere in HTML
    codice:
    <body>
        <form>
            ...
            <input type="text">
            <input type="text">
            <button type="submit" name="azione">Salva</button>
            ...
            ...
            ...
            <input type="text">
            <input type="text">
            <button type="submit" name="azione">Cancella</button>
        </form>
    </body>
    Poi in PHP recuperi i dati in base al button cliccato
    Codice PHP:
    switch($_POST['azione']){
        case 
    'Salva':
            
    //...
        
    break;

        case 
    'Cancella':
            
    //...
        
    break;


  9. #9
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Senza conoscere né la parte HTML né la parte PHP non è semplice.
    Un'idea che mi viene è che potresti racchiudere tutto il contenuto della pagina in un unico form e poi usare dei submit con nome di modo da sapere cosa fare quando il modulo viene inviato.

    Una cosa del genere in HTML
    codice:
    <body>
        <form>
            ...
            <input type="text">
            <input type="text">
            <button type="submit" name="azione">Salva</button>
            ...
            ...
            ...
            <input type="text">
            <input type="text">
            <button type="submit" name="azione">Cancella</button>
        </form>
    </body>
    Poi in PHP recuperi i dati in base al button cliccato
    Codice PHP:
    switch($_POST['azione']){
        case 
    'Salva':
            
    //...
        
    break;

        case 
    'Cancella':
            
    //...
        
    break;

    Ok, faro' qualche prova !
    Grazie 1000 mi sei stato di grande aiuto.

    Ciaooo

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