Собираю БД на основе PHP кода

Статус
В этой теме нельзя размещать новые ответы.

Neonion

Создатель
Регистрация
29 Сен 2008
Сообщения
26
Реакции
0
Вот взялся за очень нужный общественный проэкт(на чистом энтузиазме:)), но пока знания не позволяют все делать самому и быстро...:(
В общем получил движок в распоряжение, от которого пропала база. Движок не публичный, поэтому он есть еще только у одного человека, у которого база и потерялась. пришлось самому собирать её.

Вопрос таков.. Основной из главных проблем сейчас это вот эта ошибка : mysql_num_rows(:( supplied argument is not a valid MySQL result resource in z:\home\localhost\www\cup\index.php on line 52(или любая другая строчка и файл...смысл там одинаков)
Хочу на примере исправления одного из таких случаев понять как дальше с этим бороться..
Вот один из кусочков кода где возникает эта ошибка :
PHP:
<?php

$sql_pn = "SELECT players.countr_id, players.name, players.pos_a, sum(results.points) as pnts FROM players, results 
	WHERE players.id=results.pl_id group by pl_id order by pnts desc limit 0,10";
$result_pn = mysql_query($sql_pn, $conn);
if (mysql_num_rows($result_pn)) {            *//Строчка №52:)
		$c=0;
		$pos=0;
		$prev_pnts=-1;
		while ($qry_pn=mysql_fetch_array($result_pn)) { $c++;
			if ($prev_pnts!=$qry_pn["pnts"]) $pos++;

			if($pos<10) echo "&nbsp;&nbsp;";
			echo $pos.". ";
			/*
			if ($qry_pn["pos_a"]>$pos || !$qry_pn["pos_a"]) echo "<img src=img/up.gif>";
				else if ($qry_pn["pos_a"]<$pos) echo "<img src=img/down.gif>";
				else echo "&nbsp;-&nbsp;";
			echo " ";
			*/
			if ($qry_pn["countr_id"]) {
			$sql_c = "SELECT * FROM countries WHERE id=".$qry_pn["countr_id"];
			$result_c = mysql_query($sql_c, $conn);
			if (mysql_num_rows($result_c)) {
				$qry_c=mysql_fetch_array($result_c);
				echo "<img border=0 src=".$countr_pic_small_path.$qry_c["pic_small"]." alt='".$qry_c["name"]."'>";
			} 
			}
			
			echo " ".$qry_pn["name"]." - ".$qry_pn["pnts"]." ".$txt_pts."<br>";
		$prev_pnts=$qry_pn["pnts"];
		}
}
?>
Как я понял сначала в переменную $sql_pn я из БД таблицы players отбираю поля "players.name, players.pos_a, sum(results.points) as pnts FROM players, results
WHERE players.id=results.pl_id group by pl_id order by pnts desc limit 0,10"
и потом в $result_pn записывается результат запроса с помощью ф-ции mysql_query...

Но что-то я создал в БД таблицу players с гарафами countr_id, players.name, players.pos_a, sum, results и ничего не помогло... Что я не правильно делаю? Я так понимаю что все неправильно..:)
 
такая ошибка бывает, когда результат запроса содержит 0 строк, т.е. запрос был неудачен
необходимо вводить обработку этого варианта до подстановки в функцию на строке 52.
совет: погоняй скрипт под редактором, который позволянт пошагово выполнять код, все станет понятней
 
а таблицу results кто будет создавать ???

PHP:
FROM players, results
 
добавь проверку
PHP:
if ($result_pn) { код дял работы с результатом выборки}

он проверяет что твой запрос вообще выполнился
 
а таблицу results кто будет создавать ???
это то меня и интересует:) Я наверное громоздко как-то все написал.
Я создал две эти таблицы players и results. А как понять какие строки должны в них храниться? Я так понимаю, что все что после точки - это строка, НО. Как это понять?
Код:
results 
    WHERE players.id=results.pl_id group by pl_id order by pnts desc limit 0,10

По идее чтобы заработал этот кусок надо просто создать эти две таблицы и в них просто пустые строки с нужными именами созать?

Вот собсна и сабж : Для просмотра ссылки Войди или Зарегистрируйся
Хочу просто на примере блока TOP 10 Players понять как можно остальное исправить.
 
Что значить строки?
По порядку берем запрос:
PHP:
$sql_pn = "SELECT players.countr_id, players.name, players.pos_a, sum(results.points) as pnts FROM players, results  
    WHERE players.id=results.pl_id group by pl_id order by pnts desc limit 0,10";
после FROM - используемые таблицы:
players и results
Выписываем используемые столбцы для каждой таблицы:
players
id
countr_id
name
pos_a

results
points
pl_id

В таблице results явно не хвататет поля id. Причем из WHERE players.id=results.pl_id видно, что results.pl_id является ссылкой на players.id. countr_id - тоже ссылка на таблицу скорее всего со странами.
Итог:
players
id
countr_id
name
pos_a

results
id
points
pl_id

Поля id, countr_id, pos_a, points, pl_id - числовые.
Поле name строковое.
 
Все отлично воткнулся... Почти собрал уже всю базу:) попогли так же видео уроки Евгения Попова... Полезная штука для начинающих.
Осталась одна проблема.. Не знаю пока как её решить.
Вот кусочек кода, и мне відаёться такая ошибки :

Код:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\cup\admin\adm_signups_add_subm.php on line 22
Error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 0)' at line 1

Вот сосбсна код в котором она возникает :
Код:
$tour_id=strip_tags(trim($HTTP_POST_VARS["tour_id"]));
$pl_id=strip_tags(trim($HTTP_POST_VARS["pl_id"]));


$sql="select * from signups where tour_id=".$tour_id." and pl_id=".$pl_id;
$result=mysql_query($sql, $conn);
if (mysql_num_rows($result)) /* Строка номер 22, на которой ошибка выдаётся */
{
echo "<b>Error:</b>Player already signed up on this tourney";
exit;
}


$sql = "insert into signups (tour_id, pl_id) values (".$tour_id.", ".$pl_id.")";
$result = mysql_query($sql, $conn);

if (!$result) {
  print "<b>Error:</b><br>";
  print mysql_error();
  exit;
}

Не могу понять что за tour_id и откуда оно вообще берется и че с ним делается.....:(
 
Это колонка tour_id и pl_id в таблице signups.
Определены они вот тут:

$tour_id=strip_tags(trim($HTTP_POST_VARS["tour_id"]));
$pl_id=strip_tags(trim($HTTP_POST_VARS["pl_id"]));
 
ага...уже кажеться разобрался.
ошибку выдавало потому что в БД в поле id не было ничего...
 
Ребята, спасайте кто может!!!! Ахтунг!
В общем начало чемпионата через час, а я дурак, упустил одну ошибку, которую нужно срочно исправлтять в коде, а не получаеться..не знаю где ошибку даже допустил:(((

Выдается ошибка : Warning: mysql_num_rows(:( supplied argument is not a valid MySQL result resource in z:\home\localhost\www\cup\tour.php on line 183

Раньше я их борол, а тут не знаю что делать. вот кусок кода где она возникает :

PHP:
/////players standings
		if ( $qry["signup_begin"]<=$now)	{

				$sql_pn = "SELECT players.countr_id, players.team_id, players.name, players.host, sum(results.points) as pnts FROM players, results 
					WHERE tour_id=".$qry["id"]." and players.id=results.pl_id group by pl_id order by pnts desc";
				$result_pn = mysql_query($sql_pn, $conn);
[COLOR="Red"][B]Вот в это строке ошибка:[/B][/COLOR] if (mysql_num_rows($result_pn)) {
					echo "<td width=50% align=center valign=top><table border=0 cellpadding=3 cellspacing=1 width=300>";//player standings
					echo "<tr><td class=textheader colspan=5 align=center><nobr>".$txt_playersstandings."</nobr></td></tr>";
					echo "<tr><td class=news3 align=center>#</td><td class=news3 align=center>".$txt_country."</td><td class=news3 align=center>".$txt_team."</td><td class=news3 align=center width=100%>".$txt_player."</td><td class=news3 align=center>".$txt_pts."</td></tr>";
					$c=0;
					$pos=0;
					$prev_pnts=-1;

Вроде таблицы и строки создал, а оно все равно ошибку выдает..Что на локале, что на хосте...:((( Это будет провал:(
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху