• User

    Form contatti in Php

    Ciao a tutti ...
    Vorrei creare un form di contatti funzionante sul mio sito ...
    La pagina in html da applicare al sito c' è l' ho , ovvero:

    <form action="FormMail.asp" method="post" name="frmModulo" id="frmModulo" onSubmit="return Convalida()">
    <table width="400" border="1" cellpadding="0" cellspacing="0" bgcolor="#CCCC99">
    <tr>
    <td>Nome e cognome*: </td>
    <td><input name="txtRagioneSociale" type="text" id="txtRagioneSociale" size="34"></td>
    </tr>
    <tr>
    <td>Indirizzo*:</td>
    <td><input name="txtIndirizzo" type="text" id="txtIndirizzo" size="34"></td>
    </tr>
    <tr>
    <td>CAP*:</td>
    <td><input name="txtCAP" type="text" id="txtCAP" size="34"></td>
    </tr>
    <tr>
    <td>Comune*:</td>
    <td><input name="txtComune" type="text" id="txtCitta" size="34"></td>
    </tr>
    <tr>
    <td>Provincia:</td>
    <td><input name="txtProvincia" type="text" id="txtProvincia" size="34"></td>
    </tr>
    <tr>
    <td>Email*:</td>
    <td><input name="txtEmail" type="text" id="txtEmail" size="34"></td>
    </tr>
    <tr>
    <td>Telefono*:</td>
    <td><input name="txtTel" type="text" id="txtTel" size="34"></td>
    </tr>
    <tr>
    <td valign="top">Messaggio:</td>
    <td><textarea name="txtInfo" cols="27" rows="6" id="txtInfo"></textarea></td>
    </tr>
    <tr>
    <td colspan="2">* Dati obbligatori </td>
    </tr>
    <tr align="right">
    <td colspan="2"><input name="InviaModulo" type="submit" id="InviaModulo" value="Invia">
    <input name="Reimposta" type="reset" id="Reimposta" value="Reimposta"></td>
    </tr>
    </table>
    </form>

    Vorrei rendere funzionante il form usando un linguaggio php quindi far interagire il sito e il server tra loro per far in modo che i dati raccolti arrivino nella mia posta, avendo il sito ospitato su server con database Mysql e Db in php, oltre alla cartella cgi-bin. Il mio problema è che non avendo molta dimestichezza con il linguaggio di programmazione non saprei da dove iniziare e soprattutto come fare...:bho:
    Qualcuno potrebbe essere così gentile da aiutarmi...:?
    Grazie in anticipo...


  • User Attivo

    In teoria puoi usare solo php.
    Mysql lo usi per memorizzare i dati. Per il resto c'è PHP ? 😉
    Ti interessa solo che ti arrivino i dati nella mail?
    Perché se vuoi c'è la miglior funzione di php (una delle migliori):
    mail()
    dentro metti destinatario, oggetto messaggio, corpo messaggio.
    Metti il tutto dentro una pagina php che recupera i dati inviati dal form e te li invii.
    Rapido semplice ed indolore.


  • User

    saresti gentile da descrivermi i vari passaggi, se non ti da noia posso lasciarti la mia email....ti spiego non so proprio nulla e se la cosa magari non è così difficile come sembra potrei apprendere facilmente...tanto per dirti ho appena acquistato un dominio su tophost e ho visto che supporta php e supporto cgi-bin...per il resto non so proprio come impostare...:?

    ho solo quel codice in html che vedi ...non so magari se c' è bisogno di creare una cartella in php o cosa :bho: ....se mi puoi aiutare....comunque nel frattempo grazie


  • User Attivo

    Guarda, scrivo sui forum proprio perché mi hanno aiutato tanto nel mio corso di apprendimento, e ora che posso permettermi di aiutare chi ne ha bisogno, scrivo per loro e per chi leggerà in futuro.

    Il procedimento è semplice: vedi che ogni campo del form ha il campo name?
    Quello è il valore che potrai recuperare dalla pagina php.
    La cartella cgi-bin non ti serve. Ti basta solo un file php!
    Se vedi il form ha come action (separala dalla parola form) FormMail.asp che noi cambieremo in formmail.php.
    Creiamo la pagina formmail.php e cancelliamo tutto quello che crea il software (se usi dreamweaver per esempio) altrimenti basta un editor di testo come blocco note o textedit.
    Per recuperare i valori basta che scrivi nella pagina formmail.php:
    [PHP]<?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $indirizzo=$_POST['txtIndirizzo'];
    $cap=$_POST['txtCAP']
    ...[/PHP]

    e vai avanti così per tutti i campi, cambiando solo l'interno delle quadre con i name dei campi successivi del form.
    Per creare una riga unica di testo con tutti i dati fai così:(partiamo dalla base, poi affiniamo la tecnica)
    [PHP]$tutticampi=$ragionesociale.' , '.$indirizzo.' , '.$cap.' , '.ecc.... ;
    [/PHP]in questo modo unisci tutti i dati appena recuperati in uno solo.
    Perché? Ora vedi.

    Dopo aver messo i valori del form dentro a delle variabili ($...) usiamo la funzione mail() per l'invio dell'email.
    [PHP]mail("[email protected]","Oggetto email", $tutticampi);
    [/PHP]
    e basta.
    Così ti arriverà al tuo indirizzo email, con oggetto "Oggetto email", tutti i campi inseriti dentro al form.
    Se vuoi puoi scrivere un messaggio dell'avvenuto invio.
    [PHP]echo "Messaggio Inviato";
    [/PHP]
    Prova. :ciauz:


  • User

    Quindi ricapitolando (ho corretto la pagina come l' hai scritta tu) sarebbe così:

    1_ html da incollare nella pagina del sito ( io uso come editor Serif WebPlus X2 con ftp interno)....

    <form action="formmail.php"method="post"name="frmModulo"id="frmModulo"onSubmit="return Convalida()">
    <table width="400"border="1"cellpadding="0"cellspacing="0"bgcolor="#CCCC99">
    <tr>
    <td>Nome e cognome*: </td>
    <td><input name="txtRagioneSociale"type="text"id="txtRagioneSociale"size="34"></td>
    </tr>
    <tr>
    <td>Indirizzo*:</td>
    <td><input name="txtIndirizzo"type="text"id="txtIndirizzo"size="34"></td>
    </tr>
    <tr>
    <td>CAP*:</td>
    <td><input name="txtCAP"type="text"id="txtCAP"size="34"></td>
    </tr>
    <tr>
    <td>Comune*:</td>
    <td><input name="txtComune"type="text"id="txtComune"size="34"></td>
    </tr>
    <tr>
    <td>Provincia:</td>
    <td><input name="txtProvincia"type="text"id="txtProvincia"size="34"></td>
    </tr>
    <tr>
    <td>Email*:</td>
    <td><input name="txtEmail"type="text"id="txtEmail"size="34"></td>
    </tr>
    <tr>
    <td>Telefono*:</td>
    <td><input name="txtTel"type="text"id="txtTel"size="34"></td>
    </tr>
    <tr>
    <td valign="top">Messaggio:</td>
    <td><textarea name="txtInfo"cols="27"rows="6"id="txtInfo"></textarea></td>
    </tr>
    <tr>
    <td colspan="2">* Dati obbligatori </td>
    </tr>
    <tr align="right">
    <td colspan="2"><input name="InviaModulo"type="submit"id="InviaModulo"value="Invia">
    <input name="Reimposta"type="reset"id="Reimposta"value="Reimposta"></td>
    </tr>
    </table>
    </form>
    Dopodichè con il blocco note creo un file chiamandolo formmail.php così composto:
    <?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $indirizzo=$_POST['txtIndirizzo'];
    $cap=$_POST['txtCAP'];
    $comune=$_POST['txtComune'];
    $provincia=$_POST['txtProvincia'];
    $email=$_POST['txtEmail'];
    $tel=$_POST['txtTel'];
    $info=$_POST['txtInfo'];
    $tutticampi=$ragionesociale.' , '.$indirizzo.' , '.$cap.' , '.$comune.' , '.$provincia.' , '.$email.' , '.$tel.' , '.$info.';
    mail("[email protected]","Oggetto email", $tutticampi);
    echo "Messaggio Inviato";
    (Ovviamente inserirò il mio indirizzo email).
    A questo punto il file appena creato lo carico sul database php...lo carico dentro ad una cartella, oppure così come sta?
    Scusa la mia somaraggine :rollo:...anche il sito va caricato sul database php o solo il file creato col blocco note?
    Potranno sembrare domande banali però magari capisco meglio, spero di aver detto correttamente i passaggi. Se non sono giusti potresti correggermi per favore?
    Grazie veramente tanto !!!


  • User Attivo

    Nella variabile tutticampi puoi vedere i punti.
    Quei punti servono a collegare stringhe e/o variabili assieme.
    Se scrivi
    echo "Ciao"." mamma";
    ti verrà scritto "Ciao mamma".
    Se sostituisci, come nel nostro caso, mamma con una variabile, è la stessa cosa.
    Il fatto di scrivere $var1.' , '.$var2 ecc... significa collegare ogni variabile ad uno spazio-virgola-spazio per dividere le informazioni, altrimenti sarebbero venute tutte attaccate.
    Ecco perché non servono dopo l'ultima variabile in $tutticampi, se no ti ritroveresti alla fine di tutto con una virgola. Magari ci si può mettere un punto oppure nulla.
    Se al posto della virgola mettessimo \n, andrebbe a capo.

    Ho notato anche che tutti i parametri dei campi del form sono attaccati tra loro, come prima lo era action (method, name, id, ecc...). Staccali, così, oltre che corretto, diventa anche leggibile.

    Il php va aperto e chiuso dai suoi appositi tag, rispettivamente <?php e ?>

    Altra cosa: se vuoi capire cosa ti arriva nella mail, ti conviene mettere il tipo di dato e il suo corrispettivo valore:
    Ragione Sociale: blabla , Indirizzo: blabla , ecc...
    Allora si aggiunge dove ci sono le virgole anche il valore che seguirà:
    [PHP]<?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $indirizzo=$_POST['txtIndirizzo'];
    $cap=$_POST['txtCAP'];
    $comune=$_POST['txtComune'];
    $provincia=$_POST['txtProvincia'];
    $email=$_POST['txtEmail'];
    $tel=$_POST['txtTel'];
    $info=$_POST['txtInfo'];
    $tutticampi='Ragione Sociale: '.$ragionesociale.' , Indirizzo: '.$indirizzo.' , CAP: '.$cap.' , Comune: '.$comune.' , Provincia: '.$provincia.' , Email: '.$email.' , Telefono: '.$tel.' , Info: '.$info;
    mail("[email protected]","Oggetto email", $tutticampi);
    echo "Messaggio Inviato";
    ?>
    [/PHP]

    Comunque studiati qualche guida base, magari qui o su php.html.it , giusto per capire che razza di codice ti trovi davanti.
    In una giornata già capisci i costrutti base e, a par mio, è anche divertente (soprattutto se si continua a programmare e si scoprono cose affascinanti!)


  • User

    Grazie Portapipe il tuo aiuto è veramente prezioso 🙂
    Adesso ho capito la funzione del linguaggio che approfondirò ulteriormente con le guide non appena mi riesce questo progetto.
    Io adesso volevo solo capire cosa devo fare con il foglio creato col blocco note (formmail.php), ovvero l' ultima scrittura in php che hai postato.
    Devo metterlo in una cartella e fare l' upload nel database php, o cosa ?
    Se lo devo trasferire sul database php, io uso filezilla come ftp. Devo lasciarlo in automatico, in ASCII o in BIN ?
    Ti spiego Tophost mi da la possibilità di ospitare il mio sito sul server e di potermi creare fino a 4 database in php. io uno lo creato con username e password....purtroppo è questo concetto che non mi è chiaro non avendolo mai fatto fino ad ora! Ci carico anche il sito nel database php o solo la cartella del blocco note...sempre che vada caricata....non so? :bho:
    Mi potresti descrivere i passaggi che devo fare ora?

    ....se posso contraccambiare in qualcosa per l' aiuto che mi stai dando ...molto volentieri..
    Grazie portapipe


  • User Attivo

    Ti dirò, credo che tu abbia le idee un pò confuse.
    Il database non è php bensì MySql.
    PHP è come dire HTML in un certo modo, solo che una pagina PHP quando viene eseguita crea del codice html (con i contenuti dinamici) senza che l'utente se ne accorga.
    E' questo il concetto moltissimo in generale di php. Un linguaggio lato server (infatti per vedere una pagina in php ti serve passare per un server a differenza di html).
    Quindi creare una pagina php significa creare un file html però dinamico (anche qui ce ne sarebbero da dire ma grosso modo è così).
    Metti il file form e il file php nella stessa cartella. cgi-bin, database.. tutte cose che non ti servono.

    Se invece vuoi salvare i dati che inviano dal form allora ti serve il database e una query (domanda) INSERT (inserimento) per inserire i dati nel database.

    Fatti un giro per le guide, anche solo per capire come funziona, se no ragioni nel modo sbagliato e ci metti più tempo. Fidati.


  • User

    :yuppi: grazie portapipe per i tuoi consigli utili!
    Alla fine sono riuscito!
    Il tuo txt in php ha funzionato
    Ho capito poi, dopo vari tentativi,come farlo funzionare !:fumato:
    :ciauz:


  • User Attivo

    Mi piace quando da "semplici" spiegazioni si capiscano le cose.
    Vuol dire imparare! Che credo sia l'obiettivo di ogni forum, ormai un pò perso.
    Complimenti a te e, mi raccomando, studia 😉


  • User

    Solo una cosa mi sfugge...
    come faccio a rendere obbligatori i campi?
    ...sempre facendo riferimento ai file precedenti

    per caso devo aggiungere qualche variabile nel file in php ?

    :ciauz:


  • User Attivo

    Puoi usare javascript (consigliato) ma impariamo un linguaggio alla volta! 😉
    Puoi inserire una condizione nel file dell'invio mail per ogni valore.
    if(empty(campodacontrollare)){ esegui il codice... }else{ altro codice...}
    dove empty sta per vuoto e il campo da controllare sarà i valori che ricevi dal form.
    Quindi, SE il campo txtRagioneSociale E' VUOTO, esegui il codice..., ALTRIMENTI altro codice...

    Semplice no?
    Dovrai chiaramente crearne uno per ogni campo che vuoi sia obbligatorio.

    Useremo anche un redirect così:
    header("location:form.php");
    dove form.php è il link nel quale si verrà indirizzati.

    Per il messaggio di errore, metteremo un messaggio tramite GET, che è un metodo semplice per passare valori tra le pagine.
    E' come il POST (che utilizziamo noi) ma si passa il valore tramite la URL in questo modo:
    form.php?messaggio=Inserire tutti i campi
    a differenza del POST che li passa in background, così che non possano essere viste dall'utente.

    Il punto di domanda significa che ci sono delle variabili dopo, messaggio è il nome della variabile (puoi mettere quello che vuoi) mentre dopo l'uguale c'è il valore, in questo caso una scritta di avviso.

    Quindi sarà:
    [PHP]
    $ragionesociale=$_POST['txtRagioneSociale'];
    //avendo la variabile già creata, usiamo quella per rapidità
    if(empty($ragionesociale)){
    header("location:form.php?messaggio=Inserire tutti i campi!");
    }
    //l'else non ci serve poiché SOLO se il campo che ci interessa sarà vuoto verrai rimandato alla pagina form, altrimenti continua al passo successivo[/PHP]

    Nella pagina del form puoi aggiungere che SE esiste una variabile messaggio nell'URL (quindi se entri direttamente non c'è ma se vieni rimandato dalla pagina di invio della mail si, ricordi?) allora scrivila a video:

    [PHP]if($_GET['messaggio']){
    echo $_GET['messaggio'];
    }[/PHP]

    A seconda di dove lo metti uscirà il messaggio.

    Volendo puoi creare un messaggio univoco per ogni controllo variabile nella pagina di invio mail, così da avere tanti messaggi quanti sono i campi che mancano, ma così va bene lo stesso e soprattutto sarebbe molto lungo (ma se c'è necessità si fa di tutto, fidati).

    :ciaosai:


  • User

    Grazie ancore portapipe i tuoi consigli sono per me come oro...:)

    :ciauz:


  • User Attivo

    Magari!
    Un pò di soldi non mi farebbero male in questo momento 😉
    Ciao! :ciaosai:


  • User Newbie

    ciao a tutti,
    sono alle prime armi con php e ho bisogno di una mano.
    Sto cercando di creare un sito di immobili.
    La mia domanda è: da una pagina di dettaglio come faccio a richiamare il codice della casa del form in modo da avere il riferimento dell'immobile richiesto?
    Grazie per ogni consiglio


  • User Attivo

    Apri un nuovo thread. Questo è stato risolto! 🙂


  • User Newbie

    non so come inviare le mie richieste, è la prima volta che mi iscrivo ad un forum:bho:


  • User Attivo

    Se vai nella lista delle domande, per intenderci qui:
    giorgiotave.it/forum/php-mysql/
    in alto c'è Nuova Discussione. Clicca li, scrivi il titolo del thread (leggi bene le regole prima di postare) e poi formula la tua domanda, stando attento a dichiarare il tuo livello di preparazione nell'argomento (in questo caso php e mysql) ed esprimendo bene bene la domanda, così che ti si possa aiutare in modo costruttivo.
    I forum sono una miniera di informazioni! 🙂


  • User Newbie

    ok fatto grazie 😉


  • User

    Ciao portapipe scusami se rompo...ma potresti dare un occhiata a questa cosa....(prometto che è l' ultima:))....

    questo è il form nel sito:

    <form action="formmailmotori.php" method="post" name="frmModulo" id="frmModulo" onSubmit="return Convalida()">
    <table width="450"border="0"cellpadding="0"cellspacing="0"bgcolor="white">
    <tr>
    <td>Nome e cognome*: </td>
    <td><input name="txtRagioneSociale"type="text"id="txtRagioneSociale"size="34"></td>
    </tr>
    <tr>
    <td>Comune*:</td>
    <td><input name="txtComune"type="text"id="txtComune"size="34"></td>
    </tr>
    <tr>
    <td>Provincia:</td>
    <td><input name="txtProvincia"type="text"id="txtProvincia"size="34"></td>
    </tr>
    <tr>
    <td>Email*:</td>
    <td><input name="txtEmail"type="text"id="txtEmail"size="34"></td>
    </tr>
    <tr>
    <td>Telefono*:</td>
    <td><input name="txtTelefono"type="text"id="txtTelefono"size="34"></td>
    </tr>
    <tr>
    <td><input type="radio" name="radio_1" value="valore_1"> Pacchetto Base </td>
    </tr>
    <tr>
    <td><input type="radio" name="radio_1" value="valore_2"> Pacchetto Medio </td>
    </tr>
    <tr>
    <td><input type="radio" name="radio_1" value="valore_3"> Pacchetto Avanzato </td>
    </tr>
    <tr>
    <td valign="top">Informazioni:</td>
    <td><textarea name="txtInformazioni"cols="28"rows="6"id="txtInformazioni"></textarea></td>
    </tr>
    <tr>
    <td colspan="2">* Dati obbligatori </td>
    </tr>
    <tr align="center">
    <td colspan="2"><input name="InviaModulo"type="submit"id="InviaModulo"value="Invia">
    <input name="Reimposta"type="reset"id="Reimposta"value="Reimposta"></td>
    </tr>
    </table>
    </form>

    mentre questo è il file in php:

    <?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $indirizzo=$_POST['txtIndirizzo'];
    $cap=$_POST['txtCAP'];
    $comune=$_POST['txtComune'];
    $provincia=$_POST['txtProvincia'];
    $email=$_POST['txtEmail'];
    $telefono=$_POST['txtTelefono'];
    $pacchetto base=$_POST['radio_1'];
    $pacchetto medio=$_POST['radio_1'];
    $pacchetto avanzato=$_POST['radio_1'];
    $informazioni=$_POST['txtInformazioni'];
    $tutticampi='Ragione Sociale: '.$ragionesociale.' , ' Comune: '.$comune.' , 'Provincia: '.$provincia.' , 'Email: '.$email.' , 'Telefono: '.$tel.' , 'Pacchetto Base: '.$radio_1.' , 'Pacchetto Medio: '.$radio_1.' , 'Pacchetto Avanzato: '.$radio_1.' , 'Informazioni: '.$informazioni;
    mail("tuoindirizzo@email","Oggetto email", $tutticampi);
    echo "Il messaggio è stato inviato correttamente! Riceverai una risposta al più presto...grazie! Per ritornare al sito clicca la freccia indietro nel tuo browser.";
    ?>

    Il problema è che il file in php molto probabilmente è sbagliato ,( secondo me è il "radio" che non va bene :mmm: ) , quando compilo il form e clicco su "invia" mi esce questo errore:

    Parse error: syntax error, unexpected T_STRING in /home/mhd-01/indirizzowebdelmiosito/htdocs/formmailmotori.php on line 9

    Mi potresti scrivere il file in php giusto perchè possa funzionare?
    Grazie in anticipo portapipe....
    :ciauz: