Jump to content
php.lv forumi
Wuu

Mysql query

Recommended Posts

mysql_query('use '.$db_name.';');
$result = mysql_query('select type from map where X = '.$_GET['x'].' && Y = '.$_GET['y'].' limit 1;');
$r = mysql_fetch_array($result);
if (!empty($r[0])) {
switch ($r[0]):
 case 'grass':echo '<a href="#" onclick="ajax_loadContent(\''.$_GET['x'].','.$_GET['y'].'\',\'mapterrain.php?x='.$_GET['x'].'&y='.$_GET['y'].'&flip=1\');return false"><img src=\'style/terrain/grass.gif\'></a>'; break;
endswitch;	  
	} else {
	 mysql_query('insert into map values('.$_GET['x'].','.$_GET['y'].', "grass", null, 0);');
	}

Kaut ka lietoju šitādus murgus man jau zb! Nav tur tanī php līdz galam kaut kas izdomāts!

 

Ko man vajag ir apmēram šis

 

$result = mysql_query('select type from map where X = '.$_GET['x'].' && Y = '.$_GET['y'].' limit 1;');

if type nav tukš {

 

}

 

Ka to izdarīt ātrākajā veidā ? Bez nekādiem mysql_fetch_array un citas šņagas! Un tā lai nebūtu errori notice un citas figņu! Kāpēc kaut kāda bernu spēļu serveri mysql ir uztaisīts normālā valodā ,bet php ir šitā liekā figņas... uhh ^_^

Share this post


Link to post
Share on other sites

Nevis php "kautkas nav izdomāts", bet gan tu pats savā kodā neesi kautko izdomājis līdz galam:

 

mysql_query("use $db_name");
$x = mysql_real_escape_string($_GET['x']);
$y = mysql_real_escape_string($_GET['y']);
$result = mysql_query("select type from map where X = '$x' and Y = '$y' limit 1');
if ($r = mysql_fetch_array($result))
{
if ($r[0] == "grass")
{
	echo "<a href blabla...";
}
}
else
{
mysql_query("insert into map values('$x', '$y', 'grass', null, 0)");
}

Vēl tikai pirms tam vajag pārbaudīt vai isset($_GET['x']) (arī ar 'y') un attiecīgi kautkādu defaulto vērtību iebāzt (vai arī neizpildīt šo kodu)

Un izdomā lūdzams topikam sakarīgāku nosaukumu, citādi sagaidīsi vienvirziena ceļu uz Drazu...

Share this post


Link to post
Share on other sites
if ($r = mysql_fetch_array($result))

 

Tas nozime ka tur jau ir parbaude isempty? Hmm.. ko tur prasit jaizmegina sadu panemienu nebiju redzejis...

Tik un ta uzkatu ka php ir biki parmurgots es daudzam lietam redzu labakus coda risinajumus!

 

p.s. nav garumzimes :D

Share this post


Link to post
Share on other sites
Tas nozime ka tur jau ir parbaude isempty?

Nē, ne gluži. Ar isempty tur nav nekāda sakara (kas vispār ir isempty?)

Kods:

if (xxx)

ir ekvivalents kodam:

if (!!(xxx))

 

lai arī kas būtu xxx vietā.

Ja mysql_fetch_array atgriež NULL (respektīvi selekts nav izselektējis nevienu rindu), tad !!NULL būs vienāds ar false, un if zars neizpildīsies.

 

Bet tiešām - padalies ar tiem "labākiem risinājumiem".

Share this post


Link to post
Share on other sites

scp loop

[function web_market_transfer_items]
db.query "select itemuid,buyuid from sphere_market where not isnull(buyuid)"
for r 0 <eval <db.row.numrows>-1>
 if <db.row.numrows>
  uid.<db.row.<dlocal.r>.0>.cont = <uid.<db.row.<dlocal.r>.1>.findlayer.29.uid>
  uid.<db.row.<dlocal.r>.1>.sysmessage <uid.<db.row.<dlocal.r>.0>.name> delivered.
 endif	
end
db.query "delete from sphere_market where not isnull(buyuid)"

 

scp query 1 parametram

db.query "select itemuid from sphere_market where not isnull(buyuid) limit 1"
<db.row.0.0>

 

un viss nekadu lieku figņu! :) <db.row.0.0> ir rezultāts!

Edited by Wuu

Share this post


Link to post
Share on other sites

Nu tikpat labi jau php arī kverija rezultāta pirmās rindas pirmo lauku (ja to dara tavs <db.row.0.0>) var dabūt ar vienu fjas izsaukumu:

$res = mysql_query("SELECT blabla");
echo mysql_result($res, 0, 0);

un nekādu lieku figņu!

 

Ja godīgi, tad es neredzu, ar ko tavs piemērs ir labāks par prastu php funkciju mysql_query, fetch_row, un tml izsaukšanu (ja nu vienīgi sintaksē ietaupās daži baiti). Idejiski tieši tas pats notiek.

Share this post


Link to post
Share on other sites

C'mon precīzi gandrīz tas pats, tikai sintakse cita. Pat sarežģītāk (imo).

 

Man tagad jautājums - ja tev vajadzētu iekš tā if'a izpildīt katru reizi vēl kādu citu kveriju ?

Share this post


Link to post
Share on other sites

comon php dod errorus visu laiku ,bes empty neiztikt!

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/newweb/mapterrain.php on line 11

if ($r = mysql_fetch_array($result))

 

Rrrrr...

 

lai butu viss ciki briki un vienu parametru dabūtu ārā kodam jaizkatās šādi!

 

$result = mysql_query('select type from map where X = '.$_GET['x'].' && Y = '.$_GET['y'].' limit 1;');
if (!empty($result)){
$r = mysql_fetch_array($result);
 if (!empty($r[0])) {
 echo '<a href="#... 
} else {
mysql_query('insert into map values('.$_GET['x'].','.$_GET['y'].', "ocean", null, 0);');
} 
} else {
mysql_query('insert into map values('.$_GET['x'].','.$_GET['y'].', "ocean", null, 0);');
}

 

Divreiz emty parbaude WTF!

Edited by Wuu

Share this post


Link to post
Share on other sites

Ja kodā ir kļūda, tad protams, ka rādīs kļūdu.

 

Uztaisi echo mysql_error() pēc mysql_query(), tad redzēsi, kur kļūda.

Share this post


Link to post
Share on other sites
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/newweb/mapterrain.php on line 11

Doh.. Šī rindiņa nozīmē tikai to, ka php tev saka, ka tu padot invalīdu handli fetch_array funkcijai. Invalīds handlis rodas tāpēc, ka tavis uzrakstītajā SQL kverijā ir kļūda, tāpēc tas nav izpildīts.

PHP tur neko nevar padarīt, ka nemāki SQL kverijus korektus uzraktīt ;)

A kur SQL kverijā ir kļūda, to jau tev andrisp pateica kā noskaidrot.

 

Iesācējam mysql kverijus ir vislabāk rakstīt šādā formā:

$result = mysql_query("...") or die(mysql_error());

Tad uzreiz redzēsi, ka un kāda ir kļūda.

Share this post


Link to post
Share on other sites

nav tur kļūdas kods strādā!

Met āra kļūdu kad $result ir tukš! Un jūs ieteiktais ifs... Ja pirms tam pārbauda ar empty viss ir ok!

if ($r = mysql_fetch_array($result))

Edited by Wuu

Share this post


Link to post
Share on other sites

Wuu, piedod, bet tu laikam esi idiots, ja saki, ka tur nav kļūda, kaut acīm redzami tur ir kļūda. Pats taču vēl tikko rādīji:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/newweb/mapterrain.php on line 11

Share this post


Link to post
Share on other sites

Wuu: empty jau tieši tev pārbauda - vai nav kļūda, un ja nav, tikai tad tu izpildi mysql_fetch_array.

Tāpēc - protams, ka bez empty tas fetch_array izmetīs to Warningu - tāpēc, ka tev ir kļūda kverijā.

Uzliec to mysql_error() izvadīšanu, pats redzēsi skaidri un gaiši.

 

Varbūt tev der pamācīties php pamatus kādā iesācēju tutoriālī, citādi izskatās, ka tu nezini, ko pats tur dari.

Share this post


Link to post
Share on other sites

×
×
  • Create New...