Potrzebuję stworzyć nietypowy skrypt wysyłający dane z formularza. W formularzu jest tabelka (a nie pola tekstowe, checkboxy itp). Tabelka ta jest generowana za pomocą javascript. Chciałbym wysłać tą tabelę na maila. Mogę skorzystać z funkcji mail w php, ale jak wrzucić do niej cały formularz z tabelą? W internecie są skrypty wrzucające tam wszystkie pola z formularza, ale nigdzie nie znalazłem jak dać tam całą tabelę.
Jak to zrobić?
Jesli to generuje javascript to mozesz z jego pomoca przeniesc te dane z tabeli do postaci dajacej sie wyslac getem albo postem (to drugie pojemniejsze). Pokaz taka tabele a najlepiej generujacy ja skrypt i cos sie wymysli. Sam stosowalem takie kombinacje i dzialalo wiec wiem, ze sie da :)
TO JEST FORMULARZ Z TABELKĄ, KTÓRY CHCIAŁBYM WYSŁAĆ NA MÓJ E-MAIL:
<form action="form2mail.php" method="post"> Zawartość Twojego zamówienia <table border="1">
<tr bgcolor="maroon">
<td width="5%">
<b><span style="color: white">Lp</span></b></td>
<td width="75%">
<b><span style="color: white">Nazwa</span></b></td>
<td width="15%">
<b><span style="color: white">Cena</span></b></td>
<td width="10%"></td>
</tr>
<SCRIPT LANGUAGE="JavaScript">
DisplayBasket();
</SCRIPT>
</table>
<input type="submit" value="Wyślij!" />
</form>
/************ WYŚWIETLANIE ZAWARTOŚCI KOSZYKA W JAVASCRIPT
// wyswietlenie tabeli z zawartoscia koszyka
function DisplayBasket()
{
var basket = new TShopBasket();
var i;
var nAmount = 0;
basket.Read();
if (basket.Count() < 1)
{
document.write("<b>Zamówienie jest puste!</b>");
return -1;
}
for (i = 0; i < basket.Count(); i++)
{
document.write("<TR><TD>");
document.write(i+1);
document.write("</TD>");
document.write("<TD>");
document.write(basket.GetName(i));
document.write("</TD>");
document.write("<TD ALIGN=\"right\">");
document.write(FormatNumeric(basket.GetNetAmount(i)));
document.write("</TD>");
document.write("<TD ALIGN=\"center\">");
document.write("<INPUT TYPE=\"button\" NAME=\"REMOVE\" VALUE=\"Usuń\"");
document.write(" onclick='BasketRemoveItem(");
document.write(basket.GetId(i));
document.write(")'></TD></TR>");
nAmount += basket.GetNetAmount(i);
}
// podsumowanie koszyka
document.write("<TR><TD COLSPAN=\"2\"> </TD>");
document.write("<TD ALIGN=\"right\"><B>");
document.write(FormatNumeric(nAmount));
document.write("</B></TD><TD> </TD></TR>");
return 0;
}
/**************** SKRYPT WYSYŁAJĄCY MAILA W PHP
<? if ($_POST){ // posted information is added to variable message $message=""; foreach ($_POST as $formfieldname => $formfieldvalue){ $message.="$formfieldname \n $formfieldvalue\n\n"; // } // send email with information from the form to mail("[email protected]","Form to Mail", $message,"From: <[email protected]>\nContent-Type: text/plain"); print "The information has been send to webmaster"; }else{ print "No information has been posted"; } ?>No to wystarczy ze wszystkie wartosci jakie wyswietlasz przyporzadkujesz do jakichs zmiennych. Potem w PHP generujesz sobie kod tej tabelki i formularza wstawiajac wartosci ze zmiennych i wysylasz mailem.
np:
Javascript:
var url='http://adres_www/wyslij_maila.php?i=' + (i+1) + '&nazwa=' + basket.GetName(i) + '&ilosc=' + FormatNumeric(basket.GetNetAmount(i)) + '&id=' + basketGetId(i) + '&netamount' + basket.GetNetAmount(i) + '&suma=' + FormatNumeric(nAmount)
po czym dajmy na to masz ukryta IFRAME do ktorej wywulujesz skrypt:
document.getElementById('ukryta').src=url;
w pliku wyslij_maila.php generujesz sobie tabelke z tymi danymi i wysylasz mailem.
Szczerze mowiac metoda prymitywna ale skuteczna...
Alternatywnie ale analogicznie mozna to zrobic w AJAXie
Najsensowniej httprequest - JS pobiera dane, przekazuje do PHP, które je wysyła.