Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: FORM con più pulsanti

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    42

    FORM con più pulsanti

    Ho un form che contiene una tabella.
    Ogni riga della tabella contiene un pulsante per cancellare quella riga dalla tabella (creata tramite cookies).

    Il problema è che essendo un unico form, qualsiasi pulsante premo mi invia tutti i dati e non solo quelli relativi al pulsante premuto

    Mi spiego meglio. Se io premo CANCELLA sulla III riga, viene creato un comando di questo tipo

    http://localhost/2.asp?cancellare=4&...1&cancellare=3

    e così non riesco a capire quale dei "tanti cancella" ho premuto...

    Consigli?

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    hai solo tre vie (credo)

    1) crei un form per ogni record (quindi puoi usare sia post che get)
    2) crei un bottone con un evento onclick per ogni record che invii l'id da cancellare allo script
    3) se per forza devi avere un'unico form, selezioni i campi da cancellare (che avranno lo stesso nome) e poi lavori ogni risultato presente nel tuo invio (che sia get o post)

    tre modi diversi di lavorare, a te la scelta

    trattandosi di modifiche al db sceglierei un metodo post,
    l'altro è rischioso: l'utente giocherellone potrebbe far danni

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    42
    in effetti riguardando la consegna, non si chiede un unico form per fare il tutto (come scritto in altri punti), provo col primo metodo

    funziona *.* ma html validator mi dà errore sul value dell'hidden e non capisco come mai O.o


    codice:
    while (!rst.EOF) {
    	Response.write("<td><form name='carrello' action='2.asp' method='GET'>");
    	Response.write("<input type='hidden' name='cancellare' value='"+rst('pid')+"'><input type='submit' value='CANCELLA'></form></td>");

    Grazie per il consiglio del POST, per ora ho messo GET per vedere cosa mi manda, poi quando funge lo cambio

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    42
    Scartata la prima soluzione...
    Credo che in html sia sbagliato fare un form dentro table...

    Passata alla seconda, sto avendo qualche problemino... spero di risolvere

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    Originariamente inviato da stella_
    Scartata la prima soluzione...
    Credo che in html sia sbagliato fare un form dentro table...
    dentro un cella non ci sono problemi

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    42
    Così?

    codice:
    <table>
    <%
    	Response.write("<tr><th> Nome </th><th>Quantit&agrave; disponibile</th><th>Costo unitario</th><th>Quantit&agrave; da ordinare</th></tr>");
    	while (!rst.EOF) {
    		Response.write("<tr>");
    		Response.write("<td>"+ rst("nome") + "</td>");
    		Response.write("<td>"+ rst("qty")+ "</td>");
    		Response.write("<td>"+ (rst("price") +" &euro;</td>");
    		Response.write("<td><form name='spesa' action='car.asp' method='GET'  onSubmit='return controllo()'><input type='hidden' name='aggiungi' value='"+rst('pid')+"'><input type='text' name='quantita' size='4' value='0'><input type='submit' value='SELEZIONA'></form></td>");
    		Response.write("</tr>");
    		rst.MoveNext( );
    	}
    %>
    </table>
    Validator mi dà un sacco di errori

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    se hai problemi di marcatura apri un post in HTML riportando SOLO ed esclusivamente il codice html/js inviato al browser

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    42
    ok ho scritto...


    Stavo provando il secondo metodo, ma pure qui ho problemi

    fatto un unico form fuori dalla tabella e ho aggiunto un campo hidden, fuori dal ciclo

    codice:
    <input type='hidden' name='aggiungi' value=0>
    poi dentro la tabella,

    codice:
    Response.write("<td><input type='text' name='quantita"+rst('pid')+"' size='4' value=0><input type='submit' value='SELEZIONA' onClick='this.form.aggiungi.value="+rst('pid')+";'></td>");
    Così da leggere, all'invio del form, aggiungi, che contiene il codice del prodotto su cui ho cliccato e poi, invece di leggere tutte le quantità, leggo solo quella corrispondente al mio codice prodotto.

    ma quando invio il form, "aggiungi" è sempre uguale al primo codice che ho in tabella
    non capisco il perchè

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    42
    Non riesco a capire perchè non vada.


    Se non modifico nessun campo "quantità", quando invio, ad "aggiungi" assegna il valore corretto
    Se modifico più campi "quantità", assegna il valore corretto
    Se modifico solo un campo quantità, assegna ad aggiungi SEMPRE il codice del primo elemento presente in tabella

    non capisco il perchè

  10. #10

    RE: Form con più pulsanti

    Non tutti sanno che... anche i pulsanti sono degli input ed in quanto tali vengono inviati, a patto che abbiano un name.
    Se hai un form:
    codice:
    <form method="post" action="read.asp">
       <input type="submit" name="pulsante" value="Pulsante 1">
       <input type="submit" name="pulsante" value="Pulsante 2">
       <input type="submit" name="pulsante" value="Pulsante 3">
    </form>
    in read.asp, Request.Form("pulsante") restituirà "Pulsante 1", "Pulsante 2" o "Pulsante 3" a seconda dell'input che è stato premuto.

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.