Invio email: necessaria la scelta della provincia all'interno del form

Il form che ho creato deve inviare una mail ad una serie di destinatari che appartengono alla provincia scelta dal form.

Nel form ho inserito dei controlli in js in modo che il campo provincia sia sempre selezionato.

La query è del tipo "SELECT email FROM tab WHERE provincia LIKE '%roma%' ";

I vari test hanno sempre dato buon esito ma quando ho messo on line il form 1 volta su 10 la query che mi prende i destinatari in base alla provincia, preleva tutti i destinatari presenti nel db perchè il campo provincia rimane "vuoto". A questo punto la query diventa "SELECT email FROM tab WHERE provincia LIKE '%%' ";

Che cosa c'è che non va????Quale potrebbe essere il problema??

<form name="form1" method="post"  onSubmit="return checkArgs();"  action="invio.php">

<label for="nomeprov">Provincia:</label>

<br>

<select name="nomeprov">

<option selected="">Seleziona Provincia</option>

          

   while ($provincia = mysql_fetch_array($province)) {

      $nomeprov = $provincia['nomeprov'];

      echo "<option value=$nomeprov>$nomeprov</option>\n";

   }

            

        </select>

    <input type="submit" name="submit" value="Invia"> 

  </form>

IL js è questo:

<SCRIPT type="text/javascript" language="JavaScript">

function checkArgs() {

if (document.forms[0].nomeprov.value=="") {

alert("Selezionare una provincia!");

document.forms[0].nomeprov.value.focus();

return false;

}

return true;

}

</SCRIPT>

Mentre invio.php è :

if (isset($_POST['submit']) ) {

   

    $sql = "SELECT email FROM tab WHERE provincia LIKE '%".$_POST["nomeprov"]."%'";

    $res = mysql_query($sql); 

    

    while (list($to) = mysql_fetch_row($res))  

    {

        if(mail($to, "provincia di " .$_POST["nomeprov"], $msgformat, $headers))

   {

                           

.....

 :bye:

inviato 10 anni fa
stellina
X 0 X

E' buona norma non affidare al Javascript (che l'utente può sempre disabilitare) il controllo dei campi di un form. Usa il Javascript per avvisare l'utente se c'è qualcosa che non va nei dati immessi, non come un sistema di protezione dei dati stessi.

Quindi fai in modo di effettuare tutte le verifiche nel codice PHP (che non possono essere aggirate) e lascia al PHP compiti "estetici"

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Quindi come dovrei procedere a fare il controllo della provincia in php?

 ???

risposto 10 anni fa
stellina
X 0 X

Controlla se $_POST['nomeprov'] è vuoto  :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Modificando il condice ed inserendo il controllo sulla provincia, le email vengono inviate ad un indirizzo si e ad uno no.

while (list($to) = mysql_fetch_row($res))  

{

           

    if ($nomeprov == '')

   {

        $resp="<center><b>Gentile visitatore, la richiesta non è stata inoltrata è necessario seleziona una provincia.</b></center>";

          $name = $_REQUEST['name'];

      $email = $_REQUEST['email'];

      $telefono = $_REQUEST['telefono'];

      $nomeprov = $_REQUEST['nomeprov'];

      $message = $_REQUEST['message'];

   }

   

   elseif(mail($to, " provincia di " .$_POST["nomeprov"], $msgformat, $headers))

   {

      

         $resp="<center><font size=\"3\" face=\"Tahoma\"><b>Gentile visitatore, la richiesta è stata inoltrata. Verrà servita al più presto.</b></font></center>";

             

      $name = "";

      $email = "";

      $telefono = "";

      $nomeprov = "";

      $message = "";

      

   }

   

    else

   { 

      $resp="<center><b>Gentile visitatore, la richiesta non è stata inoltrata per problemi tecnici: la invitiamo a riprovare pi&ugrave; tardi.</b></center>";

             $name = $_REQUEST['name'];

      $email = $_REQUEST['email'];

      $telefono = $_REQUEST['telefono'];

      $nomeprov = $_REQUEST['nomeprov'];

      $message = $_REQUEST['message'];

   }

}

 :o

risposto 10 anni fa
stellina
X 0 X

Per prima cosa mettereil il controllo della provincia prima della query. A che ti serve recuperare tutte le mail quando sai che non ne spedirai neanche una?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Adesso che ho il controllo in php posso ugualmente lasciare anche il controllo in js o può dare problemi??

risposto 10 anni fa
stellina
X 0 X

Lascia il controllo javascript, aiuterà gli utenti a capire subito se c'è qualche problema nei dati inseriti nel form.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ok, grazie  :)

 :bye:

risposto 10 anni fa
stellina
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda