Jump to content
php.lv forumi

Mysql query


Wuu

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 ^_^

Link to comment
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...

Link to comment
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

Link to comment
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".

Link to comment
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
Link to comment
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.

Link to comment
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
Link to comment
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.

Link to comment
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.

Link to comment
Share on other sites

×
×
  • Create New...