Autor | Zpráva | ||
---|---|---|---|
Peter2 Profil * |
#1 · Zasláno: 21. 9. 2014, 20:38:58
Zdravim, tak sa snazim prist na to ako odoslat data s pridanych poli ktore sa pridavaju cez JS.Na webe som nasiel nieco plus som to skombinoval s mojim php.Data sice odosle ale len s prveho riadku a ostatne neviem ci sa odoslu asi skor nie, neviem ako ich mam pridat do riadku 24???
Dakujem za rady. <?php $predmet = "=?utf-8?B?".base64_encode("Správa")."?="; function chyba($chyba) { echo "<div style=\"color:#6f6b67;\">Chyba!</div>"; echo "<div style=\"color:#6f6b67;\">$chyba</div>"; echo "<hr>"; } if ($process): $process=RemoveXSS($process); $kod=RemoveXSS($kod); $velikost=RemoveXSS($velikost); $barva=RemoveXSS($barva); $mnozstvi=RemoveXSS($mnozstvi); $cena=RemoveXSS($cena); if (!$kod) { chyba("Položka Kod musí byť vyplňená."); $process=false; } endif; if ($process): $ip=$REMOTE_ADDR; $kod=strip_tags($kod); $velikost=strip_tags($velikost); $barva=strip_tags($barva); $mnozstvi=strip_tags($mnozstvi); $cena=strip_tags($cena); $text = " <b>Kod: </b> $kod<br> <b>Velikost: </b> $velikost<br> <b>Barva: </b> $barva<br> <b>Množství: </b> $mnozstvi<br> <b>Cena: </b> $cena<br> "; $mail=mailer ("moj email", $text, "$predmet", "$email"); if (!$mail) echo "<p>Správa nebola odeslaná. </p>"; else echo "<p>Správa odeslaná.</p>"; else: ?> <script type="text/javascript" src="objednavka.js"></script> <form action="" method="post" id="objednavkaForm" name="form2"> <table id="polozky" class="nicetable form objform" border="0"> <thead><tr><th>Kod </th><th>Velikost</th><th>Barva</th><th>Množství</th><th>Cena</th><th></th></tr></thead> <tbody> <tr id="R1"> <td><input class="inp" type="text" size="10" name="kod" value="<?php echo $kod ?>"> </td> <td> <input class="inp" type="text" size="5" name="velikost" value="<?php echo $velikost ?>"></td> <td> <input class="inp" type="text" size="5" name="barva" value="<?php echo $barva ?>"></td> <td><input class="inp" type="text" size="5" name="mnozstvi" value="<?php echo $mnozstvi ?>"> </td> <td><input class="inp" type="text" size="10" name="cena" value="<?php echo $cena ?>"> </td> <td><input class="inp" type="button" id="addRow" value="Přidat položku" class="input_text"> </td> </tr> </tbody> </table> <input class="inp" type="submit" value="Odeslat správu" id="objednavkaSubmit" name="objSubmit"> <input class="inp" value="Zmazať" id="del" type="reset" class="button"> <input name="process" type="hidden" id="process" value="1"> </form> $(document).ready(function(){ $('#objednavkaForm').submit(function(){ return confirm('Chcete pokračovať v odesláni?'); }); var i=2; $('#addRow').click(function(){ var line = '<tr id="R'+i+'"><td><input class="inp" type="text" size="10" name="kod['+i+']"> </td><td> <input class="inp" type="text" size="5" name="velikost['+i+']"></td><td> <input class="inp" type="text" size="5" name="barva['+i+']" id="barva[1]"></td><td><input class="inp" type="text" name="mnozstvi['+i+']" size="5"> </td><td><input class="inp" type="text" name="cena['+i+']" size="10"> </td><td class="objDelCell"></td></tr>'; var a = i - 1; $('#polozky > tbody').append(line); var line = $('#R'+i); var delcell = $($(line).find('.objDelCell').get(0)); delcell.html('<a href="#">zrušiť</a>'); $(delcell.find('a')).click((function(line){ return function(){ line.remove(); return false; }; })(line)); ++i; }); $('#polozky td.objDelCellRestored').each(function(){ var link = $(this).children('a').get(0); $(link).click(function(){ console.log(link.rel); $('#polozky tr#'+link.rel).remove(); return false; }); }); }); |
||
rovi Profil |
Kde máš obsluhu $_POST requestů?
Formulář odesílá data na self. A ve výpisu kódů zde není vidět jejich obsluha. Přidej <?php if(isset($_POST)){ print_r($_POST); } |
||
Peter2 Profil * |
#3 · Zasláno: 22. 9. 2014, 18:58:00
Niesom si isty aku obsluhu? Je tam este funkcia mailer samostatny subor.php ale ten stym nebude mat nic spolocne...V podstate formular data odosiela jak ma ale nie s tych pridanych poli...
|
||
rafej Profil |
#4 · Zasláno: 22. 9. 2014, 23:16:48
V prvním souboru - od řádku 9 se ošetřují hodnoty, které ti odesílá formulář. Ale máš to napsané pro jednu hodnotu. Pokud ti javascript přidá další sadu políček, tak se k těm hodnotám musí přistupovat jako k poli hodnot. Musíš si to upravit v tom javascriptu a taky v původním formuláři, kde by názvy měly být např. v této podobě:
name="vyrobky[kod][]" a v php skriptu potom načítat takto: if ($process){ $n = count($_POST['vyrobky']); $text = ""; for ($i=0;$i<$n;$i++){ if (empty($_POST['vyrobky']['kod'][$i])){ chyba("Položka Kod musí byť vyplňená."); $process=false; break; }else{ $kod = strip_tags(RemoveXSS($_POST['vyrobky']['kod'][$i])); $velikost =strip_tags(RemoveXSS($_POST['vyrobky']['velikost'][$i])); $barva =strip_tags(RemoveXSS($_POST['vyrobky']['barva'][$i])); $mnozstvi=strip_tags(RemoveXSS($_POST['vyrobky']['mnozstvi'][$i])); $cena=strip_tags(RemoveXSS($_POST['vyrobky']['cena'][$i])); $text .= "<b>Kod: </b> {$kod}<br> <b>Velikost: </b> {$velikost}<br> <b>Barva: </b> {$barva}<br> <b>Množství: </b> {$mnozstvi}<br> <b>Cena: </b> {$cena}<br> "; if (!empty($text)) { $text .= "<hr />"; } } } $ip=$REMOTE_ADDR; } |
||
Peter2 Profil * |
#5 · Zasláno: 23. 9. 2014, 19:04:51
Tak sa to pokusam dat do prevadzky ale hadze mi to chybu.Kod mam takto:
<?php $predmet = "=?utf-8?B?".base64_encode("Správa")."?="; function chyba($chyba) { echo "<div style=\"color:#6f6b67;\">Chyba!</div>"; echo "<div style=\"color:#6f6b67;\">$chyba</div>"; echo "<hr>"; } if ($process){ $n = count($_POST['vyrobky']); $text = ""; for ($i=0;$i<$n;$i++){ if (empty($_POST['vyrobky']['kod'][$i])){ chyba("Položka Kod musí byť vyplňená."); $process=false; break; }else{ $kod = strip_tags(RemoveXSS($_POST['vyrobky']['kod'][$i])); $velikost =strip_tags(RemoveXSS($_POST['vyrobky']['velikost'][$i])); $barva =strip_tags(RemoveXSS($_POST['vyrobky']['barva'][$i])); $mnozstvi=strip_tags(RemoveXSS($_POST['vyrobky']['mnozstvi'][$i])); $cena=strip_tags(RemoveXSS($_POST['vyrobky']['cena'][$i])); $text .= "<b>Kod: </b> {$kod}<br> <b>Velikost: </b> {$velikost}<br> <b>Barva: </b> {$barva}<br> <b>Množství: </b> {$mnozstvi}<br> <b>Cena: </b> {$cena}<br> "; if (!empty($text)) { $text .= "<hr />"; } } } $ip=$REMOTE_ADDR; } $mail=mailer ("moj email", $text, "$predmet", "$email"); if (!$mail) echo "<p>Správa nebola odoslaná. </p>"; else echo "Správa odeslaná."; else: ?> <script type="text/javascript" src="objednavka.js"></script> tu je HTML formular <?php endif; ?> Stale ma to odvolava na riadok s ELSE: na konci php |
||
rafej Profil |
Pokud je to celý kód souboru, tak
a) smaž závorku z řádku 36, b) na řádek 41 napiš }else{
c) a na řádku 46 místo endif; napiš }
Zbylo to tam z přepisu podmínek. Myslela jsem, že upravit případné závorky už zvládneš sám. |
||
Peter2 Profil * |
#7 · Zasláno: 23. 9. 2014, 20:27:40 · Upravil/a: Peter2
No ja mal na riadku 41 len else{ tam bola chyba hm...tak idem skusat dalej...este nejaky naznak jak upravim ten JS?
Tak som to nejako upravil zda sa ze to funguje este to riadne preverim a otestujem... No mam tam este jeden problem, aj ked vyplnim pole a formular odoslem tak mi vypise: chyba! Položka Kod musí byť vyplňená. |
||
Peter2 Profil * |
#8 · Zasláno: 23. 9. 2014, 22:15:59
Skusil som ten php mierne upravit snad to nieje zle riesenie
<?php $predmet = "=?utf-8?B?".base64_encode("Správa")."?="; function chyba($chyba) { echo "<div style=\"color:#6f6b67;\">Chyba!</div>"; echo "<div style=\"color:#6f6b67;\">$chyba</div>"; echo "<hr>"; } if ($process): if (!$meno) { chyba("Položka Jméno musí byť vyplňená."); $process=false; } if (!$priezvisko) { chyba("Položka Příjmení musí byť vyplňená."); $process=false; } if (!$ulica) { chyba("Položka Ulice musí byť vyplňená."); $process=false; } if (!$mesto) { chyba("Položka Město a PSČ musí byť vyplňená."); $process=false; } if (!$telefon) { chyba("Položka telefon musí byť vyplňená."); $process=false; } if (!$email) { chyba("Položka e-mail musí byť vyplňená."); $process=false; } if (!$web) { chyba("Položka Stránky musí byť vyplňená."); $process=false; } endif; if ($process){ $n = count($_POST['vyrobky']); $text = " <b>Jméno: </b> $meno<br> <b>Příjmení: </b> $priezvisko<br> <b>Ulice: </b> $ulica<br> <b>Město a PSČ: </b> $mesto<br> <b>Telefon: </b> $telefon<br> <b>E-mail: </b> $email<br> <br /> <b>Zpráva: </b> $poznamka <br><br> <b>Stránky:</b> $web<br> "; for ($i=0;$i<$n;$i++){ if (empty($_POST['vyrobky']['kod'][$i])){ //chyba("Položka Kod musí byť vyplňená."); $process=false; break; }else{ $kod = strip_tags(RemoveXSS($_POST['vyrobky']['kod'][$i])); $velikost =strip_tags(RemoveXSS($_POST['vyrobky']['velikost'][$i])); $barva =strip_tags(RemoveXSS($_POST['vyrobky']['barva'][$i])); $mnozstvi=strip_tags(RemoveXSS($_POST['vyrobky']['mnozstvi'][$i])); $cena=strip_tags(RemoveXSS($_POST['vyrobky']['cena'][$i])); $text .= " <b>Kod: </b> {$kod}<br> <b>Velikost: </b> {$velikost}<br> <b>Barva: </b> {$barva}<br> <b>Množství: </b> {$mnozstvi}<br> <b>Cena: </b> {$cena}<br> "; if (!empty($text)) { $text .= "<hr />"; } } } $ip=$REMOTE_ADDR; $mail=mailer ("moj email", $text, "$predmet", "$email"); if (!$mail) echo "<p>Správa nebyla odeslaná. </p>"; else echo "Správa odeslaná."; }else{ ?> Pridal som par poli no a teras ked vyhodi chyby Položka musí byť vyplňená tak mi v inpute <input class="inp" type="text" size="10" name="vyrobky[kod][]" value="<?php echo $kod?>"> Pri tych poliach ako meno to mam takto <input type="text" name="meno" value="<?php echo $meno ?>" size="24"> a tu mi zapisanu hodnotu nezmaze.
|
||
rafej Profil |
#9 · Zasláno: 24. 9. 2014, 20:02:48
Máš tam zbytečně dvakrát podmínku:
if ($proces) - řádek 9 a 21.
Stačí vložit kód na řádku 12 až 18 za řádek 21 a ten zbytek smazat. Aby ti formulář při opravě chyby zachoval vyplněné hodnoty, musí se ty políčka, které máš ve formuláři vícekrát vypisovat jako pole, ty tam máš proměnnou - tj. jeden údaj. Samozřejmě u jména ti to fungovat bude, protože to je tam jen jednou. Navíc díky tomu, že další řádky formuláře přidáváš javascriptem se musí vypsat jiný formulář při prvním vypsání a při opravě chyby. Ty úpravy nejsou zas tak složité, ve zkratce jsem to již naznačila, ale zdá se mi, že se v tom tak trochu topíš. Pokud to potřebuješ jen dát dohromady, napiš mi na e-mail, co to má přesně dělat a kontrolovat a můžeme se domluvit, že ti to za nějakou menší částku přepíšu. Pokud se chceš učit, budeš si toho muset ještě dost nastudovat, protože ti chybí základní znalosti. Nastuduj si v PHP minimálně podmínky, jak se zachází s poli a multidimenzionálními poli, načítání a ošetřování proměnných odeslaných formulářem, bezpečný výpis proměnných do HTML kódu atd. |
||
Časová prodleva: 10 let
|
0