2014-01-21 4 views
0

Я пытаюсь обработать большую форму и нанести удар камнем преткновения. Я попробовал Google для ответа, но я не совсем уверен, что формулирую, что мне нужно. Мой код выглядит так.Измените переменную переменной

<?PHP 

$exchange = $_POST['exchange']; 
$estimate = $_POST['estimate']; 
$wp = $_POST['wp']; 
$label1 = $_POST['name3']; 
$result1 = $_POST['fb1']; 
$result2 = $_POST['fb2']; 

$username = "-----"; 
$password = "-----"; 
$hostname = "-----"; 

$con = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL"); 
$selected = mysql_select_db("-----", $con) or die("Could not select examples"); 



$query = "UPDATE btsec SET Status='$result1', TM='result2' WHERE Exchange='$exchange' AND Estimate='$estimate' AND WP='$label1' AND SectionID='$label1'"; 

if (!mysql_query($query,$con)) 
    { 
    die('Error: ' . mysql_error($con)); 
    } 
} 

echo "Sections updated for WP's $wp on $estimate on the $exchange Exchange!"; 

mysql_close($con); 

?> 

Что мне нужно сделать, это выполнить цикл запроса, но каждый раз изменять содержимое переменной.

$label1 = $_POST['name3']; needs to become $label1 = $_POST['name6']; 
$result1 = $_POST['fb1']; needs to become $result1 = $_POST['fb10']; 
$result1 = $_POST['fb2']; needs to become $result1 = $_POST['fb11']; 

Как я уже сказал, Google не может компенсировать мою плохую формулировку.

+3

Существуют ли какие-либо правила для выбора этих индексов или вы просто выбираете их случайно? –

+0

@YUNOWORK Название метки метки3 увеличивается на 3 в каждом разделе формы, а fb1 увеличивается на 9. Оно равномерно на всем протяжении –

+1

. Возможно, вам будет легче иметь поля ввода как массив: 'name =" name [ 3] "', 'name =" name [6] "', 'name =" fb [1] "', 'name =" fb [10] "и т. Д. - тогда вы можете делать' foreach ($ _POST ['name'] as $ index => $ name) '... – MichaelRushton

ответ

0

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

<input type="text" name="name[3]"> 
<input type="text" name="name[6]"> 
<input type="text" name="name[9]"> 


<input type="text" name="fb[1]"> 
<input type="text" name="fb[10]"> 
<input type="text" name="fb[19]"> 

Затем, когда вы отправите форму, вы можете итерацию по данным:

foreach ($_POST['name'] as $index => $name) 
{ 

} 

foreach ($_POST['fb'] as $index => $fb) 
{ 

} 

Как обратите внимание, что вы также должны изучить prepared statements или, по крайней мере, escaping данные - вы рискуете SQL injection.

+0

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

+0

Ваше решение было идеально! –

Смежные вопросы