Ben yeni bir sayfa yaparken kullanılan özel form alanları tanımlayan sistemi gibi bir php tabanlı CMS sınırları içinde çalışıyorum.
Benim veritabanında iki tablo, üç alan, ad, MiddleName ve lastname sahip biri olarak adlandırılan insanları, hem de ad, soyad ve MiddleName alanları yanı sıra, ürün, miktar ve maliyeti vardır siparişleri denilen ikinci bir tablo var.
Ben özel alanlar birini kullanmaya devam ediyorum, biraz google gibi çalışır inputSmartSearch öneririz. Ben harfleri yazarken, bir SQL sorgusu birlikte birleştirilmiş, maç sonuçları dönen gerçekleştirilir.
Örneğin, ben girdi olarak 'ba' koyarsanız, bir sonuç 'afiş, david, bruce' olabilir, ve ben onu seçin sonra 'afiş, david, bruce' şimdi inputSmartSearch alanında metin içeriği.
insanlar tabloda, david MiddleName alan ve soyad alanında afiş bruce, Isim alanında.
Ne yapmak istiyorum inputsmartsearch alana (yani kullanıcının seçtiği ne olursa olsun) mevcut metnine erişmek için öğrenmek, ve 3 kısma kadar tekrar kırmak olduğunu, bu yüzden orders.firstname, middleName içine FirstName ekleyebilirsiniz orders.lastname yanı sıra siparişleri tablodaki ilgili alanları içine sitedeki diğer basit alanlardan girişine orders.middlename ve lastname içine.
Orada iyi gibi benzersiz bir birincil guestid kullanarak ve sadece emir tabloya bu ekleme gibi basit bir çözüm olabilir, ama o zaman bile benim şimdiki sorun hala aynı olabilir.
Tam sonra nasıl inputsmartsearch alanının içeriğine erişmek mi?
Aşağıdaki gibi bir arama tarafından oluşturulan HTML:
<div id="searchBox-chooseguests" class="smartSearchBox" style="top: 199px; left: 42px; width: 190px;">
<div id="SBHeader-chooseguests" class="SBHeader">
<button tabindex="4000" class="graphicButtons buttonX" id="SBCloseButton-chooseguests" type="button">
<span>close</span>
</button></div>
<div id="SBResults-chooseguests" class="SBResults">
<a tabindex="4000" id="SB-:08490ea8-d654-1c91-cb82-00d44a4b093b" class="SBSearchItems SBSI-chooseguests " href="#">
<span class="SBMain">Sherlock Homes</span>
<span class="SBExtra">333333334</span>
</a>
</div>
<div id="SBFooter">
</div>
</div>
Bu oluşturulan HTML dinamik olduğundan, ben o olacak kullanımı ne kadar bilmiyorum.
Gerçek alanı için oluşturulan HTML yüzden nelerin erişmek için nasıl bilmiyorum ... bir değer ile dolu olsa bile, hiçbir zaman değişmez.
Şöyle ki:
<p class="big"><label for="ds-chooseguests">Choose Guest</label>
<br>
<input type="hidden" value=":08490ea8-d654-1c91-cb82-00d44a4b093b" id="chooseguests" name="chooseguests">
<input type="hidden" value="1" id="sff-chooseguests">
<input type="hidden" value="17" id="sdbid-chooseguests">
<input type="text" value="" class="inputSmartSearch important" title="Use % for wildcard searches." id="ds-chooseguests" name="ds-chooseguests" autocomplete="off"></p>
Ben sınırlı ben ne javascript (Sanırım) kullanabilir, ve (bence ... ama emin değilim .... belki de bunu yapmak için herhangi bir gereklilik ...) CMS sistem tarafından tanımlı alanları kullanmanız gerekir
Burada genel yönde bazı göstericiler şaşırtıcı olurdu.
edit:
Bu gönderilen alır _POST veriler:
Array ([chooseguests] =>: 08490ea8-D654-1c91-cb82-00d44a4b093b [ds-chooseguests] => Holmes, Sherlock [chooseproducts] => 75c72a6a-83d9-11df-951A-fa9c1ec271f2 [ds-chooseproducts] => Corona [ miktar] => 2 [type] => nakit [receiptno] => 7 [createdby] => [Oluşturma] => [komut] => kaydetmek [ModifiedBy] => [cancelclick] => 0 [ModifiedDate] => [ UUID] =>: 4402add3-b884-43e6-04ad-c76d92ee465b [id] =>)
Ve bu yukarıda bağlantılı şablona dayalı, benim geçerli şeklidir:
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
include("../../include/session.php");
include("include/tables.php");
include("include/fields.php");
//if you need to ovveride the phpbmsTable class make sure to include the modules file
include("include/sales.php");
//If the addedit page will be accessd directly from a page other than the
// basic search results page, you may want to grab and pass the previous URL
//with the following code
//===================================================
if(!isset($_GET["backurl"]))
$backurl = NULL;
else{
$backurl = $_GET["backurl"];
if(isset($_GET["refid"]))
$backurl .= "?refid=".$_GET["refid"];
}
//===================================================
// $thetable = new phpbmsTable($db,[table definition id]);
// Next we process the form (if submitted) and
// return the current record as an array ($therecord)
// or if this is a new record, it returns the defaults
$thetable = new sales($db, "tbld:490cf2d1-1c72-7b99-461d-b1b8e68553c4");
$therecord = $thetable->processAddEditPage();
if(isset($therecord["phpbmsStatus"]))
$statusmessage = $therecord["phpbmsStatus"];
$pageTitle = "Sales";
// Next, we set up to include any
// additional css or javascript files we will be using
// This does nto include any field-type specific js (like datepicker)
// as they are automatically icluded when you define the special fields you
// will be using below.
$phpbms->cssIncludes[] = "pages/menus.css";
$phpbms->jsIncludes[] = "modules/base/javascript/menu.js";
$phpbms->jsIncludes[] = "modules/micro hospitality/javascript/checkpaid.js";
// DEPRECIATED:
// if you need to define a body onlload function, do so with the phpbms property
$phpbms->onload[] = "initializePage()";
print_r($_POST);
// Next we need to define any special fields that will be used in the form
// A list of field objects (with documentation)is available in the /include/fields.php
// file.
// We need to define them here in the head
// so that any necessay javascript is loaded appropriately.
$theform = new phpbmsForm();
//if you need to set specific form vaiables (like enctype, or extra onsubmit
// you can set those form properties here.
// for each field we will use, create the field object and add it to
// the forms list.
$theinput = new inputSmartSearch($db, "chooseguests", "Choose Guests",NULL, "Choose Guest", TRUE, NULL, NULL, TRUE, $required=true);
$theinput->setAttribute("class","important");
$theform->addField($theinput);
$theinput = new inputSmartSearch($db, "chooseproducts", "Choose Product",$therecord["product"], "Choose Product", TRUE, NULL, NULL, TRUE, $required=true);
$theinput->setAttribute("class","important");
$theform->addField($theinput);
$theinput = new inputField("quantity",$therecord["quantity"],"Quantity",true, NULL, 1);
$theinput->setAttribute("class","important");
$theform->addField($theinput);
$theinput = new inputBasicList("type",$therecord["paymenttype"],array("Cash"=>"cash","Credit"=>"credit"), "Payment Type");
$theinput->setAttribute("class","important");
$theform->addField($theinput);
$theinput = new inputCheckbox("paid", $therecord["paid"], "Paid");
$theform->addField($theinput);
$theinput = new inputField("receiptno",$therecord["receiptno"],"Receipt No",true, NULL, 10);
$theinput->setAttribute("class","important");
$theform->addField($theinput);
$thetable->getCustomFieldInfo();
$theform->prepCustomFields($db, $thetable->customFieldsQueryResult, $therecord);
$theform->jsMerge();
include("header.php");
?><div class="bodyline">
<?php $theform->startForm($pageTitle)?>
<div id="leftSideDiv">
<fieldset>
<legend><label for="S">Sales</label></legend>
<p class="big"><?php $theform->showField("chooseguests"); ?></p>
<p class="big"><?php $theform->showField("chooseproducts"); ?></p>
<p class="big"><?php $theform->showField("quantity"); ?></p>
<p class="big"><?php $theform->showField("type"); ?></p>
<p class="big"><?php $theform->showField("paid"); ?></p>
<p class="big"><?php $theform->showField("receiptno"); ?></p>
</fieldset>
</div>
<?php
//Last, we show the create/modifiy with the bottom save and cancel buttons
// and then close the form.
$theform->showGeneralInfo($phpbms,$therecord);
$theform->endForm();
?>
</div>
<?php include("footer.php");?>
Ben kadar elimden olarak kesilmiş ve sadece ben sorun / meselesinde için yararlı olabilir düşünüyorum bu yorumların yapmamışlar.