Herkes bana bu bir nesne yapmak yardımcı olabilir.

4 Cevap php

Hey, birisi bana bu bir nesne, lütfen yardımcı olabilir.

Açıkçası benim kodu burada, ama yüreğin olsun eminim.

<?php
$product_name_1 = $_POST['product_name_1'];
$region_1 = $_POST['region_1'];
$start_date_1 = $_POST['start_date_1'];
$end_date_1 = $_POST['end_date_1'];
$sku_1 = $_POST['sku_1'];

$product_name_2 = $_POST['product_name_2'];
$region_2 = $_POST['region_2'];
$start_date_2 = $_POST['start_date_2'];
$end_date_2 = $_POST['end_date_2'];
$sku_2 = $_POST['sku_2'];

$product_name_3 = $_POST['product_name_3'];
$region_3 = $_POST['region_3'];
$start_date_3 = $_POST['start_date_3'];
$end_date_3 = $_POST['end_date_3'];
$sku_3 = $_POST['sku_3'];
?>



<form action="" method="post" accept-charset="utf-8">
<div id="product_information">
<table id="product_1">
    <tr>
        <th><label for="product_name">Product Name</label></th>
        <th><label for="region">Select A Region</label></th>
        <th class="date"><label for="start_date">Start Date</label></th>
        <th class="date"><label for="end_date">End Date</label></th>
        <th><label for="sku">SKU</label></th>
    </tr>
    <tr>
        <td><input type="text" name="product_name_1" value="" id="product_name_1"></td>
        <td><input type="radio" name="region_1" value="upper_north" id="upper_north_1"><label for="upper_north_">Upper North Island</label><br />
                <input type="radio" name="region_1" value="lower_north" id="lower_north_1"><label for="lower_north_">Lower North Island</label><br />
                <input type="radio" name="region_1" value="south_island" id="south_island_1"><label for="south_island">South Island</label>   </td>
        <td class="date"><input type="text" class="date" name="start_date_1" value="" id="start_date_1"></td>
        <td class="date"><input type="text" class="date" name="end_date_1" value="" id="end_date_1"></td>
        <td><input type="text" name="sku_1" value="" id="sku_1"></td>
    </tr>
</table>
<span class="product"></span>
<div class="add-product">&nbsp;</div>
</div>

<script type="text/javascript" charset="utf-8">

var i = 1;

$('.add-product').click(function(){
    i++;
    $('span.product').replaceWith('<table id="product_'+i+'">'
        +'<tr>'
            +'<th><label for="product_name">Product Name</label></th>'
            +'<th><label for="region">Select A Region</label></th>'
            +'<th class="date"><label for="start_date">Start Date</label></th>'
            +'<th class="date"><label for="end_date">End Date</label></th>'
            +'<th><label for="sku">SKU</label></th>'
        +'</tr>'
        +'<tr>'
            +'<td><input type="text" name="product_name'+i+'" value="" id="product_name'+i+'"></td>'
            +'<td><input type="radio" name="region'+i+'" value="upper_north" id="upper_north'+i+'"><label for="upper_north'+i+'">Upper North Island</label><br />'
                    +'<input type="radio" name="region'+i+'" value="lower_north" id="lower_north'+i+'"><label for="lower_north'+i+'">Lower North Island</label><br />'
                    +'<input type="radio" name="region'+i+'" value="south_island" id="south_island"><label for="south_island">South Island</label>   </td>'
            +'<td class="date"><input type="text" class="date" name="start_date'+i+'" value="" id="start_date'+i+'"></td>'
            +'<td class="date"><input type="text" class="date" name="end_date'+i+'" value="" id="end_date'+i+'"></td>'
            +'<td><input type="text" name="sku'+i+'" value="" id="sku'+i+'"></td>'
        +'</tr>'
    +'</table>'
    +''
    +'<span class="product"></span>');
});
</script>

4 Cevap

Yani şimdi başlatmasını ve yeni bir nesne kullanarak üzerine.

Ben böyle bir yapı yapabilir misiniz?

<? 
class Product {

  private $Name;
  private $Region;
  private $StartDate;
  private $EndDate;
  private $Sku;
  public $i;

    function __construct($Name="product_name_$i" $Region="region_$i" $StartDate="start_date_$i" $EndDate="end_date_$i" $Sku="sku_$i")
    {
        $i++
    }

}
?>

Ve sonra nasıl ben aslında nesne örneğini ve benim kod kullanmak istiyorsunuz? .. Benim JavaScript ile bunu yapabilirsiniz?

Bunu başlatmak için bu nesnesini kullanabilirsiniz. Bundan sonra bunu kaydetme ve alma yöntemlerini tanımlar. Ve belki uygun yapıcı, sonrası params farklı ürünler oluşturmak için.

class Product {

    private $Name;
    private $Region;
    private $StartDate;
    private $EndDate;
    private $Sku;

    public function setName( $value )    
    {
            //make some validation or manipulation on data here, if needed
        $this->Name = $value;    
    }

    public function getName()    
    {                
        return $this->Name;    
    }    

    public function setRegion( $value )    
    {
            //make some validation or manipulation on data here, if needed
        $this->Region = $value;    
    }

    public function getRegion()    
    {                
        return $this->Region;    
    }    
    public function setStartDate( $value )    
    {
            //make some validation or manipulation on data here, if needed
        $this->StartDate = $value;    
    }

    public function getStartDate()    
    {                
        return $this->StartDate;    
    }    

    public function setEndDate( $value )    
    {
            //make some validation or manipulation on data here, if needed
        $this->EndDate = $value;    
    }

    public function getEndDate()    
    {                
        return $this->EndDate;    
    }    

    public function setSku( $value )    
    {
            //make some validation or manipulation on data here, if needed
        $this->Sku= $value;    
    }

    public function getSku()    
    {                
        return $this->Sku;    
    }    
}

Umarım ki olur!

Sen mutlaka bir nesne kullanmak gerekmez - (HTML, PHP geçer ne olduğundan) formları ile uğraşırken, ilişkisel diziler kolaydır. Formdaki bu gibi alan adlarını kullanmak daha yararlı olacaktır:

  • product[1][name]
  • product[1][region]
  • product[1][start_date]
  • product[1][end_date]
  • product[1][sku]
  • product[2][name] ... vb

PHP veri alırken, kendisi her ürünün bir dizi olacak, $_POST['product'] olacaktır. Yeni PHP kodu veri ile ne yapmak istediğinize bağlıdır, ancak bunun böyle olabileceğini döngü olsa:

<?php
foreach( $_POST['product'] as $prod )
{
   echo $prod['name']; // outputs each product name in turn
}

Eğer bir nesne gerekiyorsa, bunu kullanmak $prod_obj = (object) $prod ardından $prod_obj->name ve olabilir.

ANTHARES size nesne vermiş; DisgruntledGoat girişi üzerinden çalıştırmak için foreach nasıl kullanılacağını göstermiştir. Eğer var yapıcısı :) olsa da, biraz çalışma gerektiriyor. Tek tek parametreleri geçirmek için gidiyoruz, bir virgülle ayırmak gerekir; Varsayılan değerler değerler geçti değilse kullanılan şeylerdir. Ben böyle bir şey (veritabanından bir satır ile benim nesneleri doldururken benim OO PHP ne olduğu) yapardım.

/**
 * Constructor for the product.
 *
 * @param string=>string[] An associative array used to create the object.
 */
public function __construct($aData = null) {
    if (!is_null($aData)) {
        $this->setName     ($aData["name"]);
        $this->setRegion   ($aData["region"]);
        $this->setStartDate($aData["start_date"]);
        $this->setEndDate  ($aData["end_date"]);
        $this->setSku      ($aData["sku"]);
    }
}

HTML kodu olarak, gibi alanları tanımlamak istiyorum ...

<input type="text" name="product[1][name]" />
<input type="text" name="product[1][sku]" />
...

Sonra, PHP, gibi bir şey yapmak istiyorum

$aProducts = array();
foreach ($_POST["product"] as $aProduct) {
    $aProducts[] = new Product($aProduct);
    // NOTE - here you could also make an empty object and fill it.
    $oProduct = new Product();
    $oProduct->setName($aProduct["name"]);
    // etc. - then add it to the array when you're done.
}

// Display the name of product 2 (if it exists).
if (2 <= count($aProducts)) {
    echo $aProducts[1]->getName();
}

Son olarak, "$ i" vererek ne emin değilim. Ben genellikle gibi alanları oluşturmak ...

<input type="text" name="name[]" />
<input type="text" name="sku[]" />
<!-- This next one is if I need a database ID once it's posted back. -->
<input type="hidden" name="id[]" value="something"/>
...
<input type="text" name="name[]" />
<input type="text" name="sku[]" />
...etc...

Sonra, sunucu üzerinde, ben diziler bir grup var, ancak onların anahtarları tüm maç. Yani, böyle bir şey yapabilirim ...

$aProducts = array();
foreach($_POST["id"] as $iKey => $aValue) {
    $oProduct = new Product();
    $oProduct->setName($_POST["name"][$iKey]);
    $oProduct->setSku ($_POST["sku" ][$iKey]);
    $aProducts[] = $oProduct;
}

Şekil 6, diğer 1/2 düzine, 1. Benim kurucular genellikle PDORow kendi parametreleri nesneleri almak, bu yüzden ilişkilendirilebilir dizilerle çalışıyorum ben, o sayfa yazı bu şekilde yapmak.