Multiple Select в конктактна форма.

Gh057

Registered
Имам контактна форма, в която искам в 1 от полетата да избирам няколко предмета, но немога да направя така, че като избера 2+ предмета при получаването на писмото да ми ги показва всички. Сега като изпратя писмото със селектирани няколко предмета ми изписва само последния. Ясно ми е, че променливата "prod" отзад трябва да има [] и при извеждането да се използва foreach, но не ми е ясно как. Ако може някой да ми помогне.

Ето формата:

HTML:
<form action="send.php" method="post" name="form2" id="form2">
<table width="320" align="left">
  <tr>
    <td><div class="text9">ime:</div></td>
    <td valign="top"> </td>
    <td width="157"><input name="subject" type="text" value="<?php echo $_GET['subject'];?>" size="21" maxlength="25" /></td>
  </tr>
  <tr>
    <td><div class="text9">E-mail:</div></td>
    <td valign="top"> </td>
    <td width="157"><input name="from" type="text" value="<?php echo $_GET['from'];?>" size="21" maxlength="35" /></td>
  </tr>
  <tr>
    <td><div class="text9">strana:</div></td>
    <td> </td>
    <td><select name="country" style="width:155px;">
      <option value="strana" selected="selected">strana:</option>
      <option value="Other">Other</option>
      <option value="Bolivia">Bolivia</option>
      <option value="Brazil">Brazil</option>
      <option value="Brunei Daris.">Brunei Daris.</option>
      <option value="Bulgaria">Bulgaria</option>
    </select></td>
  </tr>
  <tr>
    <td><div class="text9">produkt:</div></td>
    <td> </td>
    <td width="157"><select name="prod" size="5" multiple="multiple" style="width:155px;">
      <option value=" " selected="selected">izberete produkt:</option>
      <option value="kola">kola</option>
      <option value="banan">banan</option>
      <option value="portokal">portokal</option>
      <option value="qbylka">qbylka</option>
    </select></td>
  </tr>
  <tr>
    <td colspan="2"><div class="text9">Telefon:</div></td>
    <td width="157"><input name="tel" type="text" value="" size="21" maxlength="25" /></td>
  </tr>
  <tr>
    <td colspan="3"><div class="text9">saobshtenie: <img src="../img/red_star.gif" alt="red star" width="12" height="12" vspace="5" align="absmiddle" /></div></td>
  </tr>
  <tr>
    <td colspan="3"><textarea name="message" rows="6" cols="32"><?php echo $_GET['message'];?></textarea></td>
  </tr>
  <tr>
    <td width="135"><div class="text9">kod:</div></td>
    <td width="12" valign="top"></td>
    <td width="157"><input name="verif_box" type="text" size="12" maxlength="4"/>
      <img src="verif.php?<?php echo rand(0,9999);?>" alt="vp" width="50" height="24"  align="absbottom" /></td>
  </tr>
  <tr>
    <td colspan="3"><div align="center"><span class="text3">
      <?php if(isset($_GET['wrong_code'])){?>
      greshen kod!
      <?php ;}?>
    </span></div></td>
  </tr>
  <tr>
    <td colspan="2"><div align="right">
      <input name="Submit" type="submit" class="button" value="Send"/>
    </div></td>
    <td width="157"><div class="contact-button">
      <input name="reset" type="reset" class="button" value="Reset"/>
    </div></td>
  </tr>
</table>
</form>

Ето и send.php, който изпраща писмата:

PHP:
<?php
$subject = $_REQUEST["subject"];
$message = $_REQUEST["message"];
$from = $_REQUEST["from"];
$tel = $_REQUEST["tel"];
$verif_box = $_REQUEST["verif_box"];
$country = $_REQUEST["country"];
$prod = $_REQUEST["prod"];
$find = $_REQUEST["find"];

$message = stripslashes($message);
$subject = stripslashes($subject);
$from = stripslashes($from);
$tel = stripslashes($tel);
$country = stripslashes($country);
$prod = stripslashes($prod);
$find = stripslashes($find);

if (!$subject)
   $error =" • Popalni ime. <br /><br />";

if (!eregi("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$", $from))
   $error .= " • popalni email <br /><br />";

if ($country=="Select country")
	$error .= " • izberi strana <br /><br />";

if ($prod==" ")
	$error .= " izberi produkt <br /><br />";

if (!$message)
   $error .= " •popalni saobshtenie. <br /><br />";

if (!$verif_box)
   $error .= " • popalni koda. <br /><br />";
   
if(!empty($error))
   print ("$error <a href=\"javascript:history.go(-1);\"> << Go back</a>");

else 

if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){
   mail("abv@abv.bg", 'WEB mail: '.$subject, "From: ".$subject."\n\n"."Products: ".$prod."\n\n"."Country: ".$country."\n\n"."Telephone: ".$tel."\n\n"."How did you find Us?: ".$find."\n\n"."Message: \n".$message, "From: $from");
   echo "saobshtenieto beshe izprateno uspeshno!<br /><br /> <a href=\"../index.html\">Go to the main page.</a>";
   setcookie('tntcon','');
} else {
   header("Location:".$_SERVER['HTTP_REFERER']."?subject=$subject&from=$from&message=$message&tel=$tel&wrong_code=true");   
   exit;
}
?>
 
get-а в случая не ми създава проблеми или поне така си мисля. Другите полета ги изпраща без проблем. И няма проблем когато select-a е тип "menu", а когато е "list"праща само 1 резултат.
 
Първото, което забелязах е, че нямаш начало на форма, или просто си ми я спестил.
Второ, защо ползваш $_GET като value на полетата :shock: или го махни или сложи $_POST, а на формата и задай method="POST"
Трето на продуктите го направи така name="prod[]"
Четвърто, правиш проверка на $_POST['prod'] дали е по-голямо от 1. Ако е по-голямо задаваш $prod = implode(", ", $_POST['prod']);
Пето, като цяло кода ти се нуждае от голяма фиксация, но общо взето можеш да погледнеш тези неща да направиш.
 

Горе