Не выводятся данные из Mysql

Александр Г.

Новичок
Ребята помогите не могу понять в чем дело...Суть такова - есть база исполнителей и их композиций... На страницу по запросу выводим исполнителя и его композиции..если их много, то идет постраничный вывод(на страницу 10 композиций)..проблема в том что на первой странице все нормально и в цикле все композиции выводятся,но переходя на вторую странцу выдает ошибку mysql_fetch_array(). А не выводит потому что 1 страница передает почему то не полное имя. Не могу понять почему обрезается имя
 

Александр Г.

Новичок
Ребята помогите не могу понять в чем дело...Суть такова - есть база исполнителей и их композиций... На страницу по запросу выводим исполнителя и его композиции..если их много, то идет постраничный вывод(на страницу 10 композиций)..проблема в том что на первой странице все нормально и в цикле все композиции выводятся,но переходя на вторую странцу выдает ошибку mysql_fetch_array(). А не выводит потому что 1 страница передает почему то не полное имя. Не могу понять почему обрезается имя

Код:

<?
include("../blocks/bd.php");

if (isset($_GET['name'])) {$name = $_GET['name'];}

?>
<?
$result77 = mysql_query("SELECT str FROM options_music", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];

@$page = $_GET['page'];
$result00 = mysql_query("SELECT COUNT(*) FROM music WHERE name='$name'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);

if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
$result = mysql_query("SELECT * FROM music WHERE name='$name' ORDER BY id LIMIT $start, $num",$db);
$myrow = mysql_fetch_array($result);

do
{
printf("<table width='480'>
<tr>
<td width='174' align='left'><span class='стиль4'>%s</span></td>
<td width='220' align='left'>
<object type='application/x-shockwave-flash' data='../blocks/player.swf' id=audioplayer1 height=20 width=220>
<param name=movie value='../blocks/player.swf'></param>
<param name=FlashVars value='playerID=1&soundFile=%s'></param>
<param name=quality value=high></param>
<param name=menu value=false></param>
<param name=wmode value=transparent></param>

</object
></td>
<td width='70'><div align='center'>%sСкачать</div></td>
</tr>
</table><br>",$myrow['title'],$myrow['play'],$myrow['download']);

}
while($myrow = mysql_fetch_array($result));

if ($page != 1) $pervpage = '<a href=viem_song?name='.$name.'&page=1>Первая</a> | <a href=viem_song.php?name='.$name.'&page='. ($page - 1) .'>Предыдущая</a> | ';

if ($page != $total) $nextpage = ' | <a href=viem_song.php?name='.$name.'&page='. ($page + 1) .'>Следующая</a> | <a href=viem_song.php?name='.$name.'&page=' .$total. '>Последняя</a>';

if($page - 5 > 0) $page5left = ' <a href=viem_song.php?name='.$name.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=viem_song.php?name='.$name.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=viem_song.php?name='.$name.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=viem_song.php?name='.$name.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = ' <a href=viem_song.php?name='.$name.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

if($page + 5 <= $total) $page5right = ' | <a href=viem_song.php?name='.$name.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=viem_song.php?name='.$name.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=viem_song.php?name='.$name.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=viem_song.php?name='.$name.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=viem_song.php?name='.$name.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';

if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}

?>
 

Александр Г.

Новичок
я так понял нужно экранировать пробел в имени
 

Вурдалак

Продвинутый новичок
В данном коде много проблем, но чтобы имя передавалось на другую страницу — да, тут urlencode() нужен.
 

Александр Г.

Новичок
В данном коде много проблем, но чтобы имя передавалось на другую страницу — да, тут urlencode() нужен.
честно говоря я еще новичок,но в других разделах он у меня работает нормально...а на счет Попова - нарвался на этот урок и хоть что то начал понимать, а то год перечитал кучу литературы и в инете по этой теме,вообще еще больше запутывался...нагородят коды, что хрен разберешь откуда что и куда.. а по этой urlencode() нужен.[/quote] теме где можно почитать.просто хочу разобраться более конкретно, а не как многие в инете тупо слизавают код даже не понимая что он делает
 

Александр Г.

Новичок
Александр Г.
не можешь изобрести велосипед - не изобретай
http://phpclub.ru/talk/threads/Как-сделать-пагинацию.68274/ и вообще поиск крайне поможет, задача из простых
так я и не собираюсь изобретать велик,я хочу более менее научиться ездить на нем и то чисто для самообразования
 

Александр Г.

Новичок
Купите одну хорошую книгу тогда.
какую например....уже куплено около десятка..везде одно и тоже..одни примеры...и одни куски код,а как склеить эти куски...а логику постраения запросов никто не обьясняет...так чисто этот запрос вытаскивает это и все...это тоже самое что делетанту обьяснять по телоефону как настроить сеть или отремонтировать комп...
 

KorP

Новичок
а что может быть не понятно в SELECT * FROM table? и тогда советую книгу по mysql, а не по php - MySQL Справочник по языку Артёменко, если мне память не изменяет (Артёменко переводчик, писали книгу команда mysql, но их, как авторов, при переводе почему то забыли упомянуть)
 

Александр Г.

Новичок
а что может быть не понятно в SELECT * FROM table? и тогда советую книгу по mysql, а не по php - MySQL Справочник по языку Артёменко, если мне память не изменяет (Артёменко переводчик, писали книгу команда mysql, но их, как авторов, при переводе почему то забыли упомянуть)
Это я понимаю, но я еще не сталкивался с экранированием..я так понимаю что у меня проблема с этим...нужно с делать экранирование, но где и в каком месте? у меня на первой стр выводится все норм, а вот на вторую передача переменной идет уже вместо Иван Иванов - Иван, вот где сделать экранирование чтобы считывалось имя полностью
 

KorP

Новичок
Я не знаю и знать на самом деле не хочу - в каком запросе у тебя там что не так происходит. 100500 средств отладки тебе указали, что читать - сказали - пользуйся. Не можешь пользоваться - сожги книги и найми программиста. А искать в какой переменной у тебя там Ваня не в той позе и читать 100 строк примитивного, кривого кода - мало кому интересно.
 
Сверху