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

Тема в разделе "PHP", создана пользователем Neonion, 25 ноя 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Neonion

    Neonion Создатель

    Регистр.:
    30 сен 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 и ничего не помогло... Что я не правильно делаю? Я так понимаю что все неправильно..:)
     
  2. tirrex

    tirrex

    Регистр.:
    9 ноя 2008
    Сообщения:
    213
    Симпатии:
    60
    такая ошибка бывает, когда результат запроса содержит 0 строк, т.е. запрос был неудачен
    необходимо вводить обработку этого варианта до подстановки в функцию на строке 52.
    совет: погоняй скрипт под редактором, который позволянт пошагово выполнять код, все станет понятней
     
  3. myweb

    myweb Среда обитания WEB

    Регистр.:
    10 сен 2007
    Сообщения:
    539
    Симпатии:
    246
    а таблицу results кто будет создавать ???

    PHP:
    FROM playersresults
     
  4. pslava

    pslava

    Регистр.:
    16 май 2007
    Сообщения:
    618
    Симпатии:
    122
    добавь проверку
    PHP:
    if ($result_pn) { код дял работы с результатом выборки}
    он проверяет что твой запрос вообще выполнился
     
  5. Neonion

    Neonion Создатель

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

    Вот собсна и сабж : Перейти по ссылке
    Хочу просто на примере блока TOP 10 Players понять как можно остальное исправить.
     
  6. lucikan

    lucikan Создатель

    Регистр.:
    9 ноя 2008
    Сообщения:
    11
    Симпатии:
    2
    Что значить строки?
    По порядку берем запрос:
    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 строковое.
     
    Neonion нравится это.
  7. Neonion

    Neonion Создатель

    Регистр.:
    30 сен 2008
    Сообщения:
    26
    Симпатии:
    0
    Все отлично воткнулся... Почти собрал уже всю базу:) попогли так же видео уроки Евгения Попова... Полезная штука для начинающих.
    Осталась одна проблема.. Не знаю пока как её решить.
    Вот кусочек кода, и мне відаёться такая ошибки :

    Код:
    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 и откуда оно вообще берется и че с ним делается.....:(
     
  8. kpe8eg

    kpe8eg Создатель

    Регистр.:
    6 ноя 2008
    Сообщения:
    32
    Симпатии:
    1
    Это колонка 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"]));
     
  9. Neonion

    Neonion Создатель

    Регистр.:
    30 сен 2008
    Сообщения:
    26
    Симпатии:
    0
    ага...уже кажеться разобрался.
    ошибку выдавало потому что в БД в поле id не было ничего...
     
  10. Neonion

    Neonion Создатель

    Регистр.:
    30 сен 2008
    Сообщения:
    26
    Симпатии:
    0
    Ребята, спасайте кто может!!!! Ахтунг!
    В общем начало чемпионата через час, а я дурак, упустил одну ошибку, которую нужно срочно исправлтять в коде, а не получаеться..не знаю где ошибку даже допустил:(((

    Выдается ошибка : 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;
    Вроде таблицы и строки создал, а оно все равно ошибку выдает..Что на локале, что на хосте...:((( Это будет провал:(
     
Статус темы:
Закрыта.