| 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: 12 let
|
|||
0