• 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:


  • User Attivo

    Innanzi tutto non puoi usare gli spazi per dichiarare variabili, per questo si usano gli under-score _ .
    Poi la variabile radio_1 sarà una sola. Creare 3 variabili con lo stesso valore non ti serve a nulla, in quanto l'utente SCEGLIE UNA OPZIONE tra tre, quindi il valore sarà solo uno.
    Piuttosto puoi fare un controllo sul valore che arriva e scrivi di conseguenza quello che ti serve:
    Attento comunque che hai chiamato pacchetto base (quello con lo spazio) medio e avanzato il radio_1 ma nella variabile tutticampi richiami la variabile radio_1, non pacchetto base, medio e avanzato!!!

    Fai attenzione a queste cose (lo spazio potevi non saperlo ma alle variabili devi fare attenzione!!).

    Una variabile è un puntatore per un valore che vuoi:
    $nome="Paolo";
    ogni volta che voglio richiamare il mio nome preferito nella pagina richiamerò $paolo .
    Così fai con i pacchetti.
    [PHP]
    <?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $indirizzo=$_POST['txtIndirizzo'];
    $cap=$_POST['txtCAP'];
    $comune=$_POST['txtComune'];
    $provincia=$_POST['txtProvincia'];
    $email=$_POST['txtEmail'];
    $telefono=$_POST['txtTelefono'];
    //In base al valore che ha radio_1 scrivi il pacchetto corrispondente
    $radio=$_POST['radio_1'];
    if($radio="valore_1"){
    $pacchetto="Pacchetto base scelto";
    }elseif($radio="valore_2"){
    $pacchetto="Pacchetto medio scelto";
    }elseif($radio="valore_3"){
    $pacchetto="Pacchetto avanzato scelto";
    }
    //poi inseriremo la variabile pacchetto che scriverà il tipo di pacchetto scelto
    $informazioni=$_POST['txtInformazioni'];
    $tutticampi='Ragione Sociale: '.$ragionesociale.' , Comune: '.$comune.' , Provincia: '.$provincia.' , Email: '.$email.' , Telefono: '.$tel.' , '.$pacchetto.' , 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.";
    //per la freccia indietro puoi mettere un bottone con il parametro onclick javascript history back
    ?> [/PHP]

    Ciao :ciaosai:

    edit all'ultimo momento! E' scritto veramente male amico mio. Gli apici! Erano quasi tutti invertiti!


  • User

    🙂 grazie portapipe....ecco perchè il mio non funzionava...
    era scandaloso:o

    In effetti inserendo un bottone per tornare indietro sarebbe meglio...ma come faccio?


  • User Attivo

    <input type="button" value="Indietro" onClick="javascript:history.back()" name="button">

    Cerca in google se hai bisogno. Se non trovi chiedi qui 😉


  • User

    :ciauz: portapipe...
    ricordi lo script in php dell' ultimo form con l' elemento radio....
    (il form in html e il file php sono nelle nostre ultime discussioni)
    precisamente quello che mi hai fatto tu:

    <?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $indirizzo=$_POST['txtIndirizzo'];
    $cap=$_POST['txtCAP'];
    $comune=$_POST['txtComune'];
    $provincia=$_POST['txtProvincia'];
    $email=$_POST['txtEmail'];
    $tel=$_POST['txtTel'];
    //In base al valore che ha radio_1 scrivi il pacchetto corrispondente
    $radio=$_POST['radio_1'];
    if($radio="valore_1"){
    $pacchetto="Pacchetto base scelto";
    }elseif($radio="valore_2"){
    $pacchetto="Pacchetto medio scelto";
    }elseif($radio="valore_3"){
    $pacchetto="Pacchetto avanzato scelto";
    }
    //poi inseriremo la variabile pacchetto che scriverà il tipo di pacchetto scelto
    $informazioni=$_POST['txtInformazioni'];
    $tutticampi='Ragione Sociale: '.$ragionesociale.' , Comune: '.$comune.' , Provincia: '.$provincia.' , Email: '.$email.' , Telefono: '.$tel.' , '.$pacchetto.' , Informazioni: '.$informazioni;
    mail("tuoindirizzodiposta","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.";
    //per la freccia indietro puoi mettere un bottone con il parametro onclick javascript history back
    ?>

    Facendo delle prove ho visto che spuntando nel sito i radio pacchetto medio o pacchetto avanzato nella mail mi esce sempre pacchetto base ...come mai? :mmm:
    Grazie portapipe:)