Autor Zpráva
alan
Profil *
ahoj,tak zase píšu:D
mám php script,který má za ukol vypsat z databáze jmeno,rasu,prostě to co tam je,to se dozvíte tady dole.
mno,a píše mě to chybu...
Parse error: syntax error, unexpected ',' in /var/www/sub/l2/page/toppvp.php on line 16


ten script vypadá takto
<?php 

function connect() 
{ 
include "configs/script_config.php";
}


$query_chars = "select char_name,pvpkills,clanid from characters WHERE accesslevel=0 AND pvpkills >= 1 order by pvpkills desc limit 100;"; 

echo '
<center>..:: TOP PK ::..</center>
';

echo "<table><thead><tr><th>Place</th><th>Face</th><th><center>Nick</center></th><th>Level</th><th> <center>Proffesion</center></th><th><center>Clan</center></th><th>Pvp/PK</th><th><center>Time in Game</center></th><th>Status</th><tr></thead>\n";

  $query = ("SELECT clan_id,clan_name FROM clan_data", $link)
    or die ("Error: ".mysql_error());
  while ($row2=mysql_fetch_row($result2))
    $clans_array[$row2[0]]=$row2[1];
  $clans_array[0]="";
$n=1;
while ($top=mysql_fetch_array($data))
{
   $onlinetimeH=round(($top[onlinetime]/60/60)-0.5);
   $onlinetimeM=round(((($top[onlinetime]/60/60)-$onlinetimeH)*60)-0.5);
   $clan=mysql_fetch_array(mysql_query("select * from clan_data where clan_id=$top[clanid]"));
   if ($clan[clan_name]=='') { $clan[clan_name]="No Clan"; }
   if ($top['sex']==0) { $name='<font color=#8080FF>'.$top[char_name].'</font>'; } else { $name='<font color=#FF8080>'.$top[char_name].'</font>'; }
   $class=mysql_fetch_array(mysql_query("select ClassName from char_templates where ClassId=$top[classid]"));
   if (($top['sex']==0) && ($top['race']==4)) { $img='./face/dwarf_male.gif'; }
   if (($top['sex']==1) && ($top['race']==4)) { $img='./face/dwarf_female.gif'; }
   if (($top['sex']==0) && ($top['race']==2)) { $img='./face/darkelf_male.gif'; }
   if (($top['sex']==1) && ($top['race']==2)) { $img='./face/darkelf_female.gif'; }
   if (($top['sex']==0) && ($top['race']==0)) { $img='./face/human_male.gif'; }
   if (($top['sex']==1) && ($top['race']==0)) { $img='./face/human_female.gif'; }
   if (($top['sex']==0) && ($top['race']==1)) { $img='./face/elf_male.gif'; }
   if (($top['sex']==1) && ($top['race']==1)) { $img='./face/elf_female.gif'; }
   if (($top['sex']==0) && ($top['race']==3)) { $img='./face/orc_male.gif'; }
   if (($top['sex']==1) && ($top['race']==3)) { $img='./face/orc_female.gif'; }
   if ($top['online']==1) {$online='<font color=green>Online</font>'; } 
   else {$online='<font color=red>Offline</font>'; } 
   echo "<tr><td><center>$n</center></td><td><img src='$img'></td><td> $name</td><td><center> $top[level]</center></td><td><center>$class[ClassName]</center></td><td><center><a href=index.php?d=module&p=clantop>$clan[clan_name][/url]</center> </td><td><center>$top[pvpkills]/<font color=red>$top[pkkills]</font></center></td><td><center>$onlinetimeH Hours $onlinetimeM min.</center></td><td>$online</td></tr>\n";
   $n++;
}

echo '</table>';
?>


tudíž,chyba vypadá takto:
$query = ("SELECT clan_id,clan_name FROM clan_data", $link)

zkoušel jsem místo query dát i $result2 = mysql_query
ale nejde..
jinac db mám takovou..

<?php

    $db_user = "root"; 
    $db_pass = "pass"; 
    $db_name = "l2jdb"; 
    $db_serv = "host"; 

    $res = mysql_connect ( $db_serv, $db_user, $db_pass ) or die ("Nepripoji se do databaze: [$db_serv]"); 
    $resdb = mysql_select_db ( "$db_name",$res ); 

    return $res; 

?>

nevíte kde mám chybu?
Keeehi
Profil
$query = "SELECT clan_id,clan_name FROM clan_data";
$vysledek = mysql_query($query,$link);

Co třeba nějak takto?
PostCC
Profil
Nejspíš to bude tím, že na tom řádku chybí nějaká funkce. Například MYSQL_QUERY, ve finále tedy:

$query = mysql_query("SELECT clan_id,clan_name FROM clan_data", $link) or die ("Error: ".mysql_error());
alan
Profil *
nejde ani jedno,
u Keeehi to píše:
Parse error: syntax error, unexpected T_LOGICAL_OR in /var/www/sub/l2/page/toppvpll.php on line 18


a u PostCC to píše:
Parse error: syntax error, unexpected T_LOGICAL_OR in /var/www/sub/l2/page/toppvpll.php on line 17


takže furt samá chyba,
$query = ("SELECT clan_id,clan_name FROM clan_data", $link) 
PostCC
Profil
Dobře, znovu a pomaleji. Toto celé:

$query = ("SELECT clan_id,clan_name FROM clan_data", $link)
    or die ("Error: ".mysql_error());


nahraďte tímto:

$query = mysql_query("SELECT clan_id,clan_name FROM clan_data", $link) or die ("Error: ".mysql_error());
alan
Profil *
ok,tak změna, ted mě to napsalo:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /var/www/sub/l2/page/toppvpll.php on line 16
Error:

což v php je to cosme upravily...toto
$query = mysql_query("SELECT clan_id,clan_name FROM clan_data", $link) or die ("Error: ".mysql_error());


http://l2.k3s4.sk/page/toppvpll.php
Keeehi
Profil
$link zaměň za $res
Medvídek
Profil
$query = ("SELECT clan_id,clan_name FROM clan_data", $link) 
nemáš středník.
PostCC
Profil
Mám doplňující dotazy - odkud se berou proměnné $link, $result2 a $data? Buď nám tu neukazujete podstatný kód, nebo jde o balast, slepený z různě nalezených kousků scriptů bez vědomí o jejich funkcionalitě.
alan
Profil *
Keeehi:
pořád nic..změnil jsem to na res a nejde to,hlasi to tu samou chybu
Keeehi
Profil
A máte na začátku toho scriptu toto?
$db_user = "root"; 
$db_pass = "pass"; 
$db_name = "l2jdb"; 
$db_serv = "host"; 

$res = mysql_connect ( $db_serv, $db_user, $db_pass ) or die ("Nepripoji se do databaze: [$db_serv]"); 
$resdb = mysql_select_db ( "$db_name",$res );

jinak v prvním příspěvku za tím máte ještě return $res; což tam být nemá, pokud to není uvnitř funkce. Pokud to je uvnitř funkce, zavolal jste tuto funkci na začátku.

pokud to stále nepůjde, zkuste $query = mysql_query("SELECT clan_id,clan_name FROM clan_data") or die ("Error: ".mysql_error()); - je tam vynechán 2. parametr protože je nepovinný.
alan
Profil *
tak,skusil jsem oboje a furt nejde,
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/sub/l2/page/toppvpll.php on line 20

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sub/l2/page/toppvpll.php on line 24

což je:
chyba na 20 řádku:
while ($row2=mysql_fetch_row($result2))

a 24:
while ($top=mysql_fetch_array($data))
Keeehi
Profil
alan:
Dej sem i kus kódu okolo. Hlavně tu část kde je $result2=mysql_query(…); a $data=mysql_query(…);
alan
Profil *
<?php 
$query_chars = "select char_name,pvpkills,clanid from characters WHERE accesslevel=0 AND pvpkills >= 1 order by pvpkills desc limit 100;"; 

echo '<br><center><b>..:: TOP PK ::..</b></center><br><hr>';

echo "<table><thead><tr><th>Place</th><th>Face</th><th><center>Nick</center></th><th>Level</th><th> <center>Proffesion</center></th><th><center>Clan</center></th><th>Pvp/PK</th><th><center>Time in Game</center></th><th>Status</th><tr></thead>\n";

$query = mysql_query("SELECT clan_id,clan_name FROM clan_data") or die ("Error: ".mysql_error());
  while ($row2=mysql_fetch_row($result2))
    $clans_array[$row2[0]]=$row2[1];
  $clans_array[0]="";
$n=1;
while ($top=mysql_fetch_array($data))
{
....
Medvídek
Profil
alan:
Pořád si nenapsal, kde se bere
$row2=mysql_fetch_row($result2)

a
$top=mysql_fetch_array($data)
alan
Profil *
dám sem celej script...
<?php 

    $db_user = "root"; 
    $db_pass = "heslo"; 
    $db_name = "l2jdb"; 
    $db_serv = "host"; 

$res = mysql_connect ( $db_serv, $db_user, $db_pass ) or die ("Nepripoji se do databaze: [$db_serv]"); 
$resdb = mysql_select_db ( "$db_name",$res );
?>
<?php 
$query_chars = "select char_name,pvpkills,clanid from characters WHERE accesslevel=0 AND pvpkills >= 1 order by pvpkills desc limit 100;"; 

echo '<br><center><b>..:: TOP PK ::..</b></center><br><hr>';

echo "<table><thead><tr><th>Place</th><th>Face</th><th><center>Nick</center></th><th>Level</th><th> <center>Proffesion</center></th><th><center>Clan</center></th><th>Pvp/PK</th><th><center>Time in Game</center></th><th>Status</th><tr></thead>\n";

$query = mysql_query("SELECT clan_id,clan_name FROM clan_data") or die ("Error: ".mysql_error());
  while ($row2=mysql_fetch_row($result2))
    $clans_array[$row2[0]]=$row2[1];
  $clans_array[0]="";
$n=1;
while ($top=mysql_fetch_array($data))
{
	$onlinetimeH=round(($top[onlinetime]/60/60)-0.5);
	$onlinetimeM=round(((($top[onlinetime]/60/60)-$onlinetimeH)*60)-0.5);
	$clan=mysql_fetch_array(mysql_query("select * from clan_data where clan_id=$top[clanid]"));
	if ($clan[clan_name]=='') { $clan[clan_name]="No Clan"; }
	if ($top['sex']==0) { $name='<font color=#8080FF>'.$top[char_name].'</font>'; } else { $name='<font color=#FF8080>'.$top[char_name].'</font>'; }
	$class=mysql_fetch_array(mysql_query("select ClassName from char_templates where ClassId=$top[classid]"));
	if (($top['sex']==0) && ($top['race']==4)) { $img='./face/dwarf_male.gif'; }
	if (($top['sex']==1) && ($top['race']==4)) { $img='./face/dwarf_female.gif'; }
	if (($top['sex']==0) && ($top['race']==2)) { $img='./face/darkelf_male.gif'; }
	if (($top['sex']==1) && ($top['race']==2)) { $img='./face/darkelf_female.gif'; }
	if (($top['sex']==0) && ($top['race']==0)) { $img='./face/human_male.gif'; }
	if (($top['sex']==1) && ($top['race']==0)) { $img='./face/human_female.gif'; }
	if (($top['sex']==0) && ($top['race']==1)) { $img='./face/elf_male.gif'; }
	if (($top['sex']==1) && ($top['race']==1)) { $img='./face/elf_female.gif'; }
	if (($top['sex']==0) && ($top['race']==3)) { $img='./face/orc_male.gif'; }
	if (($top['sex']==1) && ($top['race']==3)) { $img='./face/orc_female.gif'; }
	if ($top['online']==1) {$online='<font color=green>Online</font>'; } 
	else {$online='<font color=red>Offline</font>'; } 
	echo "<tr><td><b><center>$n</center></b></td><td><img src='$img'></td><td> $name</td><td><center> $top[level]</center></td><td><center>$class[ClassName]</center></td><td><center><a href=index.php?d=module&p=clantop>$clan[clan_name]</a></center> </td><td><center><b>$top[pvpkills]</b>/<b><font color=red>$top[pkkills]</font></b></center></td><td><center>$onlinetimeH Hours $onlinetimeM min.</center></td><td>$online</td></tr>\n";
	$n++;
}

echo '</table>';
?>
Keeehi
Profil
Medvídek:
Ono to bude tím, že je tam prostě asi nemá, proto jsem je po něm také chtěl.

alan:
obecně kód pro vytažení dat z databáze může vypadat třeba takto:

$link = mysql_connect ("host","root","pass") or die ("Nepripoji se do databaze:"); 
mysql_select_db ("l2jdb",$link);

$dotaz = "SELECT * FROM taulka;"; // v proměnné $dotaz je teď dotaz, je to však jenom řetězec, takže se zatím nic neděje
$vysledek = mysql_query($dotaz,$link); //tímto jsme se mysql dotázali dotazem, který byl uložený v proměnné $dotaz a mysql nám "vrátila" výsledek.

//teď je data potřeba nějak vydolovat
//způsob č. 1

$radek = mysql_fetch_row($vysledek);
echo "první sloupec: ".$radek[0]." druhý sloupec: ".$radek[1]."<br>\n"; // první řádek výsledku
$radek = mysql_fetch_row($vysledek);
echo "první sloupec: ".$radek[0]." druhý sloupec: ".$radek[1]."<br>\n"; // druhý řádek výsledku

//způsob č. 2

$radek = mysql_fetch_assoc($vysledek);
echo "první sloupec: ".$radek["jmeno_prvniho_sloupce"]." druhý sloupec: ".$radek[jmeno_druheho_sloupce]."<br>\n"; // první řádek výsledku
$radek = mysql_fetch_row($vysledek);
echo "první sloupec: ".$radek[jmeno_prvniho_sloupce]." druhý sloupec: ".$radek[jmeno_druheho_sloupce]."<br>\n"; // druhý řádek výsledku

//způsob č. 3

while($radek = mysql_fetch_row($vysledek)){
  echo "první sloupec: ".$radek[0]." druhý sloupec: ".$radek[1]."<br>\n"; // je to jako způsob č.1, jen je to zapsáno v cyklu
}

//způsob č. 4

while(list($sloupec1,$sloupec2)=mysql_fetch_row($vysledek)){
  echo "první sloupec: $sloupec1 druhý sloupec: $sloupec2<br>\n"; // vylepšený způsob č. 2 - proměnné jsou "krásně" pojmenované 
}

Sledujte proměnné $link, $dotaz a $vysledek kde se objevují.
alan
Profil *
no,tak nějak jsem to předělal,zjistil jsem že jsem měl mít místo query ten data..:D
mno,jinač,tedka to píše že mám chybu jako toto...
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sub/l2/page/toppvpll.php on line 15
Takže chyba je:
while ($top=mysql_fetch_array($data))

dám vám sem celej script...

<?php 
$data = mysql_query("SELECT * FROM characters WHERE $where AND accesslevel<50 AND pkkills>0 ORDER BY  pkkills DESC LIMIT $top");

echo "<table><thead><tr><th>Place</th><th>Face</th><th><center>Nick</center></th><th>Level</th><th> <center>Proffesion</center></th><th><center>Clan</center></th><th>Pvp/PK</th><th><center>Time in Game</center></th><th>Status</th><tr></thead>\n";

$result2 = mysql_query("SELECT clan_id,clan_name FROM clan_data", $link) or die ("Error: ".mysql_error());
  while ($row2=mysql_fetch_row($result2))
    $clans_array[$row2[0]]=$row2[1];
  $clans_array[0]="";
$n=1;
while ($top=mysql_fetch_array($data))
{
	$onlinetimeH=round(($top[onlinetime]/60/60)-0.5);
	$onlinetimeM=round(((($top[onlinetime]/60/60)-$onlinetimeH)*60)-0.5);
	$clan=mysql_fetch_array(mysql_query("select * from clan_data where clan_id=$top[clanid]"));
	if ($clan[clan_name]=='') { $clan[clan_name]="No Clan"; }
	if ($top['sex']==0) { $name='<font color=#8080FF>'.$top[char_name].'</font>'; } else { $name='<font color=#FF8080>'.$top[char_name].'</font>'; }
	$class=mysql_fetch_array(mysql_query("select ClassName from char_templates where ClassId=$top[classid]"));
	if (($top['sex']==0) && ($top['race']==4)) { $img='./face/dwarf_male.gif'; }
	if (($top['sex']==1) && ($top['race']==4)) { $img='./face/dwarf_female.gif'; }
	if (($top['sex']==0) && ($top['race']==2)) { $img='./face/darkelf_male.gif'; }
	if (($top['sex']==1) && ($top['race']==2)) { $img='./face/darkelf_female.gif'; }
	if (($top['sex']==0) && ($top['race']==0)) { $img='./face/human_male.gif'; }
	if (($top['sex']==1) && ($top['race']==0)) { $img='./face/human_female.gif'; }
	if (($top['sex']==0) && ($top['race']==1)) { $img='./face/elf_male.gif'; }
	if (($top['sex']==1) && ($top['race']==1)) { $img='./face/elf_female.gif'; }
	if (($top['sex']==0) && ($top['race']==3)) { $img='./face/orc_male.gif'; }
	if (($top['sex']==1) && ($top['race']==3)) { $img='./face/orc_female.gif'; }
	if ($top['online']==1) {$online='<font color=green>Online</font>'; } 
	else {$online='<font color=red>Offline</font>'; } 
	echo "<tr><td><b><center>$n</center></b></td><td><img src='$img'></td><td> $name</td><td><center> $top[level]</center></td><td><center>$class[ClassName]</center></td><td><center><a href=index.php?d=module&p=clantop>$clan[clan_name]</a></center> </td><td><center><b>$top[pvpkills]</b>/<b><font color=red>$top[pkkills]</font></b></center></td><td><center>$onlinetimeH Hours $onlinetimeM min.</center></td><td>$online</td></tr>\n";
	$n++;
}

echo '</table>';
?>
tiso
Profil
alan: btw. miesto
   if (($top['sex']==0) && ($top['race']==4)) { $img='./face/dwarf_male.gif'; }
   if (($top['sex']==1) && ($top['race']==4)) { $img='./face/dwarf_female.gif'; }
   if (($top['sex']==0) && ($top['race']==2)) { $img='./face/darkelf_male.gif'; }
   if (($top['sex']==1) && ($top['race']==2)) { $img='./face/darkelf_female.gif'; }
   if (($top['sex']==0) && ($top['race']==0)) { $img='./face/human_male.gif'; }
   if (($top['sex']==1) && ($top['race']==0)) { $img='./face/human_female.gif'; }
   if (($top['sex']==0) && ($top['race']==1)) { $img='./face/elf_male.gif'; }
   if (($top['sex']==1) && ($top['race']==1)) { $img='./face/elf_female.gif'; }
   if (($top['sex']==0) && ($top['race']==3)) { $img='./face/orc_male.gif'; }
   if (($top['sex']==1) && ($top['race']==3)) { $img='./face/orc_female.gif'; }
použi niečo takéto:
$races=array('human', 'elf', 'darkelf', 'orc', 'dwarf');
$genders=array('male', 'female');
$img='./face/'.$races[$top['race']].'_'.$genders[$top['sex']].'.gif';
PostCC
Profil
Několik poznámek:

1) To, že je druhý parametr u funkce MySQL_Query() nepovinný nic neznamená. Pracujete-li v rámci jednoho scriptu s více připojeními, je uvádění tohoto parametru dost zásadní, proto vřele doporučuji jej důsledně uvádět vždy.
2) Proč přiřazujete výsledek funkce mysql_select_db ( "$db_name",$res ); do proměnné $resdb, když s ní nadále nijak nepracujete?
3) Proč je řetězcová proměnná $db_name ve výše citované příkazu obalena uvozovkami? Doporučuji celý řádek nahradit: MySql_Select_Db($db_name, $res) OR Die("Nelze zvolit databázi: [$db_name]");
4) Kde se bere proměnná $data?
5) Pracujete-li dále s proměnnou data způsobem $top=mysql_fetch_array($data), předpokládám, že jde o o datový typ "mysql result". Co v tom případě znamená $top[onlinetime]? onlinetime je konstanta? Věřím, že nikoli, v takovém případě jste zřejmě měl na mysli $top["onlinetime"].
6) Ten blok rozhodování je nepochybně mnohem praktičtější zapsat např. jako v řešení tiso.
7) Pro každý průchod cyklem while ($top=mysql_fetch_array($data)) spouštíte samostatný příkaz MySql $clan=mysql_fetch_array(mysql_query("select * from clan_data where clan_id=$top[clanid]")); (kde opět chybí druhý parametr funkce MySql_Query). Snadno tak můžete každým spuštěním scriptu vygenerovat stovky nebo i tisíce dotazů do databáze - není úspornější a rychlejší dotazovat se jedním JOIN selectem pouze na data, která vás zajímají a se kterými potřebujete dále pracovat?
tiso
Profil
PostCC: 4) - riadok 2
PostCC
Profil
tiso: Jo, díky, už jsem se k tomu taky dopracoval :-) V tom balastu je těžké se orientovat :-(
alan
Profil *
tiso:
já to tak ale nemůžu napsal,jelikož v databázi nikde nemáš ork,elf,human... nebo male,female...tam to je všechno v číslech..
jinač furt to nejde a hlásí to chybu na toto:
while ($top=mysql_fetch_array($data))

já už fakt nevím:d
tiso
Profil
alan: „já to tak ale nemůžu napsal,jelikož v databázi nikde nemáš…
A skúšal si vymeniť tých 10 riadkov za tie moje 3? Chová sa to rovnako!

já už fakt nevím:d
Tak prenechaj programovanie hry niekomu inému, je to náročné, nemáš na to.
alan
Profil *
tiso:
zkoušel jsem to předělat a nic...
tiso
Profil
alan: nj, najskôr musíš odstrániť tú chybu, aby ti to vôbec išlo…
AM_
Profil
alan:
kup si knihy, najdi si tutoriály nebo si zaplať nějaký kurz... programovat se nedá tak, že někde okoukáš pár příkazů, ty pak složíš dohromady, zkopíruješ chybu, pošleš ji na fórum a odborníci starejte se.
K programování je potřeba:
- chápat obecné principy (jak funguje strukturované programování, přibližné ponětí o práci procesoru a paměti)
- znát syntaxi a základní struktury nějakého jazyka (zde zřejmě PHP)
- téměř nevyhnutelně umět anglicky alespoň na té úrovni, abys se slovníkem porozuměl psanému textu

Pokud ti chybí více než jeden z výše uvedených bodů, raději zapomeň na programování hry a využij svůj čas k doplnění znalostí, v konečném důsledku tvá hra nakonec třeba dosáhne nějaké kvality a celkově nad tím strávíš třetinu času, než takhle metodou pokusů, omylů a diskusních fór.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0