Forum
birden fazla ürün ekliyebilecegim teklif formu hazırlıyorum. sorunum şu:
add row ile buton tıkladıgımda bir satır açıyorum. aynı sayfada dinamik bir select box mevcut. seçilen sadece ilk satıra veri geliyor yeni bir satır acdıgımda tekrar select box ile secim yaptıgımda seçilen veri 2.satıra degilde hep aynı satıra yani 1. satıra geliyor. yapmak istedigim her satır ekledigimde select box ile ekledigim veri yeni satıra gelsin eskiside kalsın.
Yardımcı olursanız çok minnettar olurum. ilgilenirseniz gerekli dokuman ve detayları aktarabilirim.
teşekkür ederim iyi çalışmalar.
daha fazla detay lazım
select box isimleri nelerdir hangi isimde post ediliyor. hepsi aynı isim ise isim sonuna [] ekleyip array şeklinde gönderebilirsiniz.
sayfa bu. baktıgınızda çok kolay anlıyacagınız bir yapısı var yardımcı olursanız sevinirim. teşekkür ederim.
form action sayfasında verileri hangi şekilde alıyorsunuz iligili kodları buraya yapıştırır mısınız?
kodlar
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>www.atilan.com.tr</title>
<script type="text/javascript" src="scripts/jquery.min.js"></script>
<script type="text/javascript" src="scripts/jquery.searchabledropdown-1.0.8.min.js"></script>
<script type="text/javascript">SyntaxHighlighter.all();</script>
<?
include("db_baglan.php");
$tref =mysql_real_escape_string($_POST["ref"]);
?>
<script type='text/javascript'>
function ensar (select) {
document.getElementById('txtRow1').value = select.options[select.selectedIndex].text;
document.getElementById('numrow3').value = select.options[select.selectedIndex].value;
}
$(window).load(function(){
$('#test input:radio').change(function() {
var selectedVal = $("#test input:radio:checked").val();
if(1 == selectedVal){
var mavili = '<?
echo "<select onchange=ensar(this) id=myselect name=mal style=width:275px;>";
$sorgula = mysql_query("SELECT * FROM urun WHERE marka='mavili'");
while($sor = mysql_fetch_array($sorgula)) {
$mit=$sor["fiyat"];
$modelno=$sor["mno"];
$model=$sor["aciklama"];
echo "<option value=$mit text=$modelno $model>$modelno $model</option>";
}
echo "</select>";
?>';
$('#myselect').remove();
$('#selectList').append(mavili);
}else if(2 == selectedVal){
var dedektomat = '<?
echo "<select onchange=ensar(this) id=myselect name=mal style=width:275px;>";
$sorgula = mysql_query("SELECT * FROM urun WHERE marka='dedektomat'");
while($sor = mysql_fetch_array($sorgula)) {
$model=$sor["aciklama"];
$mit=$sor["fiyat"];
echo "<option value=$mit text=$model>$model</option>";
}
echo "</select>"?>';
$('#myselect').remove();
$('#selectList').append(dedektomat);
}else if(3 == selectedVal){
var arsel = '<?
echo "<select onchange=ensar(this) id=myselect name=mal style=width:275px;>";
$sorgula = mysql_query("SELECT * FROM urun WHERE marka='arsel'");
while($sor = mysql_fetch_array($sorgula)) {
$modelno=$sor["aciklama"];
$mit=$sor["id"];
echo "<option value=$mit>$mit</option>";
}
echo "</select>"?>';
$('#myselect').remove();
$('#selectList').append(arsel);
}else if(4 == selectedVal){
var diger = '<?
echo "<select onchange=ensar(this) id=myselect name=mal style=width:275px;>";
$sorgula = mysql_query("SELECT * FROM urun");
while($sor = mysql_fetch_array($sorgula)) {
$modelno=$sor["aciklama"];
$mit=$sor["id"];
echo "<option value=$mit>$mit</option>";
}
echo "</select>"?>';
$('#myselect').remove();
$('#selectList').append(diger);
}
//arama
$(document).ready(function() {
$("#myselect").searchable();
});
$(document).ready(function() {
$("#value").html($("#myselect :selected").text() + " (VALUE: " + $("#myselect").val() + ")");
$("#myselect").change(function(){
$("#value").html(this.options[this.selectedIndex].text + " (VALUE: " + this.value + ")");
});
});
function modifySelect() {
$("#myselect").get(0).selectedIndex = 5;
}
function appendSelectOption(str) {
$("#myselect").append("<option value=\"" + str + "\">" + str + "</option>");
}
function applyOptions() {
$("#myselect").searchable({
maxListSize: $("#maxListSize").val(),
maxMultiMatch: $("#maxMultiMatch").val(),
latency: $("#latency").val(),
exactMatch: $("#exactMatch").get(0).checked,
wildcards: $("#wildcards").get(0).checked,
ignoreCase: $("#ignoreCase").get(0).checked
});
}
//arama bitti
});
});
</script>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 13px;
}
h1 {
font-size: 20px;
}
h2 {
font-size: 16px;
margin: 50px 0 8px 0;
}
h3 {
font-size: 14px;
}
</style>
</head>
<style>
input.abc
{
border: none;
text-align: center;
}
textarea.ac
{
border: none;
resize: none;
font-size:12px
}
textarea.def
{
resize: none;
font-size:12px
}
td.a
{
border-style: solid;
border-width: 1px;
font-size: 12px;
font-weight:normal;
}
p.baslik
{
font-family: "Times New Roman", Times, serif;
font-size: 26px;
text-align: center;
font-weight:bold;
}
p.normal
{
font-family: "Times New Roman", Times, serif;
font-size: 16px;
text-align: center;
font-weight:normal;
}
fieldset{
width: 810px;
}
input[type="number"] {
width:80px;
text-align: right;
}
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
</style>
<script type="text/javascript">
// Last updated 2006-02-21
function addRowToTable()
{
var tbl = document.getElementById('tblSample');
var lastRow = tbl.rows.length;
// if there's no header row in the table, then iteration = lastRow + 1
var iteration = lastRow;
var row = tbl.insertRow(lastRow);
// left cell
var cellLeft = row.insertCell(0);
var textNode = document.createTextNode(iteration);
cellLeft.appendChild(textNode);
// right cell
var cellRight = row.insertCell(1);
var el = document.createElement('input');
el.type = 'select';
el.name = 'txtRow' + iteration;
el.id = 'txtRow' + iteration;
el.size = 70;
el.onkeypress = keyPressTest;
cellRight.appendChild(el);
// right cell
var cellRight2 = row.insertCell(2);
var bel = document.createElement('input');
bel.type = 'number';
bel.name = 'numRow2' + iteration;
bel.id = 'numrow2' + iteration;
bel.size = 10;
cellRight2.appendChild(bel);
// right cell
var cellRight3 = row.insertCell(2);
var cel = document.createElement('input');
cel.type = 'number';
cel.name = 'numRow3' + iteration;
cel.id = 'numrow3' + iteration;
cel.size = 10;
cellRight3.appendChild(cel);
// right cell
var cellRight4 = row.insertCell(2);
var del = document.createElement('input');
del.type = 'number';
del.name = 'numRow4' + iteration;
del.id = 'numrow4' + iteration;
del.size = 10;
cellRight4.appendChild(del);
// right cell
var cellRight5 = row.insertCell(2);
var fel = document.createElement('input');
fel.type = 'number';
fel.name = 'numRow5' + iteration;
fel.id = 'numrow5' + iteration;
fel.size = 15;
cellRight5.appendChild(fel);
// select cell
var cellRightSel = row.insertCell(3);
var sel = document.createElement('select');
sel.name = 'selRow' + iteration;
sel.options[0] = new Option('adet', 'adet');
sel.options[1] = new Option('metre', 'metre');
sel.options[2] = new Option('kilo', 'kilo');
cellRightSel.appendChild(sel);
}
//onchange hesap
function carp() {
document.getElementById('numrow4').value = (document.getElementById('numrow3').value-((document.getElementById('numrow3').value*document.getElementById('no3').value)/100)).toFixed(2)
document.getElementById('numrow5').value = (document.getElementById('numrow2').value*document.getElementById('numrow4').value).toFixed(2)
}
//onchange hesap bitti
function keyPressTest(e, obj)
{
var validateChkb = document.getElementById('chkValidateOnKeyPress');
if (validateChkb.checked) {
var displayObj = document.getElementById('spanOutput');
var key;
if(window.event) {
key = window.event.keyCode;
}
else if(e.which) {
key = e.which;
}
var objId;
if (obj != null) {
objId = obj.id;
} else {
objId = this.id;
}
displayObj.innerHTML = objId + ' : ' + String.fromCharCode(key);
}
}
function removeRowFromTable()
{
var tbl = document.getElementById('tblSample');
var lastRow = tbl.rows.length;
if (lastRow > 2) tbl.deleteRow(lastRow - 1);
}
function openInNewWindow(frm)
{
// open a blank window
var aWindow = window.open('', 'TableAddRowNewWindow',
'scrollbars=yes,menubar=yes,resizable=yes,toolbar=no,width=400,height=400');
// set the target to the blank window
frm.target = 'TableAddRowNewWindow';
// submit
frm.submit();
}
function validateRow(frm)
{
var chkb = document.getElementById('chkValidate');
if (chkb.checked) {
var tbl = document.getElementById('tblSample');
var lastRow = tbl.rows.length - 1;
var i;
for (i=1; i<=lastRow; i++) {
var aRow = document.getElementById('txtRow' + i);
if (aRow.value.length <= 0) {
alert('Row ' + i + ' is empty');
return;
}
}
}
openInNewWindow(frm);
}
</script>
<body>
<table align="center" border="0">
<tr>
<td align="center">
<h3><b><? echo"$tref";?>No'lu Teklif için Malzeme Seçimi</b></h3>
</td>
</tr>
<tr>
<td align="center">
<div id="test">
<input type="radio" name="category" value="1" />Mavili
<input type="radio" name="category" value="2" />Dedektomat
<input type="radio" name="category" value="3" />Arsel
<input type="radio" name="category" value="4" />Diğer
</div>
<div id="selectList"></div>
<input onkeyup="carp()" id="no3" type="number" value="60" />
</td>
</tr>
</table>
<center><form action="Eliz Sakuçoğlu.php" method="get">
<p>
<input type="button" value="Add" onclick="addRowToTable();" />
<input type="button" value="ekle" onclick="javascript: submitform()" />
<input type="button" value="Remove" onclick="removeRowFromTable();" />
<input type="button" value="Submit" onclick="validateRow(this.form);" />
</p>
</center>
<table border="1" id="tblSample" align="center">
<tr>
<td class='a'>
Sıra no
</td>
<td class='a'>
Açıklama
</td>
<td class='a' width='5'>
Miktar
</td>
<td class='a' width='10'>
Birim
</td>
<td class='a' width='70'>
Birim Fiyat
</td>
<td class='a' width='70'>
İsk. B.Fiyat
</td>
<td class='a' width='70'>
Tutar
</td>
</tr>
<tr>
<td>
<span name="sno">1</span>
</td>
<td>
<input type="text" name="txtRow1" id="txtRow1" size="70" value=""/>
</td>
<td>
<input onkeyup="carp()" name="numrow2" id="numrow2" type="number" value="" placeholder="Miktar girin..">
</td>
<td>
<select name="selRow0" style="width:62px;">
<option value="Adet">adet</option>
<option value="Metre">metre</option>
<option value="Kilo">kilo</option>
</select>
</td>
<td>
<input name="numrow3" id="numrow3" type="number" value="" readonly>
</td>
<td>
<input name="numrow4" id="numrow4" type="number" value="0" readonly>
</td>
<td>
<input name="numrow5" id="numrow5" type="number" value="0" readonly>
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
header('Content-Type: text/html; charset=utf-8');
$tref = mysql_real_escape_string($_POST["ref"]);
$thaz = mysql_real_escape_string($_POST["haz"]);
$tfirma = mysql_real_escape_string($_POST["frm"]);
$tilgili = mysql_real_escape_string($_POST["ilgi"]);
$tproje = mysql_real_escape_string($_POST["prj"]);
$tdoviz = mysql_real_escape_string($_POST["dovizz"]);
$tteslimat = mysql_real_escape_string($_POST["teslim"]);
$todeme = mysql_real_escape_string($_POST["ode"]);
if($tref=="" or $tfirma=="" or $tproje=="" or $tilgili=="" or $tdoviz=="" or $tteslimat=="" or $todeme=="")
{echo "";}
else {
$ekle=mysql_query("INSERT INTO teklif (ref_no,hazirlayan,firma,ilgili,proje,doviz,teslimat,odeme,tarih) values ('$tref','$thaz','$tfirma','$tilgili','$tproje','$tdoviz','$tteslimat','$todeme',now())");
if($ekle){
echo "<script>setInterval(function(){kapat()}, 3000);
function ac()
{
document.getElementById('acilacak_div').style.display = 'block';
}
function kapat()
{
document.getElementById('acilacak_div').style.display = 'none';
}
</script><div id='acilacak_div' name='acilacak_div' style='display:block;'><center><br><br><br><font face='arial' size='5' color='#3591af'><b>Teklif kaydedilmiştir</b></font></center></div>";
}
if (mysql_error()) { print "Database ERROR: $sql " . mysql_error(); }
}
mysql_close();
ob_end_flush();
?>
siz form sayfasının kodlarını gönder mişiniz verileri yolladığınız sayfa Eliz Sakuçoğlu.php olarak gözüküyor bu dosyadaki sadece veri alma kısmıyla ilgili kodları merak ettim
submitin bağlı oldugu sayfayı diyorsunuz. onu daha olusturmadım. okolay. benim sıkıntım ufak bi teferruat.
misal marka secimini yaptım o markaya ait ürünler select box a geldi. ürünü secdim. asagıdaki tabloda ki ilk satıra ürün ismi fiyatı iskontolu fiyatı yazıldı.
Buraya kadar herşey çalışıyor. add butonu ile yeni bir satır açtıgımda yeni secdigim ürün 2. satıra gelecegine 1. satırı degiştiriyor. ben her ürünü yeni bir satıra giriş yaptırmak istiyorum. yani çoklu ürün girişi. yardımlarınız için şimdiden teşekkür ederim.
Ben konuyu yanlış anladım öyleyse konu tamamiyle java script ile ilgili.
document.getElementById('txtRow1').value = select.options[select.selectedIndex].text; | |
document.getElementById('numrow3').value = select.options[select.selectedIndex].value; |
Yukarıda kodlara baktığınızda seçimin sadece txtRow1 ve numrow3 elementlere bağlı olduğunu görüyorum bu durumda ilk satırın değişmesi normaldir. Java script uzmanı değilim ancak benim fikrim iki head tarafında bulunan <script> gruplarını birleştirip "iteration" değerini
document.getElementById('txtRow1' + iteration).value = select.options[select.selectedIndex].text; | |
document.getElementById('numrow3' + iteration).value = select.options[select.selectedIndex].value; |
şeklinde kullanmanız gerekmektedir. bu durumda addRowToTable fonksiyonundan her çağrıldığında dışarıya veri döndürmelisiniz. Ancak dediğim gibi uzman olmadığımdan dolayı tam olarak ne yapılabilir bilmiyorum ben deneme yanılma yöntemiyle çözmeye çalışırdım 🙂
bunu denedim olmadı. nasıl yapıcam bilemiyorum. neyse nasip teşekkür ederim ilginiz için.