<?php
$title="Puzzle Game";
require("header.inc");
echo("\r\n");
?>
<?php
$db_host="localhost";
$db_user="root";
$db_password="";
$db_name="puzzle"; [COLOR="Red"]//Пишет, что здесь синтаксическая ошибка[/COLOR]
$dbcnx = @mysql_connect ($db_host,$db_user,$db_password);
if (!$dbcnx) {
echo("<p>В настоящий момент сервер БД недоступен - ошибка 001</p>");
exit();
}
if (!@mysql_select_db($db_name,$dbcnx)) {
echo("<p>В настоящий момент БД недоступена - ошибка 002</p>");
exit();
}
echo "connect good;";
if ((!(isset($_GET['play'])))&&(!(isset($_GET['end']))))
{
echo "go MAIN";
echo("<script language=\"javascript\" type=\"text/javascript\">");
echo("function CheckName()");
echo("{");
echo("var a = new Array();");
$link=mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_name);
$query = "SELECT * FROM puzzle1";
$res=mysql_query($query);
$num = mysql_num_rows($res);
$i=1;
if ($num!=0) [COLOR="red"]//Тоже ошибка - предполагается наличие объекта[/COLOR]
{
while($row=mysql_fetch_array($res))
{
echo("a[".$i."]='".$row['name']."';"."\r\n");
$i++;
}
}
$query = "SELECT * FROM puzzle2";
$res=mysql_query($query);
$num = mysql_num_rows($res);
if ($num!=0)
{
while($row=mysql_fetch_array($res))
{
echo("a[".$i."]='".$row['name']."';"."\r\n");
$i++;
}
}
$query = "SELECT * FROM puzzle3";
$res=mysql_query($query);
$num = mysql_num_rows($res);
if ($num!=0)
{
while($row=mysql_fetch_array($res))
{
echo(" a[".$i."]='".$row['name']."';"."\r\n");
$i++;
}
}
echo("var flg=0;"."\n");
echo("var name=document.getElementById(\"n\").value;"."\n");
echo("a[0] = ' ';"."\n");
echo("for(var i=0; i<=".$i."; i++)"."\n");
echo("{"."\n");
echo("if ((name==a)||(name==\"\"))"."\n");
echo("{"."\n");
echo("flg=1;"."\n");
echo("}"."\n");
echo("}"."\n");
echo("if(flg==0){document.getElementById(\"f1\").submit();}"."\n");
echo("else"."\n");
echo("{"."\n");
echo("alert('Пользователь с таким именем уже есть!');"."\n");
echo("document.getElementById(\"n\").value = \"\";"."\n");
echo("}"."\n");
echo("}"."\n");
echo("</script>"."\n\r");
echo("<center><p class=\"main_text\"><b>PUZZLE<br>GAME</b></p></center>"."\n");
echo("<center><table border=\"0\"><tr><td><img src=\"i/puzzle.jpg\"></td></tr></table></center>"."\n");
echo("<center><p class=\"main_text\">Введте ваше имя/ Enter your name<br>"."\n");
echo("<form action=\"index.php?play=1\" name=\"form1\" method=\"POST\" id=\"f1\"></p>"."\n");
echo("<INPUT TYPE=\"text\" NAME=\"name\" id=\"n\" class=\"game_i\"><br>"."\n");
echo("<p class=\"main_text\">Выборите уровень сложности/ Choose level<br>"."\n");
echo("<INPUT type=\"radio\" name=\"level\" value=\"1\" CHECKED>4x5<br>"."\n");
echo("<INPUT type=\"radio\" name=\"level\" value=\"2\">5x6<br>"."\n");
echo("<INPUT type=\"radio\" name=\"level\" value=\"3\">6x7</p>"."\n");
echo("<INPUT TYPE=\"image\" src=\"i/play.jpg\" VALUE=\"Играть! Play!\" onClick=\"CheckName()\">"."\n");
echo("</form></center>"."\n");
}
if(isset($_GET['play']))
{
if(isset($_POST['name'])&&(isset($_POST['level'])))
{
$name = $_POST['name'];
$level = $_POST['level'];
$user_name = $name;
echo "go PLAY<br>";
}
else
{
if((isset($_POST['name']))&&(isset($_POST['level'])))
{
$name = $_POST['name'];
$user_name = $name;
}
}
$link=mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_name);
$query = "SELECT * FROM puzzleimg WHERE lastid=0";
$res = mysql_query($query);
$num = mysql_num_rows($res); [COLOR="red"]//Ошибка - mysql_num_rows(): supplied argument is not a valid MySQL result resource [/COLOR]
$i = 0;
if ($num!=1)
{
$r = rand(1, $num);
while($row=mysql_fetch_array($res)) [COLOR="red"]//Ошибка- mysql_fetch_array(): supplied argument is not a valid MySQL result resource [/COLOR]
{
$i++;
if($i==$r)
{
$img_name = $row['imgname'];
$query = "UPDATE puzzleimg SET lastid=0 WHERE lastid=1";
$res1 = mysql_query($query);
$query = "UPDATE puzzleimg SET lastid=1 WHERE id=".$row['id'];
$res2 = mysql_query($query);
}
}
}
else
{
$row=mysql_fetch_array($res);
$img_name = $row['imgname'];
$id = $row['id'];
$query = "UPDATE puzzleimg SET lastid=0 WHERE lastid=1";
$res = mysql_query($query);
$query = "UPDATE puzzleimg SET lastid=1 WHERE id=".$id;
$res = mysql_query($query);
}
echo("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\" width=\"800\" height=\"600\" align=\"middle\" title=\"1\">");
echo("<param name=\"movie\" value=\"my_puzzle.swf?fn=".$img_name."&level=".$level."&name=".$name."\" />");
echo("<param name=\"quality\" value=\"high\" /><param name=\"BGCOLOR\" value=\"#FFFFFF\" /><param name=\"LOOP\" value=\"false\" />");
echo("<embed name=\"movie\" src=\"my_puzzle.swf?&fn=".$img_name."&level=".$level."&name=".$name."\" width=\"800\" height=\"600\" loop=\"false\" align=\"middle\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" bgcolor=\"#FFFFFF\"></embed>");
echo("</object>");
echo "<br>NAME: $img_name<br>";
}
if (isset($_GET['end']))
{
function gettimes($sec)
{
if ($sec<=60)
{
return $sec." сек.";
}
else
{
$nsec = $sec%60;
$min = ($sec - $nsec)/60;
$s = $min." мин. ".$nsec." сек";
return $s;
}
if($sec<0) $sec=666;
}
if(isset($_POST['level'])) $lev=$level;
if(!isset($_GET['rectable']))
{
$img_name=$_GET["img_name"];
echo "img:".$img_name.":<br>";
echo("<center><img src=\"i/s_".$img_name."\" border=0></center>");
$link=mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_name);
$query = "SELECT * FROM puzzle".$lev;
$res=mysql_query($query);
$num = mysql_num_rows($res);
if ($num>0)
{
$query = "SELECT * FROM puzzle".$lev." WHERE id='".$num."'";
$res=mysql_query($query);
$row=mysql_fetch_array($res);
echo("<center><p class=\"main_text\"><b>Поздравляем!<br>Congratulate you!</b></p></center>");
mysql_num_rows()
Имеется игра пазлы, которая написана на php, данные хранит в sql, сама игра подгружается из swf файла. Производитель бросил этот проект, тк ему было опрометчиво заплачено вперед. По его словам игра рабочая, но я ни разу не вижу, чтобы она была рабочая. Запускал я этот проект в Denwer'e и в NuSphere'e, выскакивают ошибки такого плана:
mysql_num_rows():supplied argument is not a valid MySQL.
Куда копать? Может версия SQL не та? Чем вообще можно посмотреть SQL файл?
Просьба в FAQ абстрактно не посылать. Я его уже читал. Лучше дайте конкретную ссылку.
Большое спасибо.
Ошибка обычно в синтаксисе. Узнать ошибку можно с помощью функций mysql_errno() и mysql_error()
SQL-файл смотрится обычным текстовым документом. Для просмотра самой БД используйте что угодно, для этого предназначенное. На PHP, обычно, это phpmyadmin. Можно и через консоль mysql все посмотреть.
Возможно, скрипт вы запустили, а таблице в БД не создали. Или некорректно запрос послали. Вообщем, причин много может быть.
РНР-код в студию
Первая часть кода. 4 ошибки - отметил красным и написал, что выводится
Код:
////////////////////////////////////////
//record time///////////////////////
if ( ($sec<$row['sec'])||($num<5) )
{
echo("<center><p class=\"main_text\"><b>Вы – наш чемпион!/You are the champion!</b></p></center>");
echo("<center><p class=\"main_text\"><b>Ваше время/Your time<br> ");
echo(gettimes($sec));
echo("</b></p></center>");
// создаём ассоциативный массив из старых игроков+ добавляем нового рекордсмена
$query = "SELECT * FROM puzzle".$lev;
$res=mysql_query($query);
$num = mysql_num_rows($res);
$i = -1;
while($row=mysql_fetch_array($res))
{
$i++;
$a[$row['name']] = $row['sec'];
}
$a[$_POST['name']] = $_POST['sec'];
/////////////////////////////////////
// сортируем
asort($a);
////////////////////////////////////
//очищаем старую базу и записываем новую таблицу рекордов
$query = "DELETE FROM puzzle".$lev;
mysql_query($query);
$i =0;
foreach ($a as $key => $value)
{
$i++;
if($i<=5)
{
$query = "INSERT INTO puzzle".$lev." (id, name, sec) VALUES ('".$i."', '".$key."', '".$value. "')";
mysql_query($query);
}
}
///////////////////////////////////
}
////////////////////////////
//не попал в рекордное время
else
{
if ($sec<=60)
{
echo("<center><p class=\"main_text\"><b>Ваше время/Your time<br> ".$sec." сек.</b></p></center>");
}
else
{
$nsec = $sec%60;
$min = ($sec - $nsec)/60;
echo("<center><p class=\"main_text\"><b>Ваше время/Your time<br> ".$min." мин. ".$nsec." сек.</b></p></center>") ;
}
}
}
else
{
$query = "INSERT INTO puzzle".$lev." (id, name, sec) VALUES ('1', '".$name."', '".$sec. "')";
mysql_query($query);
}
echo("<table><tr><td>");
echo("<form action=\"?play=1\" name=\"form1\" method=\"POST\">");
echo("<INPUT TYPE=\"image\" src=\"i/cap.jpg\" onClick=\"form1.submit()\" VALUE=\"Собрать другое изображение\n\rCollect another picture\">");
echo("<INPUT TYPE=\"hidden\" name=\"name\" value=".$name.">");
echo("<INPUT TYPE=\"hidden\" name=\"level\" value=".$lev.">");
echo("</form>");
echo("</td><td>");
echo("<form action=\"index.php\" name=\"form2\" method=\"POST\">");
echo("<INPUT TYPE=\"image\" src=\"i/cp.jpg\" VALUE=\"Изменить параметры игры\n\r Change parameters\" onClick=\"form2.submit()\"></form>");
echo("</td><td>");
echo("<form action=\"?end&rectable=1\" name=\"form3\" method=\"POST\">");
echo("<INPUT TYPE=\"hidden\" name=\"name\" value=".$name.">");
echo("<INPUT TYPE=\"hidden\" name=\"level\" value=".$lev.">");
echo("<INPUT TYPE=\"hidden\" name=\"img_name\" value=pic1.jpg>");
echo("<INPUT TYPE=\"image\" src=\"i/oc.jpg\" VALUE=\"Наши чемпионы\n\rOur champions\" onClick=\"form3.submit()\"></form>");
echo("</td></tr></table>");
}
else
{
echo("<p classs=\"main_text\"><center><b>Our champions!</center></b></p>");
$link=mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_name);
echo("<table width=\"500\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#CCCCCC\" class=\"main_text\">");
echo("<tr height=\"40\"><td align=center>Уровень сложности<br>Level</td><td align=center>Место<br>Place</td><td align=center>Время, имя<br>Time, name</td></tr>");
for($j=1; $j<4; $j++)
{
$query = "SELECT * FROM puzzle".$j;
$res=mysql_query($query);
$num = mysql_num_rows($res);
$i = 0;
while($row=mysql_fetch_array($res))
{
$i++;
if($i==1)
{
if($j==1) $l="4x5";
else
{
if($j==2) $l="5x6";
else $l="6x7";
}
echo("<tr height=\"20\" align=center><td rowspan=\"".$num."\" bgcolor=\"#FFFFFF\" align=center>".$l."</td>");
echo("<td bgcolor=\"#FFFFFF\" align=center> ".$i." </td><td bgcolor=\"#FFFFFF\">".gettimes($row['sec']).", ".$row['name']."</td></tr>");
}
else
{
echo("<tr height=\"20\" align=center><td bgcolor=\"#FFFFFF\" align=center> ".$i." </td><td bgcolor=\"#FFFFFF\">".gettimes($row['sec']).", ".$row['name'] ."</td></tr>");
}
}
echo("<br>");
}
echo("</table>");
echo("<table height=\"90\"><tr height=90><td valign=\"top\">");
echo("<form action=\"?play=1\" name=\"form1\" method=\"POST\">");
echo("<INPUT TYPE=\"hidden\" name=\"name\" value=".$_POST['name'].">");
echo("<INPUT TYPE=\"hidden\" name=\"level\" value=".$_POST['level'].">");
echo("<INPUT TYPE=\"image\" src=\"i/cap.jpg\" onClick=\"form1.submit()\" VALUE=\"Собрать другое изображение\n\rCollect another picture\">");
echo("</td><td valign=\"top\">");
echo("<a href=\"index.php\"><img src=\"i/cp.jpg\" border=\"0\"></a>");
echo("</td></tr></table>");
}
}
?>
<?php
require("footer.inc");
?>
//record time///////////////////////
if ( ($sec<$row['sec'])||($num<5) )
{
echo("<center><p class=\"main_text\"><b>Вы – наш чемпион!/You are the champion!</b></p></center>");
echo("<center><p class=\"main_text\"><b>Ваше время/Your time<br> ");
echo(gettimes($sec));
echo("</b></p></center>");
// создаём ассоциативный массив из старых игроков+ добавляем нового рекордсмена
$query = "SELECT * FROM puzzle".$lev;
$res=mysql_query($query);
$num = mysql_num_rows($res);
$i = -1;
while($row=mysql_fetch_array($res))
{
$i++;
$a[$row['name']] = $row['sec'];
}
$a[$_POST['name']] = $_POST['sec'];
/////////////////////////////////////
// сортируем
asort($a);
////////////////////////////////////
//очищаем старую базу и записываем новую таблицу рекордов
$query = "DELETE FROM puzzle".$lev;
mysql_query($query);
$i =0;
foreach ($a as $key => $value)
{
$i++;
if($i<=5)
{
$query = "INSERT INTO puzzle".$lev." (id, name, sec) VALUES ('".$i."', '".$key."', '".$value. "')";
mysql_query($query);
}
}
///////////////////////////////////
}
////////////////////////////
//не попал в рекордное время
else
{
if ($sec<=60)
{
echo("<center><p class=\"main_text\"><b>Ваше время/Your time<br> ".$sec." сек.</b></p></center>");
}
else
{
$nsec = $sec%60;
$min = ($sec - $nsec)/60;
echo("<center><p class=\"main_text\"><b>Ваше время/Your time<br> ".$min." мин. ".$nsec." сек.</b></p></center>") ;
}
}
}
else
{
$query = "INSERT INTO puzzle".$lev." (id, name, sec) VALUES ('1', '".$name."', '".$sec. "')";
mysql_query($query);
}
echo("<table><tr><td>");
echo("<form action=\"?play=1\" name=\"form1\" method=\"POST\">");
echo("<INPUT TYPE=\"image\" src=\"i/cap.jpg\" onClick=\"form1.submit()\" VALUE=\"Собрать другое изображение\n\rCollect another picture\">");
echo("<INPUT TYPE=\"hidden\" name=\"name\" value=".$name.">");
echo("<INPUT TYPE=\"hidden\" name=\"level\" value=".$lev.">");
echo("</form>");
echo("</td><td>");
echo("<form action=\"index.php\" name=\"form2\" method=\"POST\">");
echo("<INPUT TYPE=\"image\" src=\"i/cp.jpg\" VALUE=\"Изменить параметры игры\n\r Change parameters\" onClick=\"form2.submit()\"></form>");
echo("</td><td>");
echo("<form action=\"?end&rectable=1\" name=\"form3\" method=\"POST\">");
echo("<INPUT TYPE=\"hidden\" name=\"name\" value=".$name.">");
echo("<INPUT TYPE=\"hidden\" name=\"level\" value=".$lev.">");
echo("<INPUT TYPE=\"hidden\" name=\"img_name\" value=pic1.jpg>");
echo("<INPUT TYPE=\"image\" src=\"i/oc.jpg\" VALUE=\"Наши чемпионы\n\rOur champions\" onClick=\"form3.submit()\"></form>");
echo("</td></tr></table>");
}
else
{
echo("<p classs=\"main_text\"><center><b>Our champions!</center></b></p>");
$link=mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_name);
echo("<table width=\"500\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#CCCCCC\" class=\"main_text\">");
echo("<tr height=\"40\"><td align=center>Уровень сложности<br>Level</td><td align=center>Место<br>Place</td><td align=center>Время, имя<br>Time, name</td></tr>");
for($j=1; $j<4; $j++)
{
$query = "SELECT * FROM puzzle".$j;
$res=mysql_query($query);
$num = mysql_num_rows($res);
$i = 0;
while($row=mysql_fetch_array($res))
{
$i++;
if($i==1)
{
if($j==1) $l="4x5";
else
{
if($j==2) $l="5x6";
else $l="6x7";
}
echo("<tr height=\"20\" align=center><td rowspan=\"".$num."\" bgcolor=\"#FFFFFF\" align=center>".$l."</td>");
echo("<td bgcolor=\"#FFFFFF\" align=center> ".$i." </td><td bgcolor=\"#FFFFFF\">".gettimes($row['sec']).", ".$row['name']."</td></tr>");
}
else
{
echo("<tr height=\"20\" align=center><td bgcolor=\"#FFFFFF\" align=center> ".$i." </td><td bgcolor=\"#FFFFFF\">".gettimes($row['sec']).", ".$row['name'] ."</td></tr>");
}
}
echo("<br>");
}
echo("</table>");
echo("<table height=\"90\"><tr height=90><td valign=\"top\">");
echo("<form action=\"?play=1\" name=\"form1\" method=\"POST\">");
echo("<INPUT TYPE=\"hidden\" name=\"name\" value=".$_POST['name'].">");
echo("<INPUT TYPE=\"hidden\" name=\"level\" value=".$_POST['level'].">");
echo("<INPUT TYPE=\"image\" src=\"i/cap.jpg\" onClick=\"form1.submit()\" VALUE=\"Собрать другое изображение\n\rCollect another picture\">");
echo("</td><td valign=\"top\">");
echo("<a href=\"index.php\"><img src=\"i/cp.jpg\" border=\"0\"></a>");
echo("</td></tr></table>");
}
}
?>
<?php
require("footer.inc");
?>
Мой вам совет - нанять другого адекватного программиста, который это все перепишет. Потому что код - УГ. За такой код я бы даже копейки не дал программисту, так как он просто ужасен и разбираться в нем никто не будет хотеть. Легче переписать все с нуля толковому человеку, что я вам и советую.
Цитата:
[COLOR=red]//Тоже ошибка - предполагается наличие объекта[/COLOR]
это вообще ошибка JS
Цитата:
это вообще ошибка JS
Что такое JS? Джава скрипт?
Знатоки Denwer'а, объясните пожалуйста, как сделать следующее:
2. Создаете в БД mysql (которая поставляется с Denwer) базу puzzle,
3. Выполняете в ней скрипт puzzle,
Обнаружил, что есть вот такая папка:
D:\WebServers\usr\local\mysql5\data\puzzle
в ней файл db.opt.
Что предполагается сделать по этому описанию?
Вы правы на счет программиста, но, к сожалению, не мне решать.
Цитата: alenov
Что такое JS? Джава скрипт?
да, javascript. Вы ищете ошибки JS в коде php, при условии, что ошибки JS возникают на уже отданной браузеру странице
UAS вам все верно сказал - наймите программиста.
Всем большое спасибо. Разобрался.
Цитата:
Хватит сношать мозг себе и нам. Ваш уровень знаний по этой теме просто нулевой. Чтобы даже объяснить вам в чем у вас проблема нужно пуститься в длинные объяснения что такое РНР, базы данных, JavaScriptб протокол HTTP и т.д.
UAS вам все верно сказал - наймите программиста.
UAS вам все верно сказал - наймите программиста.
Тем не менее заработало. Еще одной корявой страницей в интернете будет больше.