2012-02-22 3 views
1

Интересно, может ли кто-нибудь помочь мне.Radio Button List

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

<?php 

mysql_connect("hostname", "username", "password")or 
die(mysql_error()); 
mysql_select_db("database"); 



$result = mysql_query("SELECT userdetails.userid, finds.userid, finds.locationid, detectinglocations.locationid, detectinglocations.locationname, finds.dateoftrip, finds.findname, finds.finddescription FROM userdetails, finds, detectinglocations WHERE finds.userid=userdetails.userid AND finds.locationid=detectinglocations.locationid AND finds.userid = 1"); 
if (mysql_num_rows($result) == 0) 
// table is empty 
    echo 'There are currently no finds recorded for this location.'; 
echo"<table>\n"; 
    while (list($userid, $dateoftrip) = 
    mysql_fetch_row($result)) 
    { 

    echo"<tr>\n" 
    . 
    "<td><input type='radio' name='radio' dateoftrip, value='{$userid}' /></td>\n" 
    ."<td><small>{$dateoftrip}</small><td>\n" 
    ."</tr>\n"; 
    } 
    echo"<tr><td colspan=\"3\">"; 
    echo"<br>"; 
    echo"</td></tr>"; 
    echo'</table>'; 

?> 

я могу управлять, чтобы построить список, но значение рядом с кнопкой радио является «идентификатор», тогда как я ищу, чтобы поставить «dateoftrip» против каждой кнопки радио.

Я работаю над этим некоторое время, и я не вижу, где моя ошибка.

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

Большое спасибо

ответ

1

mysql_fetch_row() возвращает числовой индексированный массив из результирующего ресурса, имеющий поле в том же порядке, как вы выбрали их. Поскольку ваши первые 2 поля SELECT - это userdetails.userid, finds.userid, эти два возвращаются обратно на ваш звонок list().

Вместо этого проще использовать mysql_fetch_assoc(). Вы можете указать mysql_fetch_row() и вычислить числовые индексы двух столбцов, которые вам нужны, но это сложно. В лучшем случае вы должны включить только два столбца, которые вам действительно нужны в вашем SELECT, что приведет к правильной работе вашего кода.

while ($row = mysql_fetch_assoc($result)) { 
    $userid = $result['userid']; 
    $dateoftrip = $result['dateoftrip']; 
    // etc... 
} 

Заметим, что так как вы выборку двух столбцов называется userid из разных таблиц, вы должны создать псевдонимы для них, чтобы дифференцировать их после загрузки:

// Aliases for userdetails.userid, finds.userid: 
$result = mysql_query("SELECT userdetails.userid AS userid, finds.userid AS findsid, finds.locationid, detectinglocations.locationid, detectinglocations.locationname, finds.dateoftrip, finds.findname, finds.finddescription FROM userdetails, finds, detectinglocations WHERE finds.userid=userdetails.userid AND finds.locationid=detectinglocations.locationid AND finds.userid = 1"); 
+0

Привет, большое спасибо за помощь мне с этим. Очень ценится. – IRHM

1

Вы выбираете намного больше данных, чем ты используешь. Попробуйте уменьшить свой оператор SELECT, чтобы первым выбранным полем был идентификатор пользователя, а второй - дата поездки. Тогда, может быть, вы можете надеяться, что ваш оператор list будет работать так, как вы этого хотите.

+0

Привет, большое спасибо за то, что нашли время ответить на мой пост и руководство. Это очень ценится. С уважением – IRHM

2

Ваша проблема в этой строке:

while (list($userid, $dateoftrip) = 

данного запроса является:

SELECT userdetails.userid, finds.userid, finds.locationid, detectinglocations.locationid, detectinglocations.locationname, finds.dateoftrip, finds.findname, ..... 

список() назначить переменную в порядке, возвращенное SELECT, запрос, первые два результата колонки фактически являются идентификаторами пользователя.

Я предлагаю использовать:

while ($row = mysql_fetch_assoc($result)) { 
[...] 
"<td><small>".$row["dateoftrip"]."</small></td>\n" // you also have a typo here 

или изменить запрос, чтобы просто вернуть идентификатор пользователя и dateoftrip в таком порядке

+0

Большое спасибо за то, что нашли время, чтобы ответить на мой пост и бесценные знания. С уважением – IRHM