2016-10-20 3 views
0

Это мой код. Я знаю, цикл while будет работать только один раз. Но foreach не зацикливается после получения одного значения, т. Е. Если я выберу 3 флажка. Только один передаст значения.Пока цикл работает только один раз внутри для каждого php

if(!empty($_POST["list"])) 
     { 
$connect = @mysql_connect("localhost","***","***") or die (" this error"); 
mysql_select_db("edu_info")or die ("database does not exist"); 


      foreach($_POST["list"] as $list=> $val) 
      { 


$query=mysql_query("select * from students where id='$val' limit 1"); 

while($row=mysql_fetch_assoc($query)) 
{ 
$user=$row['username']; 
$number=$row['pphone']; 
$name=$row['name']; 
$pname=$row['pname']; 
} 
echo $user; 
echo $number; 
echo $name; 
echo $pname; 
    } 
    } 

Это мой флажок в html. Количество флажков не фиксирована, она зависит от того, ниже query.Code просто получить несколько флажков

{ 
     <input type="checkbox" name="list[]" value="<?php echo $id; ?> 
    } 

Почему Еогеасп не выборки значений из всех выбранных флажков. Пожалуйста помоги. Заранее спасибо. :)

+1

Не выполняйте запрос внутри цикла, вам нужен только один запрос, который намного эффективнее – nogad

+0

Что такое '$ query1' и как он связан с' $ query'? –

+1

Могу ли я предположить, что он получает только последнее значение? Потому что вы перезаписываете переменные в своем первом отрезке - и вы на самом деле ничего не делаете с ними (по крайней мере, не из кода, который вы показали). – Qirel

ответ

0

Мне кажется, что ваш цикл while перезаписывает значения каждый раз. Я не вижу, где вы делаете что-нибудь со значениями вы извлекаемых и, следовательно, к примеру:

$user=$row['username']; 

может быть выполнение в три раза, но каждый раз перезаписывать предыдущее значение. Это всегда дает вам последнее значение, верно? Если это так, это потому, что вы устанавливаете $user три раза, и только после последнего вы делаете что-нибудь с ним.

+0

после получения $ val я использую его для выбора переменных, таких как $ user из другой базы данных .. но когда я повторяю эти переменные, я получаю только одно значение. foreach не выполняется для всех флажков, которые я выбрал .. так что в основном я получение одного доллара вместо многих –