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


  • User Attivo

    Dannate distrazioni!
    Adesso sono pieno di lavoro quindi scrivo volentieri nei forum ma faccio degli stupidi errori!

    p.s. Metti il codice tra tag [ PHP ] se no non viene formattato ed è più difficile aiutarti. C'è il tasto apposta.
    Basta che selezioni il testo in php e clicchi sul bottone in alto alla sinistra di youtube.

    [PHP]<?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'];
    //qui c'era $radio=".." ma così si riscrive la variabile, non si usa come condizione! Per fare ciò bisogna mettere due uguali
    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
    ?> [/PHP]


  • User

    Ciao a tutti,
    sei stato molto chiaro Portapipe. Mi sai indicare che differenza c'è tra recuperare le variabili tra $_POST e $_REQUEST?
    Ho seguito i tuoi consigli, inizialmente su xoom andava, ora non mi arriva più ne con $_POST ne $_REQUEST. Se lo stesso formmail lo carico su altervista funziona cia con $_POST che con $_REQUEST.

    Grazie


  • User Attivo

    la risposta è semplice:
    POST fa parte delle REQUEST, così come GET e i COOKIE stessi.
    Quindi con REQUEST richiami indistintamente la variabile che ha quel nome.
    Quindi se salvi un nome in un POST lo puoi recuperare con POST e REQUEST, così come l'id di un prodotto nella URL lo puoi recuperare con GET e REQUEST.
    Se però hai un POST con una variabile di nome "frase" e un COOKIE di nome "frase" REQUEST da problemi (non ricordo se ti prende il primo che trova, tutti e due o da errore) però si cerca di specificare sempre il metodo di recupero.
    REQUEST è sconsigliato, soprattutto se lo impari come metodo standard.
    Usa per ogni cosa il suo corrispettivo e non avrai mai confusione! 🙂

    Per il problema di xoom non saprei.
    Magari hai sbagliato i parametri del form, oppure hai scritto male i nomi delle variabili POST... controlla sempre ogni parola, ti basta una virgola per vedere un sito ultraipermegacomplesso, costosissimo e totalmente funzionante convertirsi ad una semplice pagina bianca.
    All'inizio ti pigliano dei colpi assurdi ma prendendo padronanza sempre più con il linguaggio capisci subito dove può essere l'errore e come risolverlo (non è sempre così ma almeno sei consapevole che c'è una virgola di troppo da scovare).

    :ciaosai:


  • User

    Molto chairo. Ti posto il mio file php, riesci a darmi qualche consiglio...

    <?
    $nome=$_POST[nome];
    $testo=$_POST[testo];
    $email=$_POST[mail];
    $dest="xxxx";
    mail($dest,$nome,$testo,$email);
    print ("E-Mail inviata con successo.")
    ?>

    Alcuni mi dicono che non va bene, ma allora perchè su altervista funziona? Cosa c'è di sbagliato?

    Grazie


  • User

    la versione corretta è la seguente:

    [PHP]
    <?php
    $dest=$_POST['email_destinatario'];
    $oggetto=$_POST['oggetto_email'];
    $email=$_POST['mail'];
    if (mail($dest,$oggetto,$email))
    print ("E-Mail inviata con successo.");
    else
    print ("Errore nell'invio");
    ?>
    [/PHP]


  • User Attivo

    Alcuni server non leggono correttamente il <? per l'apertura di php.
    Per sicurezza è sempre meglio mettere <?php , così sei sicuro che almeno quello non ti da errore.
    Per quanto riguarda il recupero delle variabili, emulman ha scritto bene.
    Quando vuoi recuperare variabili, il nome va inserito tra apici singoli.
    [PHP]<?
    $nome=$_POST['nome'];
    $testo=$_POST['testo'];
    $email=$_POST['mail'];
    $dest="xxxx";
    mail($dest,$nome,$testo,$email);
    print ("E-Mail inviata con successo.");
    ?>[/PHP]
    In questo caso invia il messaggio a video anche se l'email non è stata inviata, ma basta che fai un controllo appena la metti online e sei tranquillo, anche se è sempre meglio far fare dei controlli ad ogni funzione cruciale.
    Fammi sapere!


  • User

    Ho messo: <?php e recupero le variabili tra singoli apici. Con Altervista funziona correttamente come prima. Con Xoom non funziona, ho provato anche su altra mail, nello spam, ma niente. La cosa stranissima è che prima funzionava.
    Vi è mai capitato qualcosa del genere?
    Grazie per disponibilità