Page 1 of 1

Išrasų numeravimas nuo db

Posted: 2013 Jan 16 17:11
by V1LKAS
Gal pavadinimas ir nėra tikslus bet pabandysiu paaiškinti ką noriu padaryti:

step 1 - Pradžioj pasimam cliento ip ir surandam jį duomenų bazėj. (mysql_query SELECT ir t.t blal bla)
step 2 - pagal turimą ip pasimam iš db du papildomus parametrus, kurie yra yrašyti toje db
step 3 - pagal naujus du parametrus pasimame dar viena nauja parametrą iš db.
step 4 - atspausdinti tuos parametrus, kur ir susiduriu su problema
Taigi Yra vienas IP tačiau ant to ip yra skirtingi įrašai, pasinaudojant while ciklu noriu atspausdinti visus skirtingus parametrus, tačiau man atspausdiną tik pirmą pagal IP rastą parametrą, tarkim pvz: ip 11.222.11.222 prie jo būtų dvi nick reikšmės "vardas1" "vardas2", tačiau manspausdina tik "vardas1" o sukant ciklą suranda tik num_rows, o reikšmę palieką tokią pat "vardas1", sudarant lentelę būtų ciklas tokių pat įrašų, taigi aš noriu kad atspausdintų tik skirtingus įrašus 'vardas1" vardas2" ir t.t išbandžiau kelis variantus su ORDER BY,fetch_assoc, array_unique, išeitis manau gana paprasta bet užkibo ir niekaip nesusitvarkau.

Re: Išrasų numeravimas nuo db

Posted: 2013 Jan 16 18:16
by psychical
Parodyk tai, ką esi padaręs. DB, tai database, o kokios lentelės?

Re: Išrasų numeravimas nuo db

Posted: 2013 Jan 16 18:55
by TETYYS

Code: Select all

 $q = mysql_query("SELECT ip, nick FROM users WHERE ip = ".$_SERVER['REMOTE_ADDR']);while ($d = mysql_fetch_assoc($q)){echo $d['nick']."\n<br />";} 
?

Re: Išrasų numeravimas nuo db

Posted: 2013 Jan 16 21:48
by V1LKAS

Code: Select all

function xp($id){    include "db_connect.php";         $result = mysql_query("SELECT `player_id` FROM `wc3_player` WHERE `player_ip` = '$ip'") or die(mysql_error());    $row = mysql_fetch_array($result, MYSQL_ASSOC);  if(!$row){        echo $ok .= "Error! Player not found. $ip";        exit;    }        $id = $row['player_id'];     $result2 = mysql_query("SELECT  `race_id`, `race_xp` FROM `wc3_player_race` WHERE `player_id` = '$id'") or die(mysql_error());        $row2 = mysql_fetch_array($result2); echo "<br><table border='1'></td></tr><tr><td>XP</td><td>ID</td></tr>"; while ( $row2 = mysql_fetch_assoc($result2) ) {echo "<tr><td>$row2[race_xp]</td><td>$row2[race_id]</td></tr>"; } echo "</table>"; }
Kodas būtų toks, naudoju būtent tokį pat metodą kaip TETYYS minėjo, rodos gramatika ir gera, bet vistiek nesuprantu kodėl nespausdina.

Re: Išrasų numeravimas nuo db

Posted: 2013 Jan 16 22:25
by aaarnas
Jei jau su SQL dirbat, tai bent jau tokį dalyką, kaip JOIN reikėtų išmokti...

Code: Select all

function xp($id){    include "db_connect.php";     $result = mysql_query("SELECT r.`race_id`, r.`race_xp` FROM `wc3_player` AS p JOIN `wc3_player_race` AS r ON p.race_id=r.race_id  WHERE p.`player_ip` = '".$ip."'") or die(mysql_error());     if(!mysql_num_rows($result)) {        echo $ok." Error! Player not found. $ip";        exit;    }    echo "<br><table border='1'></td></tr><tr><td>XP</td><td>ID</td></tr>"; while ( $row = mysql_fetch_assoc($result) ) {echo "<tr><td>".$row[race_xp]."</td><td>".$row[race_id]."</td></tr>"; } echo "</table>"; }
Šiaip visada debugink. Įsivesk sql užklausą suformatuota į ekraną ir tada paleisk sql serveryje. Matysi ką gražina, kokios klaidos ir tt.
Galima pvz daryti:
print_r($row);
ir tau atspausdins visą masyvą $row

Be to, nevisada gerai yra kintamąjį dėti į string. Geriau jungti per .
Su kai kuriomis kabutėmis ar kada ten būna nedirba.
Testuokis ir rasi kame bėdos.

Re: Išrasų numeravimas nuo db

Posted: 2013 Jan 16 23:14
by V1LKAS
Esmė tame kad norėjau be Join apsieiti kadangi ne itin geros žinios, jungiant column, bet tavo parašytas variantas tiko, pasitaisiau kiek reikėjo ir viskas ok, be to žinoma dirbu ekrane + serverio logai, zdž dėkui už pagalbą :)