Azer help

Indította K3nNy, 2012 december 20, 08:33:50 DÉLUTÁN

Előző téma - Következő téma

K3nNy

Sziasztok!
Lenne egy olyan kérdésem, hogy ezeket hogyan tudnám átszerkeszteni:

Kód (php) Kijelölés
    //Get Info By Query
    $account_info = $query("SELECT id, username, email, joindate, locked, last_ip, expansion, acp, vp, dp FROM $db_a.account WHERE username='$login'")or die(mysql_error());
    while($get = $array($account_info))


Ebből a sorból a "dp" kellene másik helyről hivatkoztatni
mégpedig egy másik adatbázisból ami xxxyyy_www az adatbázis neve, tábla: sms_kredit  | sor: credit


Itt szintén ugyan ez
Kód (php) Kijelölés
        //Get Account Data
        $accounts = $query("SELECT username, email, vp, dp FROM $db_a.account WHERE username='$login'")or die(mysql_error());


Keresgéltem rá google-be segítséget, de nem találtam rá megoldást :S
Előre is köszönöm szépen a segítséget!

NevemSenki

#1
Nem biztos, de az első szerintem valami ilyesmi lenne:

Adott ez:

Kód (php) Kijelölés
  //Get Info By Query
    $account_info = $query("SELECT id, username, email, joindate, locked, last_ip, expansion, acp, vp, dp FROM $db_a.account WHERE username='$login'")or die(mysql_error());
    while($get = $array($account_info)


Na most ez marhára nem biztos hogy jó, de én valahogy így tudom elképzelni. Mivel így gőzünk sincs hogy mi van a kiemelt kód után, így hát nem sok variációs lehetőség van. Ezt fejből írom, és valahol ott lenne a lényeg, hogy két külön tábla értékeit egy tömbbe zárjuk. Majd úgy fusson végig a ciklus.
De itt inkább Zerus-t kéne megkérdezni, ő ehhez jobban ért, én még nem találkoztam ilyen hibával.


Kód (php) Kijelölés
    $account_info = $query("SELECT id, username, email, joindate, locked, last_ip, expansion, acp, vp, FROM $db_a.account WHERE username='$login'")or die(mysql_error());
$account_info_array = mysql_fetch_array($account_info);

mysql_select_db('xxxyyy_www');
$account_info_2 = $query("SELECT credit FROM sms_kredit")or die (mysql_error());
$account_info_array_2 = mysql_fetch_array($account_info_2);


$array = array(
$get['id'] => $account_info_array['id'],
$get['username'] => $account_info_array['username'],
$get['email'] => $account_info_array['email'],
$get['joindate'] => $account_info_array['joindate'],
$get['locked'] => $account_info_array['locked'],
$get['last_ip'] => $account_info_array['last_ip'],
$get['expasion'] => $account_info_array['expasion'],
$get['acp'] => $account_info_array['acp'],
$get['vp'] => $account_info_array['vp'],

$get['dp'] => $account_info_array_2['credit']
);

while($get = $array)


Több mint valószínű hogy így nem lesz jó, mert előtte végig kéne lépkedni ciklussal a két létrehozott tömbön, vagy pedig valahogy így:

Kód (php) Kijelölés
    $account_info = $query("SELECT id, username, email, joindate, locked, last_ip, expansion, acp, vp, dp FROM $db_a.account WHERE username='$login'")or die(mysql_error());
mysql_select_db('xxxyyy_www');
$account_info_2 = $query("SELECT credit FROM sms_kredit")or die (mysql_error());

    while($get = $array($account_info) and $get = $array($account_info_2))


Alapból már azt sem értem, hogy ez mi:
Kód (php) Kijelölés
while($get = $array($account_info)
Nem inkább így kéne?
Kód (php) Kijelölés
while($get = mysql_fetch_array($account_info)

Na mindegy, én valami ilyesmire gondolok....

Na most igen, az utóbbihoz hozzá sem lehet szagolni, mert nem tudjuk hogyan várja el az adatokat. Egy ciklusba kellenek, vagy egyáltalán mihez. Mert ha csak 1 változóba kellenek, akkor az sima, de ha egy egész tömbön keresztül lépkedő ciklus, akkor az már nehéz.
Kicsit nagyobb részt adj meg a kódból a második pontban foglaltaknál.

Üdv.: Senki
( Én syntaxoltam be utólag a kódrészletedet, így jobban látszik. Ha már megvan ez a funkció, akkor hát használjuk. :) )
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

zerus

Hát ezt nem lesz egyszerű az elgondoltak alapján megcsinálni.

De mielőtt belemennénk, egyből az kérdés jutott eszembe hogy az a nyamvadt tábla miért van egy teljesen külön adatbázisban? Miért nem férnek meg egymás mellett, egy adatbázisban? Feltétlenül szükség van arra hogy külön adatbázisban legyen?

Szerintem sokkal de sokkal egyszerűbben is meg lehet oldani, de persze ehhez tudni kellene hogy pontosan mit is szeretnél és mik a (valós) korlátok.

heisenberg

#3
kell mindkét adatbázis+tábla neve, így (no meg jogosultságok, de feltételezem, az van):

Kód (php) Kijelölés

$account_info = mysql_query("SELECT account.id, account.username, account.email, account.joindate, account.locked, account.last_ip, account.expansion, account.acp, account.vp, sms_credit.credit FROM a_fo_adatbazis.account, xxxyyy_www.sms_credit WHERE account.username = '$login'") or die (mysql_error());


a másik:

Kód (php) Kijelölés

$accounts = mysql_query("SELECT account.username, account.email, account.vp, sms_credit.credit FROM fo_adatbazis.account, xxxyyy_www.sms_credit WHERE account.username = '$login'") or die (mysql_error());

NevemSenki

Zerusznak igaza van. Én próbáltam abból építkezni amit megadott.
Megoldható de nem egyszerű.
És miért nem jó az úgy ahogy volt, hogy egy táblában van mind a kettő?

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

zerus

Idézetet írta: bitleak Dátum 2012 december 22, 12:55:05 DÉLUTÁN
kell mindkét adatbázis+tábla neve, így (no meg jogosultságok, de feltételezem, az van):

Kód (php) Kijelölés

$account_info = mysql_query("SELECT account.id, account.username, account.email, account.joindate, account.locked, account.last_ip, account.expansion, account.acp, account.vp, sms_credit.credit FROM a_fo_adatbazis.account, xxxyyy_www.sms_credit WHERE account.username = '$login'") or die (mysql_error());


a másik:

Kód (php) Kijelölés

$accounts = mysql_query("SELECT account.username, account.email, account.vp, sms_credit.credit FROM fo_adatbazis.account, xxxyyy_www.sms_credit WHERE account.username = '$login'") or die (mysql_error());


Véletlenül az inner join  nem hiányzik a két tábla közül? Mert így szerencsétlen sql-ünk nem tudja eldönteni hogy mit mivel kössön össze.

Elvileg ez is egy működő képes megoldás lehet, de nem hiszem hogy a legszebb/jobb.

heisenberg

Idézetet írta: zerus Dátum 2012 december 22, 07:13:22 DÉLUTÁN
Idézetet írta: bitleak Dátum 2012 december 22, 12:55:05 DÉLUTÁN
kell mindkét adatbázis+tábla neve, így (no meg jogosultságok, de feltételezem, az van):

Kód (php) Kijelölés

$account_info = mysql_query("SELECT account.id, account.username, account.email, account.joindate, account.locked, account.last_ip, account.expansion, account.acp, account.vp, sms_credit.credit FROM a_fo_adatbazis.account, xxxyyy_www.sms_credit WHERE account.username = '$login'") or die (mysql_error());


a másik:

Kód (php) Kijelölés

$accounts = mysql_query("SELECT account.username, account.email, account.vp, sms_credit.credit FROM fo_adatbazis.account, xxxyyy_www.sms_credit WHERE account.username = '$login'") or die (mysql_error());


Véletlenül az inner join  nem hiányzik a két tábla közül? Mert így szerencsétlen sql-ünk nem tudja eldönteni hogy mit mivel kössön össze.

Elvileg ez is egy működő képes megoldás lehet, de nem hiszem hogy a legszebb/jobb.

Igen, ez egy valőszínűleg működőképes megoldás, az INNER JOIN elhanyagolható, ugyanis az adatbázis motor ebben az egyszerű szituációban beilleszti/kitalálja magától.

K3nNy

Köszönöm a segítséget, de kaptam Zerustól egy egyszerűbb megoldást a problémámra.
Az sms fogadó scriptet állítottam át dp re a credit helyett, és átraktam az accountok adatbázisába a fogadóscripthez tartozó sql táblákat.

Már csak az homályos, hogy hogyan tudok többszörösen hivatkozni egyszerre?
Vagyis, hogy a functions.php ba való hivatkozások a dp re, ne az account táblából történjenek, hanem az sms_kredit táblából

functions.php: http://pastebin.com/ivWuawZQ
Előre is köszönöm szépen a válaszokat!

hunti

kenny, írj üzenet tfmworld.hu oldalon, és megcsinálom neked sms.php-t úgy hogy jó legyen :)

Powered by EzPortal