Porównywanie userów w 2 tabelach.

Założony przez  Nexack.

Witam. Napisałem kod, który po kolei sprawdza wszystkie rekordy z tabeli nr 1 (czy nick, ktory tam jest istnieje w tabeli 2). Jeżeli nick istnieje w #2 to nie wypisuje go, jeżeli nie istnieje to wypisuje.

Wszystko działa ok, tylko jest problem ze znakami specjalnymi, mianowicie gwiazdka różne, TM w indeksie górnym itp.
http://haxball-manager.pl/liga/niezapisani.php
Mój kod:

$result mysql_query("SELECT nick FROM tbk_zawodnicy");
        
        while (
$q mysql_fetch_array($result)){
            
            
$nick html_entity_decode($q['nick']);
            
$zap mysql_fetch_array(mysql_query("SELECT uid FROM mbb_users WHERE username='$nick'"));
            
            if (
$zap[0]){
                 echo 
'';
            }
            else {
                        echo 
$nick."<br>";
            }
            
            
        } 

Dodam, że w tabeli mbb_users - znaki specjalne zapisywane są w originalnej postaci, a w tabeli tbk_zawodnicy w postaci kodu html.
Najlepiej gdybyś includował plik global.php z MyBB i używał $db - to rozwiąże problemy z ewentualnymi różnicami w kodowaniu czy obsłudze bazy.

Ja bym proponował takie rozwiązanie (po użyciu global.php):

$zawodnicy = array();
$result $db->query("SELECT nick FROM tbk_zawodnicy");
while (
$row $db->fetch_array($result))
{
    
$zawodnicy[] = "'{$row['nick']}'";
}

if (!empty(
$zawodnicy))
{
    
$zawodnicy array_map('html_entity_decode'$zawodnicy);
    
$sql_in implode(','$zawodnicy);
    
    
$result $db->query("SELECT uid, username FROM mbb_users WHERE username NOT IN ({$sql_in})");
    while (
$row $db->fetch_array($result))
    {
        echo 
"{$row['username']}<br />";
    }

Wywala mi błąd
Please make sure IN_MYBB is defined.


----
Dodam, że potrzebne mi to do skryptu ligowego, który robie na oddzielnej subdomenie, na której silnik nie jest zainstalowany.
Jeżeli da się includowac plik to fakt subdomeny nie ma znaczenia. A komunikat jest jasny, musisz dodać definicję stałej IN_MYBB.

Wysłane z mojego Galaxy Nexus
Wywala kolejne błędy (z wpisów, które sam dodawałem).
http://haxball-manager.pl/liga/niezapisani.php
Dla testów usunąłem ten kawałek kodu z global.php, ale wtedy też był błąd odnośnie zapytania.

Nie można tego zrobić nie mieszając w to global.php? Mi ta funkcja będzie potrzebna w kilku plikach, więc kombinowanie z tym będzie trochę niezręczne. Funkcja, która zamieniała by jakoś znaki byłaby znacznie wydajniejsza.
wiem , że nie można na tym forum , jednakże odświeżam ten temat.


Kod podany przez lukasa nie działa, tak jak wyżej opisałem. Próbowałem zrobić tak lecz wywalało błędy (opisane post wyżej)
Matslom napisał 20.01.2013, 22:46:
Jak wiesz to dlaczego to robisz?



Użytkownicy przeglądający ten wątek:

1 gości