[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: WHILE внутри while
Дух системы
Здраствуйте.

Подскажите как поправить скрипт?


$query = "SELECT * FROM characters WHERE account_name = '$account'";
$result = MYSQL_QUERY($query);
$number = MYSQL_NUMROWS($result);
$i = 0;
WHILE ($i < $number){
$charId = mysql_result($result,$i,"charId");
$name = mysql_result($result,$i,"char_name");
$level = mysql_result($result,$i,"level");
$race = mysql_result($result,$i,"race");
$online = mysql_result($result,$i,"online");
$onlinetime = mysql_result($result,$i,"onlinetime");




//вот тут проблемный участок
$cofquery = "SELECT count FROM items WHERE item_id = '80000' AND owner_id = '$charId'";
$cofresult = MYSQL_QUERY($cofquery);
$cofnumber = MYSQL_NUMROWS($cofresult);
$cofcount = mysql_result($cofresult,$i,"count");
//вот тут проблемный участок


echo "<table border=1 width=100% cellpadding=0 cellspacing=0>";
echo "<tr><td align=left width=25 valign=center class=textby><br>";
if($online == "1") echo "<img src=$imghost/skin/$skinpath/img/on.png title=\" $name is now Online...\">";
if($online == "0") echo "<img src=$imghost/skin/$skinpath/img/off.png title=\" $name is Offline...\">";

echo "</td><td align=left width=120 valign=center class=textny><br>";
echo "$name";
echo "</td><td align=center width=75 valign=center class=textny><br>";
echo "$level";
echo "</td><td align=center width=75 valign=center class=textny><br>";
echo "$race";
echo "</td><td align=right width=100 valign=center class=textny><br>";
echo "$onlinetime";
echo "</td><td align=right width=100 valign=center class=textny><br>";



//вот тут проблемный участок
if ($i < $cofnumber)
{
echo "$cofcount";
}
else
{
echo "0";
}
//вот тут проблемный участок



echo "</td><td align=center valign=center class=textny></td></tr></table>";
$i++;
}


дело в том, что в таблице items, искуемой строки может и не быть, вот если её нет, надо чтобы отображалось 0.

mysql выводит такой результат, хотя вместо 0 у Aden должно быть 123


Doom 85 2 156966 101685


Warning: mysql_result() [function.mysql-result]: Unable to jump to row 1 on MySQL result index 11 in lk.php on line 54

Aden 7 3 560 0


Warning: mysql_result() [function.mysql-result]: Unable to jump to row 2 on MySQL result index 12 in lk.php on line 54

Test 78 4 9966 0




Спустя 2 минуты, 13 секунд (5.04.2010 - 21:29) sergeiss написал(а):
Во-первых, у тебя был не закрыт тэг ПХП в конце текста.

А во-вторых, почитай тут http://phpforum.ru/index.php?showtopic=21916, как ПРАВИЛЬНО работать с БД.

После прочтения появятся вопросы - спрашивай.

Спустя 10 минут, 2 секунды (5.04.2010 - 21:39) Дух системы написал(а):
sergeiss, случайно Enter нажал во время поста, отредактировал.
предложенную тему читал.

Спустя 14 минут, 33 секунды (5.04.2010 - 21:53) sergeiss написал(а):
Цитата (Дух системы @ 5.04.2010 - 22:39)
предложенную тему читал.

Судя по твоему коду, на пользу это не пошло wink.gif Потому что ты сам себе усложняешь задачу. Там, где можно написать 1 строку, пишешь десяток в стиле "китайского кодинга".

Спустя 3 минуты, 56 секунд (5.04.2010 - 21:57) Дух системы написал(а):
sergeiss, а по сути темы?

Спустя 4 минуты, 54 секунды (5.04.2010 - 22:02) sergeiss написал(а):
А я тебе и ответил, в основном, по сути темы... Переделай код! И тогда можно будет обсуждать что-то. Путь переделки - в теме по ссылке.

Этот же код мне лично обсуждать просто не интересно. Тебе очень хочется кодить "по-китайски"? А мне неинтересно.

Спустя 12 часов, 22 минуты (6.04.2010 - 10:24) Дух системы написал(а):
переделал код, суть остается открытой.
Как в цикле назначить переменную $cofcount, чтобы из другой таблицы выбирать строку с помощью переменной цикла $charid где item_id = '80000' и owner_id = '$charId'?


$account = $_SESSION['username'];
$link = mysql_connect($host,$dblogin,$dbpass) or die (mysql_error());
mysql_select_db($db2, $link);

$charsql = "SELECT * FROM characters WHERE account_name = '$account'";
$chares = mysql_query($charsql) or die(mysql_error());

$table = "<table border=1>\n";
while ($charow = mysql_fetch_assoc($chares))
{
$table .= "<tr>\n";
$table .= "<td>".$charow['char_name']."</td>\n";
$table .= "<td>".$charow['level']."</td>\n";
$table .= "<td>".$charow['race']."</td>\n";
$table .= "<td>".

//Как сделать вот это?
$charid = $chares['charId'];
$cofsql = "SELECT count FROM items WHERE item_id = '80000' AND owner_id = '$charId'";
$cofres = mysql_query($cofsql) or die(mysql_error());
$cofcount = $cofres['count'];
echo "$cofcount";
//Как сделать вот это? ^

."</td>\n";
$table .= "</tr>\n";
}
$table .= "</table>\n";
echo $table;

Спустя 40 минут, 37 секунд (6.04.2010 - 11:05) maxims написал(а):
Цитата
echo "$cofcount";

а зачем переменная в кавычках?

Спустя 8 минут, 52 секунды (6.04.2010 - 11:14) Guest написал(а):
maxims, привычка. обычно в echo пишу высованный из пальца текст и заодно используются переменные.

Спустя 39 минут, 19 секунд (6.04.2010 - 11:53) justIAM написал(а):
Вместо
Цитата
$charid = $chares['charId'];


$charid = $charow['charId'];

И дальше,соответственно, вместо
Цитата
$cofcount = $cofres['count'];


Нада:

$cofres = mysql_query($cofsql) or die(mysql_error());
// если запрос должен возвращать ровно 1 строку
if (mysql_num_rows($cofres) == 1)
{
$row = mysql_fetch_assoc($cofres)
$cofcount = $row['count'];
echo $cofcount;
)

/* или использовать while ($row = mysql_fetch_assoc($cofres))
{
$cofcount = $row['count'];
echo $cofcount;
}
*/





Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.