Получение количества похожих строк в базе данных и отображение их отдельно в форме - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть таблица пользователей в базе данных, где пользователь вводит форму в базу данных. Это включает в себя несколько переключателей. Я хочу, чтобы количество похожих переключателей отображалось рядом с соответствующей записью формы.

Есть 8 вариантов радио, и у меня есть рабочее решение, хотя это не идеально:

    mysql_select_db($database_name, $db) or die(mysql_error());

$query1 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream1' GROUP BY streamnumber ORDER BY streamnumber "; 
$result1 = mysql_query($query1) or die(mysql_error());

$query2 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream2' GROUP BY streamnumber ORDER BY streamnumber "; 
$result2 = mysql_query($query2) or die(mysql_error());

$query3 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream3' GROUP BY streamnumber ORDER BY streamnumber "; 
$result3 = mysql_query($query3) or die(mysql_error());

$query4 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream4' GROUP BY streamnumber ORDER BY streamnumber "; 
$result4 = mysql_query($query4) or die(mysql_error());

$query5 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream5' GROUP BY streamnumber ORDER BY streamnumber "; 
$result5 = mysql_query($query5) or die(mysql_error());

$query6 = "SELECT streamnumber, COUNT(id) FROM users WHERE streamnumber = 'Stream6' GROUP BY streamnumber ORDER BY streamnumber "; 
$result6 = mysql_query($query6) or die(mysql_error());

Я сделал отдельный запрос для каждой радиокнопки, а затем собираюсь отобразить информацию, используя эту логику:

    <?php 
    while($row = mysql_fetch_array($result1)){

                    echo "There are ". $row['COUNT(id)'] ." ". $row['streamnumber'] ." items.";
                    echo "<br />";


        } ?>
<input style="width:5px;" type="radio" name="streamnumber" value="Stream1" id="StreamDates_0">  
<label>Stream 1 - Module 1 + 2 - 21st - 23rd March, Module 3 - 19th - 20th April, Module 4 - 15th - 16th May 4</label>

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

1 Ответ

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

Разве вы не можете просто запустить 1 запрос?

$query = "SELECT streamnumber, COUNT(id) AS cnt FROM users 
 WHERE streamnumber IN ('Stream1', 'Stream2', 'Stream3',
 'Stream4', 'Stream5', 'Stream6') 
 GROUP BY streamnumber ORDER BY streamnumber "; 
$result = mysql_query($query) or die(mysql_error());
$my_array=array();
while($row = mysql_fetch_array($result1))
{
  $my_array[$row["streamnumber"]] = $row["cnt"];
}
// now $my_array["Stream1"] contains count of 'Stream1' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...