Создание массива из textarea - PullRequest
       19

Создание массива из textarea

1 голос
/ 05 февраля 2012

Я пытаюсь поместить некоторые данные в простую версию Amazon.Мне нужно ввести несколько значений для атрибута (через запятую), но теперь, когда у меня есть скрипт, он вводит все значения как один атрибут.Я думаю, что мне нужно создать массив из значений в текстовой области через запятую, но я не знаю, как это сделать.Черт, я не знаю, как правильно задать этот вопрос.:)

Вот код.

<?php require_once('./simpledb/config.inc.php');  ?>
<html>
<body>
<h1>Input Cities</h1>
<?php
$domain = "states";
if (!empty($_POST["state"])) {  // if a value is passed from the key input field save it
$state = $_POST["state"];
} else {
$state = "";
}
$state = stripslashes($state);  // remove PHP escaping 

if (!empty($_POST["cities"])) { // if a value is passed from the key input field save it
$cities = $_POST["cities"];
} else {
$cities = "";
}
//$cities = stripslashes($cities);  // remove PHP escaping 

?>
<FORM ACTION="addcities.php" METHOD=post>

<label>State (Caps)</label><br>
<input type=text name="state" size=10 value="<?php echo $state; ?>"><br>
<label>Cities ('' & comma seperated)</label><br>
<textarea name="cities" cols=60><?php echo($cities); ?></textarea><br>
<INPUT TYPE=submit VALUE="Add Cities">


<?php

if (!class_exists('SimpleDB')) require_once('./simpledb/sdb.php');  

$sdb = new SimpleDB(awsAccessKey, awsSecretKey);    // create connection

$item_name = $state; 
//$input_cities = array("value" => array($cities));
echo "<p>putAttributes() item $item_name<br>"; 
//$putAttributesRequest["make"] = array("value" => "Acura"); // Example add an attribute
$putAttributesRequest['City'] = array("value" => array("Blue","Red")); // Add multiple values

Предыдущая строка - это ручной способ добавления нескольких значений в атрибут.Я попытался сделать следующее, чтобы получить значение текстовой области, но, как я упоминал ранее, он просто создает одно значение, разделенное запятыми, против нескольких значений.это просто остаток кода.

$rest = $sdb->putAttributes($domain,$item_name,$putAttributesRequest);
if ($rest) {
echo("Item $item_name created");
echo("RequestId: ".$sdb->RequestId."<br>");
echo("BoxUsage: ".$sdb->BoxUsage." = " . SimpleDB::displayUsage($sdb->BoxUsage)<br>");
} else {
echo("Item $item_name FAILED<br>");
echo("ErrorCode: ".$sdb->ErrorCode."<p>");
}

?>

Ответы [ 3 ]

2 голосов
/ 05 февраля 2012

Использовать php взорвать function

Например:

$cities = explode(",", $_POST['cities']);

Это будет работать, только если ваши данные отформатированы следующим образом:

Нью-Йорк, Лас-Вегас, Сидней, Мельбурн, Лондон

Измените первую часть функции разнесения, чтобы она соответствовала форматированию вашей текстовой области.

Затем вы можете сделать что-токак:

foreach ($cities as $key => $val){
    echo trim($val) . '<br />';
}

Поместите ваши вещи SimpleDB в цикл foreach выше и используйте $val там, где вы хотите использовать название города.

Это будет перебирать массив и делать SimpleDBвещи по каждому городу.

0 голосов
/ 07 февраля 2012

В PUT есть еще один параметр запроса - Заменить . Хотя его значение по умолчанию равно false, укажите его как false. Если Replace имеет значение false, значение будет добавлено к этому атрибуту как многозначное значение, а если оно имеет значение true, оно заменит более старое значение.

Также вам нужно добавлять одну пару «Имя атрибута и значение атрибута» каждый раз в запросе PUT. т.е. если вам нужно многозначное значение V1 и V2 атрибута A, то в вашем запросе это будет выглядеть так -

https://sdb.amazonaws.com/
?Action=PutAttributes
&Attribute.1.Name=A
&Attribute.1.Value=V1
&Attribute.2.Name=A
&Attribute.2.Value=V2
&Attribute.3.Replace=false
&AWSAccessKeyId=[valid access key id]
&DomainName=MyDomain
&ItemName=Item123
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2010-01-25T15%3A03%3A05-07%3A00
&Version=2009-04-15
&Signature=[valid signature]
0 голосов
/ 05 февраля 2012

Разнесите строку на запятые.

$citiesArray = explode(",", $cities);

Затем вы захотите обрезать каждый из городов, чтобы не было лишних пробелов до или после названия города.

call_user_func_array("trim", $cities);
...