Autor Zpráva
cllater
Profil *
mam aplikaci ve ktere prez javasript pridavam do HTML prvky formulare. Problem nastal ale pri odesilani. Kdyz nevim jake prvky si tam vytvorim tak jak mam vytvorit funkci mail(); ? napadlo me to resit tak ze si ulozim prez javascript vsechny hodnoty z formulare ktere potrebuji a pak odeslu jako string zpravu. Zde je ale zase omezeni ze nevim jak zjistim u check boxu ktery je vybrany a a tak nevim jakou hodnotu value bych mel do toho stringu vlozit. Nenapada Vas nejake lepsi reseni?
Dik
AM_
Profil
Bez kódu ti těžko kdo poradí konkrétní postup, záleží, jaká je logika přidávání polí. Ale podobné věci se dají řešit dvěma způsoby:
1 - pole: <input type="text" name="udaj[]" />; hodnoty ti přijdou jako pole $_POST['udaj'][0 až n]
2 - logika názvů: <input type="text" name="udaj<?php echo $i++; ?>">; a v PHP potom:
foreach ($_POST as $key=>$val){
  if(substr($key, 0, 4) === 'udaj'){
    $cislo_udaje = intval(substr($key, 4));
    //dalsi zpracovani $val
  }
}
cllater
Profil *
Takto to asi nepujde nebo to moc nechapu. Ja mam NAME atribut pokazde jiny. Vkladam ruzne prvky s ruznemi NAME a nejsou to jen input ale treba i select.

tady to mam rozpracovane:
http://www.prezentuji.cz/bakl/edit.php

vlevem sloupci jsou prvky co se postupne vkladaji. Jedine reseni je zatim action="mailto:.." a enctype="text/plain" to mi pekne vypise prvky co jsme vybral a vyplnil, ale je ma to nevyhodu, ze to musim posilat prez mailoveho klienta. Nejde to takto nejak pouzit ale aby to posilalo PHPcko?
AM_
Profil
Tak když vypustíš podmínku IF ze skriptu, který jsem poslal, můžeš zpracovávat všechny prvky aktuálně odeslané přes POST. v $key bude jmeno toho prvku a v $val hodnota
cllater
Profil *
promin, ale porad mi to nedochazi.

neco takovehov prez javascript vkladam do HTML:

<input id="input'+form[pozice.i].id+'" type="'+form[pozice.i].type+'" name="'+form[pozice.i].name+'<?php echo $i++; ?>" size="'+form[pozice.i].size+'" value="'+form[pozice.i].value+'"/>

v PHP pak toto:

<?php
foreach ($_POST as $key=>$val){
$cislo_udaje = intval(substr($key, 4)); // k cemu me to cislo udaje vlastne je?
}

if ( Mail("muj@mail.cz", "predmet", $val, "From: " . "nekdo") )
echo "Mail byl odeslán";
else echo "Mail se nepodařilo odeslat"; ?>
?>

ale na mail me prijde uplne prázdna zprava.
Alphard
Profil
$val se vám neustále přepisuje, zkuste to takhle

<?php 
$info = "";
foreach ($_POST as $key=>$val){ 
  $info .= "$key: $val<br>\n";
} 

echo $info;
?>


Do potřebné podoby si to vylaďte s echo, pracuje se tak lépe než čekat na mail.
AM_
Profil
Sorry, ale tupé přepsání kódu není k ničemu, byl to pouze nástin práce s takovýmito daty.
if(substr($key, 0, 4) === 'udaj'){

znamená, "pokud první 4 znaky jsou 'udaj'". Když ty prefixuješ slovem "input", asi to nebudou 4 znaky, ale 5, takže to musíš přepsat na 5. to samé potom v extrakci ID:
$cislo_udaje = intval(substr($key, 5)); 
- vytáhne číselnou hodnotu (intval) za pátým znakem (substr), takže z "input50" vytáhne 50.
Podívej se do PHP manuálu na cyklus foreach, jeho princip asi moc nepobíráš (stačí ve zde zaslaném kódu kliknout na foreach, highlighter tam dělá odkazy do manuálu).

To, co psal Alphard, bude fungovat a odešle ti to všechno, co se přes POST odeslalo, takže by to mohlo stačit.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: