[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Глобальный масив
Skesh
Доброго времени суток, нужна Ваша помощь в следующем вопросе:
есть цикл:

while ($line = mysql_fetch_row($result)) 
{
$i++;
$a[i]=$line[0];
echo "$a[i]";
}


нужно сделать даные масива $a[i] глобальными, global $a; не подходить поскольку глобальным делает только первое значение, $GLOBALS[a] тоже выдает какуето ерунду, помогите плиз!! Зарание благодарен.



Спустя 1 минута, 49 секунд (13.07.2011 - 13:36) Winston написал(а):
Цитата (Skesh @ 13.07.2011 - 13:34)
нужно сделать даные масива $a[i] глобальными,

А зачем это? Чтобы использовать значения массива вне тела while ?
Так оно и так будет доступно

Спустя 4 минуты, 3 секунды (13.07.2011 - 13:40) inpost написал(а):
$a[i]=$line[0]; - уже неправильно, надо $a[$i]=$line[0]; , а ещё лучше просто $a[] = $line[0];

И вообще, зачем глобальный? Пойми, самое главное, что ты просто неправильно можешь понимать банальные вещи и пытаться использовать их не так, где надо. Покажи, где именно будешь пользоваться глобальными и зачем тебе это.

Спустя 2 минуты, 51 секунда (13.07.2011 - 13:43) kristall написал(а):
Ну, напиши перед циклом $a = array();

Спустя 6 минут, 2 секунды (13.07.2011 - 13:49) Skesh написал(а):
Ну вот весь скрипт:


<?php
global $a;
require ('db.php');
$query="SELECT * FROM `addnews` ORDER BY `inc` DESC";
$result = mysql_query($query) or die("Query не працює");
while ($line = mysql_fetch_row($result))
{
$i++;
//$a[i]=$line[0];
$GLOBALS[a]=$line[0];
echo "$a[i]";
}

for ($i=$ot; $i<=$do; $i++)
{
$query="SELECT * FROM addnews WHERE `inc`=$a[i] ORDER BY `inc` DESC";
$result = mysql_query($query) or die("Query 1 не працює");
$line = mysql_fetch_row($result);
echo "
<table class=
\"wb\" width=\"100%\">
<tr><td class=
\"wb\" BGCOLOR=\"748e4a\" colspan=\"2\" background=\"syte/images/bg6.jpg\">
<font size=
\"3\" color=\"white\">
$line[4] р.
</font> <b><font size=
\"3\" color=\"white\">
$line[1] </b>
</td></tr>
<tr><td class=
\"wb\" colspan=\"2\"><font size=\"3\">";
if ($line[5])
{
echo "<img src=\"syte/text/addnews/images/$line[5]\" align=\"right\" width=\"130\">";
}
echo "
$line[2]
<br><a class=\"news\" href=\"index.php?page=syte/text/addnews/full.php&rfile=$line[0]\"> >><font size=\"3\"> читати далі </font></a>
</td></tr></table><br>
"
;
}

echo "";
mysql_close($link);
?>

Это моя лента новостей, я хочу сделать постраничный вывод, скрипт еще не закончен, для продолжения мне действительно нужно использовать значения массива вне тела while. Может я чегото не вижу или не знаю?

Ключевым тут является поле:
$query="SELECT * FROM addnews WHERE `inc`=$a[i] ORDER BY `inc` DESC";

Спустя 3 минуты, 4 секунды (13.07.2011 - 13:52) kristall написал(а):
Во-первых: не забывай доллар у индекса. Надо $a[$i]
Во-вторых: используй фигурные скобки

$query="SELECT * FROM addnews WHERE `inc`={$a[$i]} ORDER BY `inc` DESC";

Спустя 1 минута, 47 секунд (13.07.2011 - 13:54) Skesh написал(а):
Ухты, пошло =) всем большое спасибо. kristall Вам особая благодарность =)

Спустя 35 минут, 15 секунд (13.07.2011 - 14:29) inpost написал(а):
Skesh
А то, что я выше написал ответ на это, ты удачным образом пропустил? smile.gif

Спустя 59 минут, 18 секунд (13.07.2011 - 15:28) Skesh написал(а):
Прошу прощения не хтел никого обидеть, просто Ваш совет я не использовал в SQL запросе. Моя оплошность.

Спустя 1 час, 10 минут, 7 секунд (13.07.2011 - 16:38) Skesh написал(а):
Вот весь код:
<html>
<
HEAD>
<
META http-equiv=content-type content="text/html; charset=windows-1251">
</
HEAD>
<
body >

<?php
require ('db.php');
$query="SELECT * FROM `addnews` ORDER BY `inc` DESC";
$result = mysql_query($query) or die("Query не працює");


while ($line = mysql_fetch_row($result))
{
$art++; //підраховуємо кількість новин
$a[]=$line[0]; //призначаємо для $a[] індекс бд
}

if(!$ot)
{
$ot=1;
}

//Вивод сторінок (дублюється знизу)
if($ot==1) $now=1;
else $now=ceil($ot/20)+1;

echo "Зараз Ви на сторінці №$now<br>";
echo "<b>Сторінки:</b>";
echo "<a class=\"news\" href=\"index.php?page=syte/text/addnews/out.php&ot=1\"> 1 </a>";
$paper=ceil($art/20);
for ($i=1; $i<=$paper-1; $i++)
{
echo "<a class=\"news\" href=\"index.php?page=syte/text/addnews/out.php&ot=";
$p=$i*20;
echo "$p";
$p=$i+1;
echo "\"> $p </a><p>";
}


$do=$ot+20; // визначаєм номер кінцевої
if ($do>$art) $do=$art-1; // ітерації цикла для виводу новин

for ($i=$ot; $i<=$do; $i++) //Вивод новин
{
$query="SELECT * FROM addnews WHERE `inc`='$a[$i]' ORDER BY `inc` DESC";
$result = mysql_query($query) or die("Query 1 не працює");
$line = mysql_fetch_row($result);
echo "
<table class=
\"wb\" width=\"100%\" title=\"$line[1]\">
<tr><td class=
\"wb\" BGCOLOR=\"748e4a\" colspan=\"2\" background=\"syte/images/bg6.jpg\">
<font size=
\"3\" color=\"white\">
$line[4] р.
</font> <b><font size=
\"3\" color=\"white\">
$line[1] </b>
</td></tr>
<tr><td class=
\"wb\" colspan=\"2\"><font size=\"3\">";
if ($line[5])
{
echo "<img src=\"syte/text/addnews/images/$line[5]\" align=\"right\" width=\"130\">";
}
echo "
$line[2]
<br><a class=\"news\" href=\"index.php?page=syte/text/addnews/full.php&rfile=$line[0]\"> >><font size=\"3\"> читати далі </font></a>
</td></tr></table><br>
"
;
}
mysql_close($link);

//Вивод сторінок
echo "Зараз Ви на сторінці №$now<br>";
echo "<b>Сторінки:</b>";
echo "<a class=\"news\" href=\"index.php?page=syte/text/addnews/out.php&ot=1\"> 1 </a>";
for ($i=1; $i<=$paper-1; $i++)
{
echo "<a class=\"news\" href=\"index.php?page=syte/text/addnews/out.php&ot=";
$p=$i*20;
echo "$p";
$p=$i+1;
echo "\"> $p </a>";
}
?>

</body>
</
html>

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


_____________
*пускает слюну, глядя на код* :)
Быстрый ответ:

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