Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > почему такое работает в MySQL а в php нет??


Автор: agarheim 7.4.2006, 00:28
Код

SELECT prise.artikul, prise.name_prise, prise.cena, zakaz.kolichestvo
FROM prise, zakaz
WHERE zakaz.num_zakaz =1
AND prise.prise_id = zakaz.prise_id
LIMIT 0 , 30 

ответ получаю вроде бы как правильный.
Если такое же пишу но через php то в ответ получаю всего одну строку вместо предположим 3.
подскажите...

Автор: Ignat 7.4.2006, 08:41
Потому как надо, полагаю, прочитать как пользоваться функциями mysql_fetch_xxxx()

Перемещаю из MySQL.

Автор: agarheim 7.4.2006, 14:19
не буду ничего писать в оправдание.
так как этой функцией для вывода результата я пользуюсь.while(..assoc())
но всеравно выводит одну строку. если бы не читал то не спрашивал бы.

Автор: agarheim 7.4.2006, 14:55
я неправильно описал суть проблемы.....у меня выводит все необходимые мне записи, кроме одной , самой первой.

Автор: IvanB 7.4.2006, 15:41
Цитата(agarheim @ 7.4.2006, 14:19 Найти цитируемый пост)
не буду ничего писать в оправдание.

Оправдываться то зачем?

Цитата(agarheim @ 7.4.2006, 14:19 Найти цитируемый пост)
while(..assoc())

Поподробнее.

Ты вывод так делаешь?
Код

while ($row = mysql_fetch_assoc($result)) 
{
        echo $row["artikul"]." ";
        echo $row["name_prise"]." ";
        echo $row["cena"]." ";
        echo $row["kolichestvo"]."<br>";
}

?

Может ещё поможет мануал: http://ru.php.net/get/php_manual_ru.chm/from/a/mirror....

Автор: Darhazer 7.4.2006, 16:06
А вообще, почему не написали неработающий код, зачем нам работающий, у вас с нем нет проблему, да значить и у нас нет ;)

Автор: Ignat 7.4.2006, 16:22
Darhazer, 5 баллов smile
Я правда, надеялся, что автор сам поймет.

Автор: IvanB 7.4.2006, 17:05
Флудеры, блин.....
Сорри за оффтоп.
Автору: привести ещё примеры возможного решения? Или неправильных дописать? smile

Автор: agarheim 7.4.2006, 17:31
вывожу вот так
$query = "SELECT prise.prise_id,prise.artikul, prise.name_prise, prise.cena, zakaz.kolichestvo
FROM prise, zakaz
WHERE zakaz.num_zakaz = '".$num_zakaz."'
AND prise.prise_id = zakaz.prise_id "; // Óçíàåì êîë-âî çàïèñåé â òàáëèöå.
$result = mysql_query($query);
$num_results=mysql_num_rows($result);
$r = mysql_fetch_row($result);

for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);
echo '<tr>';

echo '<td bgcolor="#dddddd" width="10%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="1">';
echo stripslashes($row['artikul']);
echo '</font></td><td bgcolor="#dddddd" width="60%"> <font face="Verdana, Arial, Helvetica, sans-serif" size="1">' ;
echo stripslashes($row['name_prise']);
echo '</font><td bgcolor="#dddddd" width="5%"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">' ;
echo stripslashes($row['cena']);
echo '</font></div><td bgcolor="#dddddd" width="5%">
<div align="center"> <font face="Verdana, Arial, Helvetica, sans-serif" size="1">' ;
echo stripslashes($row['kolichestvo']);
echo '</font></div></td></p></tr>';
}
код работает, а я и не говрил что он не работает. Но он выводит мне на 1 запись меньше чем есть в таблице. добавляю еще одну запись он выводит ту которую не выводил , а добавленная в не поля зрения.....
извените, но может я как-то неправильно излагаю суть вопроса.
Добавлено @ 17:34
допишите неработающих еще. а я значит тупой раз чего то непонимаю.

Автор: Serkys 7.4.2006, 17:37
Цитата(Darhazer @ 7.4.2006, 17:06 Найти цитируемый пост)
у вас с нем нет проблему, да значить и у нас нет ;)

У нас вообще проблем нет. smile

agarheim, выводи так:
Код

$res=запрос;
for ($i=0, $arr=array(); $arr=mysql_fetch_assoc($res); $i++) {
// тут эхи всякие
};

Добавлено @ 17:39
Если уж через mysql_num_rows приспичит, то
Код

for ($i=0; $i <=$num_results; $i++)
{
$row = mysql_fetch_array($result);
};

То есть надо <= ставить, а не <. Но мой первый вариант правильнее.
Добавлено @ 17:39
agarheim, пользуйся кнопкой "Код"!!!

Автор: Darhazer 7.4.2006, 17:48
Первая запись не виводиться, потому что вы уже ее взяли в $r перед циклом:

Код

$r = mysql_fetch_row($result);
for ($i=0; $i <$num_results; $i++)
{
$row = mysql_fetch_array($result);  //начинаеть с второй

Автор: agarheim 7.4.2006, 18:12
спасибо....теперь я понел откуда мне надо начинать читать мануал..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)