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

Discussione: problema con form

  1. #1

    problema con form

    Buondì sono alla mia prima esperienza con le form... e credo di aver fatto un bel po' di casino, oltre al fatto che ho molti dubbi. Provo ad andare per ordine: innanzitutto la prima parte: ossia devo fare in modo che i dati di questa form arrivino per posta elettronica al cliente; per fare una prova ho inserito il mio indirizzo di posta, ma come dati mi arriva solo ciò che è nella textarea e non gli altri dati (cognome, nome, tel, etc...): dove sbaglio?

    e' corretta la semantica che ho scritto?
    la legend non mi si visualizza bene, non mi si visualizza nel font che gli ho dato pur avendo impostato sul CSS dei parametri: dove sbaglio?

    Inoltre come mai cliccando sulla label, non ottengo il focus sul campo di input?

    Inoltre, cosa devo aggiungere perché la form funzioni anche a chi utilizza un computer senza mouse e quindi la tastiera?

    Grazie anticipatamente, Livia

    codice:
    <form name="prev assicurazioni" action="mailto:livia@graf.roma.it?subject=richiesta informazioni assicurazioni" method="post">
      <label for="Cognome" class="left">Cognome: </label> 
      <input type="text" id="cognome" size="40" maxlength="25"  />
    
      <label for="Nome"  class="left">Nome: </label> 
      <input type="text" id="nome" size="40" maxlength="25" />
    
      <label for="Azienda"  class="left">Azienda: </label> 
      <input type="text" id="azienda" size="40" maxlength="25" />
    
      <label for="Tel"  class="left">Tel: </label> 
      <input type="text" id="telefono" size="40" maxlength="12" />
    
      <label for="Fax" class="left">Fax: </label> 
      <input type="text" id="fax" size="40" maxlength="12" />
    
      <label for="email"  class="left">e-mail: </label> 
      <input type="text" id="email" size="40" maxlength="40" />
    
       <label for="Oggetto"  class="left">Oggetto della richiesta:</label> 
    
      <textarea name="testo" rows="5" cols"50"  class="right"></textarea> 
    
    <legend>Accetto le condizioni sulla privacy:</legend> 
    <label for="accetto" class="right">Accetto <input type="radio" name="privacy" id="accetto" ></label>
      <label for="nonaccetto" class="right">Non Accetto<input type="radio" name="privacy" id="nonaccetto"></label>
    
      <input type="submit" value="invia">
        </form>



    il codice css è questo

    codice:
    form  {width:490px;
    border-top: 2px solid #c1003c; 
    border-bottom:2px solid #c1003c; 
    margin:15px 0 15px 0; 
    padding:15px 0 15px 0;}
     
    label.left
    {float:left; 
    width:150px; 
    font-size:13px; 
    margin-right:5px; 
    text-align:right; 
    margin-bottom:10px;}
     
    label.right  
    {float:right; 
    font-size:13px; 
    padding-right:10px;}
     
    legend 
    {float:left; 
    font-size:13px; 
    line-height:18px;
    margin-right:5px;}  
    
    input
    {margin-bottom:5px; 
    border-style:solid; 
    border-color: #778AA2 #7EA4D8 #7EA4D8 #778AA2;
    border-width: 2px 1px 1px 2px; 
    margin-bottom:10px;} 
    	 
    textarea {width:486px;
    margin-bottom:5px;border-style: solid;  
    border-color: #778AA2 #7EA4D8 #7EA4D8 #778AA2; 
    border-width: 2px 1px 1px 2px;}   
    br{clear:left;}

  2. #2
    Ho visto che in merito alle form è stata data una serie di indicazioni nel post di Bambee del 17 Novembre, soprattutto da parte di Noncelafaccio+. Vorrei chiedergli se posso considerare valide anche per il mio caso le indicazioni che da (anche per il file in php che io non ho proprio considerato). Grazie

  3. #3
    Ciao Livia,
    sì, quello che ho scritto a Bambee è sostanzialmente valido, ma non so se sia applicabile al tuo caso perché non ho ben capito tu cosa devi fare.

    Lasciamo perdere per ora i dettagli secondari (css, focus, computer senza mouse) e concentriamoci sulla mail.

    Le cose che mi lasciano perplesso sono due, la prima è la "action="mailto:...".
    Non ho mai visto una cosa simile e, di primo acchito, direi che è sbagliata ma se mi dici che funziona, pur inviando solo la textarea, devo pensare che l'errore sia mio e che mi stia sfuggendo qualcosa.
    Adesso non posso provare ma tra stasera e domani cercherò di togliermi la curiosità di capire se e come può funzionare quella action.

    L'altra cosa che non capisco è cosa effettivamente devi inviare al cliente; i dati del form o il form stesso? Tu hai parlato di far arrivare al cliente i dati e questo mi farebbe pensare che il form lo riempi tu e poi invii i dati inseriti al cliente però il tipo di form (Cognome, Nome ... accettazione della privacy) mi fanno pensare che tu invece voglia che sia il cliente a compilare il form e che i dati arrivino a te.

    Mi chiarisci un po' meglio la questione?

    E dimmi anche un'altra cosa, per queste mail ti appoggi ad un server web, cioè hai un sito o fai tutto in locale? Se sei su un server web è linux o windows (e in questo caso ha il supporto php?), se invece sei in locale hai un server smtp a disposizione per spedire le mail?

    Queste domande mi servono a capire se sei in una situazione simile a quella di Bambee (form ospitato nel sito, linux, e necessità di raccogliere le mail dei navigatori) o in una situazione diversa.

    Fammi sapere

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  4. #4
    Oh, ciao! speravo tanto di scambiare con te qualche battuta...

    1) allora, innanzitutto come premesso, questa è praticamente la mia prima form è tutto quello che ho scritto l'ho dedotto da ciò che ho trovato facendo le mie ricerche su google.
    Proprio in una di queste pagine ho trovato questo:

    Action
    Con action indicheremo semplicemente la pagina di risposta del modulo,o in casi particolari potremmo inviare i dati di input ad un destinatario impostando la propria email.
    Nel primo caso avremmo
    HTML
    <form name="dati" action="pagina.php">
    ...
    </form>

    Nel secondo avremmo:
    HTML
    <form action="mailto:tuamail@nomeDominio.it?subject=Ogge tto" method="POST">
    ....
    </form>

    ...ma forse non si applica al mio caso e se quanto trovato scritto è giusto!!...

    2) Per quel che mi ha detto il cliente a cui sto facendo il sito, lui vuole che in alcune pagine ci siano delle form per la richiesta di informazioni e poter quindi ricevere via e mail i dati di queste form digitati dai suoi clienti per poter poi ricontattali. Io sto solo costruendo per lui questo sito, avevo inserito la mia mail solo per provare le form.

    3) il dominio del cliente è stato preso su aruba ed è tanto per windows che per linux (spero di aver risposto alla tua domanda..)

    Spero di essere stata più chiara, sorry!!!!

  5. #5
    Originariamente inviato da liviasettantuno
    Oh, ciao! speravo tanto di scambiare con te qualche battuta...
    Ciao, sono lusingato ma guarda che io qui sono l'ultimo arrivato e, soprattutto, ... faresti bene a non credere ad una parola di quello che dico

    Venendo al tuo problema.

    Non sapevo di quel modo di usare la action, dovrò documentarmi, comunque ora che ho capito come devono viaggiare queste mail ... sì, vale quello che ho detto per Bambee.

    In quell'occasione le ho anche spiegato come modificare il form per aggiungere dei campi, quindi dovresti riuscire anche tu ad adattarlo e poi, il resto è tutto uguale, oltre al form che raccoglie i dati serve un programmino php che li invia per mail e che poi invia una pagina di ringraziamento o di errore.

    Tutto come nel suo caso.

    Adesso dò un'occhiata alle altre cose che chiedevi però non so se ce la faccio per stasera e domani, non venendo in ufficio, probabilmente non mi collegherò, spero che tu non abbia fretta.

    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    ..Allora, ho seguito le indicazioni presenti in post precedenti ma, ovviamente, non mi funziona....

    posto il codice sia dell'html che del php.

    codice:
    <form name="info assicurazioni" action="sendmail.php" method="post">
      <label for="Cognome" class="left">Cognome: </label> 
      <input type="text" id="cognome" size="40" maxlength="25"  />
    
      <label for="Nome"  class="left">Nome: </label> 
      <input type="text" id="nome" size="40" maxlength="25" />
    
      <label for="Azienda"  class="left">Azienda: </label> 
      <input type="text" id="azienda" size="40" maxlength="25" />
    
      <label for="Tel"  class="left">Tel: </label> 
      <input type="text" id="telefono" size="40" maxlength="12" />
    
      <label for="Fax" class="left">Fax: </label> 
      <input type="text" id="fax" size="40" maxlength="12" />
    
      <label for="email"  class="left">e-mail: </label> 
      <input type="text" id="email" size="40" maxlength="40" />
    
       <label for="Oggetto"  class="left">Oggetto della richiesta:</label> 
    
      <textarea name="testo" rows="5" cols"50"  class="right"></textarea> 
    
    <legend>Accetto le condizioni sulla privacy:</legend> 
    <label for="accetto" class="right">Accetto <input type="radio" name="privacy" id="accetto" ></label>
      <label for="nonaccetto" class="right">Non Accetto<input type="radio" name="privacy" id="nonaccetto"></label>
    
      <input type="submit" value="invia">
        </form>

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sendmail.php</title>
    </head>
    
    <body>
    <?php
    
       $cognome  = htmlspecialchars($_POST['cognome']);
       $nome  	= htmlspecialchars($_POST['nome']);
       $azienda   = htmlspecialchars($_POST['azienda']);
       $telefono  = htmlspecialchars($_POST['telefono']);
       $fax  = htmlspecialchars($_POST['fax']);
       $e_mail   = htmlspecialchars($_POST['_email']);
       $testo   = htmlspecialchars($_POST['testo']);
       $accetto  = htmlspecialchars($_POST['accetto']);
       $non_accetto   = htmlspecialchars($_POST['non_accetto']);
    
    
    
       $destinatari   = "livia@graf.roma.it <livia@graf.roma.it>";
    
       $intestazioni  = "From: postmaster@arceservizi.com <postmaster@arceservizi.com>\r\n";
       $intestazioni .= "Reply-To: postmaster@arceservizi.com <postmaster@arceservizi.com>\r\n";
    
       $oggetto = "Richiesta di informazioni su Arce Assicurazioni";
    
       $messaggio = "cognome: " . $cognome . "\r\nnome: " . $nome . "\r\nazienda: " . $azienda . "\r\ntelefono: " . $telefono . "\r\nfax: " . $fax . "\r\ne_mail: " . $e_mail .  "\r\ntesto: " . $testo . "\r\naccetto: " . $accetto .  "\r\nnon_accetto: " . $non_accetto;
    
       if (!mail($destinatari, $oggetto, $messaggio, $intestazioni)) {
          header("Location:errore_spedizione.htm");
       } else {
          header("Location:conferma_spedizione.htm");
       };
    
    ?>
    
    </body>
    </html>

    allora, andando per ordine: quando compilo la form e premo invio mi dà un errore di 404 e credo che debba impostare meglio la locazione delle pagine "conferma" ed "errore". Queste, insieme alla pagina sendmail.php stanno in una cartella di secondo livello del sito, ossia: al momento il sito in lavorazione, per non lasciarlo visibile a tutti, è in una cartella, per cui per accedervi bisogna digitare www.arceservizi.com/sito/ inoltre, siccome il sito tratta più argomenti, ci sono delle cartelle interne e i file sendmail.php e "conferma.html" ed "errore.html" stanno tutte insieme all'interno di una di queste cartelle riferite a quell'argomento. (se qualcuno mi ha capito gli stringo la mano!!!).

    comunque, a parte ciò, anche se mi dà errore 404 la mail mi arriva ma è composta solo dai nomi dei vari campi, ossia,
    cognome:
    nome:
    azienda:
    etc...

    Tutti i campi sono vuoti ossia non presentano i dati che l'ipotetico cliente inserisce.
    Solo nella text area è presete quanto viene digitato e quindi mi domando se la cosa dipende dal fatto che sull'html in tutti i "label for" al posto del "name" c'è l' "id"....

    Inoltre volevo chiedere come devo impostare il discorso dei pulsanti della privaci (accetto e non accetto) perché in teoria dovrebbe funzionare che l'invio procede solo se si accettano le condizioni. Ipotizzo che debba inserire una regola nel php, giusto? Quale???

    Lo so, chiedo scusa per tutte queste domande, ma sembrava tutto molto più semplice...
    Grazie anticipatamente!!

  7. #7
    Dai che sei sulla buona strada.

    Vado in ordine sparso.

    Il programmino php ha come unico compito quello ricevere i dati del form, inviare la mail e mandare al client una delle due pagine OK/KO a seconda dell'esito dell'invio.
    Non deve esserci quindi la parte iniziale (e finale) di tag html altrimenti il php, incontrandoli, comincia a mandare giù gli header della pagina e quando poi prova ad inviare una delle due paginette dà un errore che suona più o meno "headers already sent...".
    Quindi sendmail deve cominciare con <?php e finire con ?>

    I name devono essere proprio name perché l'array $_POST usa quelli. La textarea è l'unica che arriva proprio perché è l'unica ad avere un name. Assegna name diversi ai vari elementi. E se ti servono anche gli id puoi assegnare anche quelli ai campi. In genere si dà lo stesso valore a entrambi.

    Nel name del form sostituisci quello spazio con un _ (underscore). E' sempre una buona norma non usare mai spazi per id e name.

    Per il puntamento da una cartella ad un'altra le regole sono:
    / - punta alla root
    ./ - punta alla stessa cartella in cui si trova lo script
    ../ - sale di un livello
    abc/ - scende nella cartella abc

    Se quindi hai, ad esempio, un tag <img> con queste diverse src:
    codice:
    src="/immagini/img01.jpg"
    src="../../immagini/img01.jpg"
    src="immagini/img01.jpg"
    src="./immagini/img01.jpg"
    src="img01.jpg"
    nel primo caso il puntamento viene effettuato partendo dalla root e scendendo nella cartella immagini, nel secondo caso lo script salirà di due livelli e poi scenderà nella cartella immagini, nel terzo e quarto caso la cartella immagini viene cercata come sottodirectory della cartella in cui si trova lo script, nel quinto caso l'immagine deve trovarsi nella stessa cartella dello script

    Queste regole valgono anche per i lnk e ogni volta che ci sia un percorso da indicare.

    Visto che il tuo sito è ospitato in una cartella temporanea ti converrebbe usare sempre i puntamenti relativi (cioè tutti tranne il primo) in modo che quando poi lo farai venire alla luce portandolo su di un livello non dovrai cambiare nessun link.

    Non ricordo come si utilizzano i radio button, adesso mi documento, tu intanto togli le due istruzioni
    codice:
       $accetto  = htmlspecialchars($_POST['accetto']);
       $non_accetto   = htmlspecialchars($_POST['non_accetto']);
    per evitare che creino problemi e fai le altre cose che ti ho detto e vediamo come va.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  8. #8
    Ciao! innanzitutto grazie per la pazienza

    Eccomi qui!! inserendo i "name" funziona, ossia mi arriva la mail con tutte le indicazioni.
    Ho tolto i riferimenti

    $accetto = htmlspecialchars($_POST['accetto']);
    $non_accetto = htmlspecialchars($_POST['non_accetto'])

    Continuo ad avere errore di pagina 404..credo di aver sbagliato con i percorsi relativi.
    Provo a dirti quel che ho fatto.
    Avendo il sito che è www.arceservizi.com, all'interno del quale c'è la cartella "sito", all'interno della quale oltre alla index e altre pagine "istituzionali" ci sono le cartelle dei prodotti tra cui "Assicurazioni" all'nterno della quale c'è la cartella "menusec"(ondario), ho realizzato il percorso relativo così
    header("Location:/sito/assicurazioni/menusec/errore_spedizione.htm");
    è corretto o è il contrario? cioè devo andare dal basso verso l'alto o dall'alto verso il basso?

    Inoltre, nel post da te trattato precedentemente, dicevi che il percorso va modificato tanto alla location quanto alla action. Per action intendi quella presente nella pagina html? al momento l'avrei fatto ma appunto, non funge (mumblemumble).

    Il radio bottom continua a darmi problemi, perché mi permette di selezionarli tutte e due, invece dovrebbe essere discriminante.

    Ti inserisco i codici sia dell'html che del php così puoi vedere quali altre cappellate ho fatto.

    codice:
    <form name="info_assicurazioni" action="/sito/assicurazioni/menusec/sendmail.php" method="post">
      <label for="Cognome" class="left">Cognome: </label> 
      <input type="text" name="cognome" id="cognome" size="40" maxlength="25"  />
    
      <label for="Nome"  class="left">Nome: </label> 
      <input type="text"  name="nome" id="nome" size="40" maxlength="25" />
    
      <label for="Azienda"  class="left">Azienda: </label> 
      <input type="text"  name="azienda" id="azienda" size="40" maxlength="25" />
    
      <label for="Tel"  class="left">Tel: </label> 
      <input type="text" name="telefono" id="telefono" size="40" maxlength="12" />
    
      <label for="Fax" class="left">Fax: </label> 
      <input type="text" name="fax" id="fax" size="40" maxlength="12" />
    
      <label for="e_mail"  class="left">e-mail: </label> 
      <input type="text" name="e_mail" id="e_mail" size="40" maxlength="40" />
    
       <label for="Oggetto"  class="left">Oggetto della richiesta:</label> 
    
      <textarea name="testo" rows="5" cols"50"  class="right"></textarea> 
    
    <legend>Accetto le condizioni sulla privacy:</legend> 
    <label for="accetto" class="right">Accetto <input type="radio" name="privacy" id="accetto" ></label>
      <label for="non_accetto" class="right">Non Accetto<input type="radio" name="privacy" id="non_accetto"></label>
    
      <input type="submit" value="invia">
        </form>

    e il php

    codice:
    <?php
    
       $cognome  = htmlspecialchars($_POST['cognome']);
       $nome  	= htmlspecialchars($_POST['nome']);
       $azienda   = htmlspecialchars($_POST['azienda']);
       $telefono  = htmlspecialchars($_POST['telefono']);
       $fax  = htmlspecialchars($_POST['fax']);
       $e_mail   = htmlspecialchars($_POST['e_mail']);
       $testo   = htmlspecialchars($_POST['testo']);
    
    
       $destinatari   = "livia@graf.roma.it <livia@graf.roma.it>";
    
       $intestazioni  = "From: postmaster@arceservizi.com <postmaster@arceservizi.com>\r\n";
       $intestazioni .= "Reply-To: postmaster@arceservizi.com <postmaster@arceservizi.com>\r\n";
    
       $oggetto = "Richiesta di informazioni su Arce Assicurazioni";
    
       $messaggio = "cognome: " . $cognome . "\r\nnome: " . $nome . "\r\nazienda: " . $azienda . "\r\ntelefono: " . $telefono . "\r\nfax: " . $fax . "\r\ne_mail: " . $e_mail .  "\r\ntesto: " . $testo . "\r\naccetto: " . $accetto .  "\r\nnon_accetto: " . $non_accetto;
    
       if (!mail($destinatari, $oggetto, $messaggio, $intestazioni)) {
          header("Location:/sito/assicurazioni/menusec/errore_spedizione.htm");
       } else {
          header("Location:/sito/assicurazioni/menusec/conferma_spedizione.htm");
       };
    
    ?>
    ...lo so, stai pensando.."noncelafaccio+!!!"....non potevi scegliere nome più appropriato!!!
    Thanks

  9. #9

    ok, sono un po' sbadata!!!

    perché se non metto il valore nel radio, difficilmente mi può fare la scelta selettiva...
    Riallego il codice html che ho rivisto da questo punto di vista.
    Per il php sono completamente nelle tue (vostre) mani.

    Thanks

    codice:
    <form name="info_assicurazioni" action="/sito/assicurazioni/menusec/sendmail.php" method="post">
      <label for="Cognome" class="left">Cognome: </label> 
      <input type="text" name="cognome" id="cognome" size="40" maxlength="25"  />
    
      <label for="Nome"  class="left">Nome: </label> 
      <input type="text"  name="nome" id="nome" size="40" maxlength="25" />
    
      <label for="Azienda"  class="left">Azienda: </label> 
      <input type="text"  name="azienda" id="azienda" size="40" maxlength="25" />
    
      <label for="Tel"  class="left">Tel: </label> 
      <input type="text" name="telefono" id="telefono" size="40" maxlength="12" />
    
      <label for="Fax" class="left">Fax: </label> 
      <input type="text" name="fax" id="fax" size="40" maxlength="12" />
    
      <label for="e_mail"  class="left">e-mail: </label> 
      <input type="text" name="e_mail" id="e_mail" size="40" maxlength="40" />
    
       <label for="Oggetto"  class="left">Oggetto della richiesta:</label> 
    
      <textarea name="testo" rows="5" cols"50"  class="right"></textarea> 
    
    <legend>Accetto le condizioni sulla privacy:</legend> 
    <label for="privacysi" class="right">Accetto <input type="radio" name="privacy" id="privacysi" value="accetto" ></label>
      <label for="privacyno" class="right">Non Accetto<input type="radio" name="privacy" id="privacyno" value="non_accetto"></label>
    
      <input type="submit" value="invia">
        </form>

  10. #10
    Tranquilla, nessun problema, il mio nick è semplicemente un omaggio a Magda e Furio (ma forse sei troppo giovane per sapere chi sono).

    Allora, il percorso mi sembra giusto, solo... non sarà che Assicurazioni è scritto maiuscolo e tu nel path lo hai messo minuscolo? Se il server è linux anche questo conta.

    Comunque per verificare il path prova a metterlo direttamente nella url, cioè scrivi
    http://www.arceservizi.com/sito/assi...spedizione.htm
    e vedi se ti si visualizza la pagina

    Prova anche a inserire uno spazio prima del path e/o a racchiuderlo fra apici, oppure, alla peggio, una volta trovato nella url il path giusto mettilo pari pari nella location

    codice:
    header("Location: '/sito/assicurazioni/menusec/errore_spedizione.htm'");
    
    header("Location: http://www.......");
    oppure metti i percorsi relativi (quelli che hai messo sono assoluti perché cominciano con / quindi fanno riferimento alla root), se per esempio sendmail è dentro assicurazioni il percorso dovebbe essere menusec/errore_spedizione.htm.

    Anche per il percorso di sendmail fai un po' di prove, fai sicuramente prima tu a fare 10 prove che io a indicartene una.

    E se tutto manca metti tutto nella stessa cartella ed elimini i path e poi con calma fai tutte le prove e metti ordine. Comunque se può consolarti, anch'io litigo sempre con i path.

    Le label dei radio non vanno bene, vanno chiuse prima del tag <input> (come per i casi precedenti):

    codice:
    <label ...>Accetto</label><input type="radio" ...>
    Adesso vado a casa, riprendiamo domani. Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

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.