2013-07-10 4 views
1

У меня есть цикл while, который собирает информацию из моей БД. Я тогда эхо, что вот так ...php while variable variable number

$num = 1; 
$i=0; 
$drop = 'yes'; 
echo '<form id="drop_form" method="post" action="here.php">'; 

while($row = mysql_fetch_assoc($query)) { 

    $player[] = $row['player']; 

    echo '<tr class="rows"><td>'; echo'<input type="hidden" 
    name="yeah" value="'.$num.'"/> 
    <input name="submit" type="submit" value="submit"/>'; 

    echo $player[$i].'</td></tr>'; 

    $num++;       
    $i++; 
} 
echo '</table>'; 
echo '</form>'; 

, когда я после моего $num переменной всегда отображаться в качестве последнего возможного числа. Поэтому, если в этом запросе есть 7 строк, число будет равно 7. Я хочу, чтобы вы могли нажать кнопку «Отправить» и получить скрытое значение в форме отправки.

Player 
mike hidden number = 1 
chris hidden number = 2 
jim  hidden number = 3 
dan  hidden number = 4 
+1

* Обязательно: * Функции 'mysql_ *' будут [устарели в PHP 5.5] (http://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated). Не рекомендуется писать новый код, поскольку он будет удален в будущем. Вместо этого либо [MySQLi] (http://php.net/manual/en/book.mysqli.php), либо [PDO] (http://php.net/manual/en/book.pdo.php) и [быть лучшим разработчиком PHP] (http://jason.pureconcepts.net/2012/08/better-php-developer/). –

+0

спасибо, что не на нем – Ricky

+3

Вы создаете форму с несколькими входами, все называемые 'yeah', с разными значениями. Когда вы публикуете форму, более ранние из них будут переписаны более поздними, поэтому только один, фактически представленный, является последним. – andrewsi

ответ

1

Ваша форма представления что-то вроде yeah=1&yeah=2&yeah=3 ... Это эквивалентно следующему PHP:

$_POST['yeah'] = 1; 
$_POST['yeah'] = 2; 
$_POST['yeah'] = 3; 

Из этого вы можете увидеть, что переменная перезапись.

Попробуйте использовать name="yeah[]", так как это приведет массив следующим образом:

$_POST['yeah'][] = 1; 
$_POST['yeah'][] = 2; 
$_POST['yeah'][] = 3; 

Результирующее в Array(1,2,3);

1

Добавьте это до начала вашего времени цикла: $player = array();

Вы должны всегда определяйте массивы перед циклом :)

Надеюсь, это поможет! :)

также:

name="yeah" 1.Change к name=yeah[], как вы хотите, этот вход будет массивом. 2.Нажмите кнопку отправки за пределами while loop, так как вам может понадобиться только один из них.