2017-07-25 119 views
0

我正在编写一个生成器,用于提高我对PHP编程和处理的知识,因为我很薄弱,而且我已经知道我想问我该如何做到这一点。 在javascript中生成输入数据,我想动态地在PHP中捕获它们的值。我不知道它们有多少,因为它们是在单击按钮之后生成的,因此存在问题。从javascript生成的动态输入中获取值

在同一时刻,我成功地使用了这个名字的JS:name_0,name_1等等。

可行吗?下面我不

var tytul = document.getElementById("k-title"); 
 
var opis = document.getElementById("k-description"); 
 
var popup = document.getElementById("info_box"); 
 
var overlay = document.getElementById("overlay"); 
 
var podsumowanie = document.getElementById("summary"); 
 

 
$("#add").on("click", function() { 
 
var id = $(".wiersz").length; 
 
$('#tabela').append('<tr class="wiersz"><td class="komorka-lewa"> <input class="cecha" name="cecha_'+ id + '" type="text" placeholder="Cecha produktu"> </td><td class="komorka-prawa"><input class="cecha-opis" name="cecha-opis_'+ id + '" type="text" placeholder="Opis cechy produktu"></td></tr>'); 
 
document.getElementById("default-table").style = "display: none"; 
 
}); 
 

 
$("#add_square").on("click", function() { 
 
var szerokosc = prompt("Podaj szerokość obrazka"); 
 
var wysokosc = prompt("Podaj wysokość obrazka"); 
 
var sciezka = prompt("Podaj link do zdjęcia"); 
 
$("#other-photos").append('<div class="other-img" style="width: '+szerokosc+'px;"><img class="img-present" style="height: '+ wysokosc +'px;" src="'+sciezka+'" /></div>'); 
 

 
if (szerokosc < 1050) { 
 
$(".other-img").css("float", "left"); 
 
} 
 
}); 
 

 
$("#add_photo").on("click", function() { 
 
var sciezka = prompt("Podaj link do zdjęcia"); 
 
var opis = prompt("Podaj opis zdjęcia dla wyszukiwarek"); 
 
$("#gallery").append('<div class="photo-container"><button class="del">Usuń zdjęcie</button><img src="' + sciezka + '" class="photo" alt="' + opis + '"/></div>'); 
 

 
if ($(".photo").length > 0) { 
 
document.getElementById("default-gallery").style = "display: none"; 
 
} 
 
$(".del").on("click", function() { 
 
$(this).parent().css("display", "none"); 
 
document.getElementById("default-gallery").style = "display: block"; 
 
}); 
 
}); 
 

 
$("#gen").on("click", function() { 
 

 
if (opis.value.length < 1 || tytul.value.length < 1) { 
 
popup.style = "display: block"; 
 
overlay.style = "display: block"; 
 
document.getElementById("infobox-content").innerHTML = "Uzupełnij wszystkie potrzebne dane, zanim wygenerujesz kartę produktu."; 
 
} else { 
 
popup.style = "display: block"; 
 
overlay.style = "display: block"; 
 
document.getElementById("infobox-content").innerHTML = "Karta została wygenerowana, plik z kodem znajduje się w katalogu generate."; 
 
podsumowanie.innerHTML = "Tytuł: " + tytul.value + "<br>" + "Opis produktu: " + opis.value + "<br>" + "Cecha produktu: " + cecha + "<br>" + "Opis cechy produktu: " + cechaopis; 
 
} 
 
}); 
 

 
$("#close").on("click", function() { \t 
 
popup.style = "display: none"; 
 
overlay.style = "display: none"; 
 
}); 
 

 
$("#add_section").on("click", function() { 
 
var szerokosc = prompt("Określ szerokość sekcji"); 
 
var wysokosc = prompt("Określ wysokosć sekcji"); 
 
var tlo = prompt("Określ kolor tła sekcji (paleta RGB - np. FFFFFF)"); 
 
var kolor = prompt("Określ kolor tekstu w sekcji (paleta RGB - np. FFFFFF)"); 
 
$("#new_section").append('<div class="sekcja" style="width: '+ szerokosc +'px; height: '+ wysokosc +'px; background: #'+ tlo +'; color: #'+ kolor +';"><button type="button" class="check_btn">Checklista</button><button type="button" class="txt_btn">Sekcja tekstowa</button></div>'); 
 

 
if ($(".sekcja").length > 0) { 
 
$("#default-section").css("display","none"); \t 
 
} 
 

 
if(szerokosc < 1050) { 
 
$(".sekcja").css("float","left"); \t 
 
} 
 

 
});
body { 
 
margin: 0; 
 
font-family: 'open sans',sans-serif; 
 
font-size: 15px; 
 
} 
 

 
.wiersz { 
 
background-color: #eee; 
 
margin: 0; 
 
} 
 

 
.komorka-lewa { 
 
padding: 3px 10px; 
 
text-align: right; 
 
border-right: 1px solid #dbdbdb; 
 
} 
 

 
.komorka-prawa { 
 
padding: 3px 10px; 
 
text-align: left; 
 
} 
 

 
#tabela { 
 
font-size: 14px; 
 
border: none; 
 
border-top: 1px solid #dbdbdb; 
 
border-bottom: 1px solid #dbdbdb; 
 
width: 100%; 
 
} 
 

 
.cecha, .cecha-opis { 
 
border: 0; 
 
margin: 0; 
 
background: 0; 
 
} 
 

 
#gen { 
 
display: block; 
 
width: 100%; 
 
margin-top: 10px; 
 
} 
 

 
#add, #gen, #add_photo, #add_section { 
 
border: 0; 
 
padding: 10px; 
 
background: #222; 
 
color: #fff; 
 
border-radius: 3px; 
 
font-family: 'open sans',sans-serif; 
 
font-size: 15px; 
 
} 
 

 
#add:hover, #gen:hover, #add_photo:hover, #add_section:hover, .check_btn:hover, .txt_btn:hover { 
 
background: green; 
 
cursor: pointer; 
 
transition-duration: 1s; 
 
} 
 

 
#add_section { 
 
margin-top: 25px; 
 
margin-bottom: 25px; 
 
} 
 

 
#container { 
 
max-width: 1050px; 
 
margin-left: auto; 
 
margin-right: auto; 
 
} 
 

 
#overlay { 
 
width: 100%; 
 
height: 100%; 
 
background: rgba(0,0,0,0.6); 
 
z-index: 2; 
 
position: absolute; 
 
} 
 

 
#info_box { 
 
background: #fff; 
 
position: absolute; 
 
z-index: 3; 
 
width: 500px; 
 
top: 50%; 
 
transform: translateY(-50%); 
 
padding: 10px; 
 
padding-top: 0; 
 
left: 50%; 
 
margin-left: -250px; 
 
} 
 

 
#info_box p:first-child { 
 
font-size: 20px; 
 
border-bottom: 1px solid #eaeaea; 
 
padding-bottom: 10px; 
 
} 
 

 
#info_box, #overlay { 
 
display: none; 
 
} 
 

 
#info_box > p span { 
 
cursor: pointer; 
 
color: red; 
 
} 
 

 
.photo { 
 
display: block; 
 
width: 100%; 
 
} 
 

 
.photo:first-child { 
 
margin-top: 25px; 
 
} 
 

 
.photo:last-child { 
 
margin-bottom: 25px; 
 
} 
 

 
#default-gallery, #default-section { 
 
font-size: 14px; 
 
border-bottom: 1px solid #dbdbdb; 
 
padding: 5px; 
 
} 
 

 
.photo-container { 
 
position: relative; 
 
overflow: hidden; 
 
margin-bottom: 25px; 
 
} 
 

 
.photo-container:first-child { 
 
margin-top: 25px; 
 
} 
 

 
.photo-container:last-child { 
 
margin-bottom: 25px; 
 
} 
 

 
.del { 
 
position: absolute; 
 
bottom: 50px; 
 
right: 25px; 
 
background: transparent; 
 
border: 3px solid #fff; 
 
padding: 10px; 
 
font-family: 'open sans',sans-serif; 
 
font-size: 15px; 
 
color: #fff; 
 
border-radius: 3px; 
 
} 
 

 
.del:hover { 
 
background: #fff; 
 
cursor: pointer; 
 
transition-duration: 0.5s; 
 
color: #222; 
 
} 
 

 
#add_square { 
 
width: 150px; 
 
height: 150px; 
 
background: #eaeaea; 
 
margin-bottom: 25px; 
 
padding: 20px; 
 
border: 1px solid #c0c0c0; 
 
} 
 

 
#add_square:hover { 
 
background: #222; 
 
cursor: pointer; 
 
transition-duration: 0.5s; \t 
 
color: #fff; 
 
} 
 

 
.img-present { 
 
max-width: 100%; 
 
} 
 

 
.other-img:last-child { 
 
margin-bottom: 25px; 
 
} 
 

 
.sekcja { 
 
position: relative; \t 
 
} 
 

 
.check_btn, .txt_btn { 
 
position: absolute; 
 
top: 50%; 
 
transform: translateY(-50%); 
 
padding-top: 10px; 
 
padding-bottom: 10px; 
 
border: 0; 
 
background: #000; 
 
font-size: 15px; 
 
font-family: 'open sans',sans-serif; 
 
color: #fff; 
 
} 
 
\t 
 
.check_btn { 
 
left: 0; 
 
border-top-right-radius: 3px; 
 
border-bottom-right-radius: 3px; 
 
} 
 

 
.txt_btn { 
 
right: 0; 
 
b
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="info_box"> 
 
<p>Informacja <span id="close" style="float: right;">x</span></p> 
 

 
<p id="infobox-content"></p> 
 
</div> 
 

 
<div id="overlay"></div> 
 

 
<div id="container"> 
 

 
<form method="post" action=""> 
 

 
<div style="padding-top: 50px; padding-bottom: 50px;"> 
 
<input type="text" value="" id="k-title" name="k-title" placeholder="Tytuł karty" style="display: block; width: 100%; font-size: 30px; border: 0; background: 0; margin-bottom: 25px; text-align: center;"> 
 
<input type="text" value="" id="k-description" name="k-desc" placeholder="Krótki opis" style="display: block; width: 100%; border: 0; background: 0; text-align: justify; padding: 10px;"> 
 
</div> 
 

 
<div style="width: 100%; text-align: center; background-color: #eee; font-weight: 200; line-height: 0.92em; padding: 23px 0; font-size: 30px;">Specyfikacja techniczna</div> 
 

 
<table id="tabela" border="0" cellspacing="0" cellpadding="5px"> 
 
<tbody> 
 

 
<tr> 
 
<td colspan="2" id="default-table">Brak dodanej specyfikacji</td> 
 
<tr> 
 
</tbody> 
 
</table> 
 

 
<button style="margin-top: 25px; margin-bottom: 25px;" id="add" type="button">Dodaj wiersz</button> 
 

 

 
<div id="other-photos"> 
 
<div id="add_square" style="position: relative;"> 
 
<p style="text-align: center; position: absolute; width: 150px; top: 40px; font-size: 60px; margin: 0;">+</p> 
 
<p style="text-align: center; position: absolute; width: 150px; bottom: 40px; margin: 0;">Dodaj obrazek prezentacji</p> 
 
</div> 
 
</div> 
 

 
<div style="clear: both;"></div> 
 

 
<div style="width: 100%; text-align: center; background-color: #eee; font-weight: 200; line-height: 0.92em; padding: 23px 0; font-size: 30px;">Dodaj nową sekcję</div> 
 

 
<div id="new_section"> 
 
<div id="default-section">Brak dodanych sekcji</div> 
 
</div> 
 

 
<div style="clear: both;"></div> 
 

 
<button type="button" id="add_section">Dodaj sekcję</button> 
 

 
<div style="width: 100%; text-align: center; background-color: #eee; font-weight: 200; line-height: 0.92em; padding: 23px 0; font-size: 30px;">Galeria zdjęć</div> 
 
<div id="default-gallery">Brak dodanych zdjęć</div> 
 

 
<div id="gallery"> 
 
</div> 
 

 
<button style="margin-top: 25px; margin-bottom: 25px;" id="add_photo" type="button">Dodaj zdjęcia</button> 
 

 
<input id="gen" type="submit" value="Generuj kartę" /> 
 

 
</div> 
 

 
<div id="summary"> 
 
</div> 
 

 
</form>

+2

如果您可以简单介绍一下您的网站,请帮助您。秒。我的波兰不是那么好 – Luca

回答

2

简单的解决方案:

名称的产生Inputfields这样的:

<input ... name="field[]"> // see the []-Brackets 
<input ... name="field[]"> 
<input ... name="field[]"> 

括号会引起,有将发送一个名为阵列提交表单时的“字段”。当然,你也可以给他们一个密钥,如字段[0],字段[1]或者其他。

提交表单后,您可以像处理任何其他PHP数组一样处理它。

例如:

foreach($_POST['field'] as $fieldno => $fieldvar){ 
echo 'field '.$fieldno.': '.$fieldvar.'<br>'; 
} 

提示:使用相同的密钥为同一科是处理非常有帮助低谷中的数据:

<input name="givenname[0]"><input name="lastname[0]"><input name="age[0]"> 
<input name="givenname[1]"><input name="lastname[1]"><input name="age[1]"> 
<input name="givenname[2]"><input name="lastname[2]"><input name="age[2]"> 

您可以提交这样后捕获这些数据:

foreach($_POST['givenname'] as $id => $givenname){ 
echo 'person #'.$id.': '.$_POST['lastname'][$id].', '.$givenname.', '.$_POST['age'][$id].'<br>'; 
} 
+0

它的工作原理:D我正在寻找 – sc4rface

+0

好消息! :] – Bernhard