Skocz do zawartości

[php] Tabela z danymi z mysql


Dawka83

Rekomendowane odpowiedzi

Więc tak chciałem uzyskać tabele z wynikami z mysql. Jeżeli wynik o danym id znajduje się w mysql to ma go wyświetlić w odpowiednim miejscu w tabeli jeśli natomiast nie ma, ma wyświetlić jego cyferkę. No i napisałem sobie oto taki kodzik:

$zmienne = mysql_query("select * from `ivy_map` LIMIT $str1 , $str2");
while ($sq=mysql_fetch_array($zmienne))
{
    $dane[$u][1]=$sq['id'];
    $dane[$u][2]=$sq['grafika'];
    $dane[$u][3]=$sq['typ'];
    $dane[$u][4]=$sq['others'];
    $u=$u+1;
}
echo '<table>';
echo '<tr>';
$a=0;
for ($i=$str*60; $i<$str*60+60; $i++)
{
    $a=$a+1;
    if (empty($dane[$i][1])==false)
    {
        echo '<td><img src="modules/images/'.$dane[$i][2].'" onclick="load(\'map.zas?act=show&id='.$dane[$i][1].'\')"/></td>';
    }
    else
    {
        echo '<td class="free" onclick="load(\'map.zas?act=show&id='.$i.'\')">'.$i.'</td>';
    }
    
    if ($a==10)
    {
        echo '</tr><tr>';
        $a=0;
    }
}
echo '</tr>';
echo '</table>';

 

Niestety ku moim oczekiwaniom kod nie spełnia swojego zadania i gdy ma wyświetlać w danej komórce obrazek (np 30) wyświetla go w komórce 0... Moje pytanie jest takie czy jesteście w stanie mi pomóc i znaleźć błąd. Bardzo was proszę.

Odnośnik do komentarza
Udostępnij na innych stronach

echo '<table><tr>';

$idMin = $str * 60;
$idMax = $idMin + 60;

if( $result = mysql_query( 'SELECT * FROM `ivy_map` WHERE `id` >= ' . $idMin. ' AND `id` < ' . $idMax . ' ORDER BY `id`' ) ) {
    $u = 1;
    $id = $idMin;
    $cell = null;
    for( $id = $idMin; $id < $idMax; $id++ )
    {
        if( $cell == null ) {
            $cell = mysql_fetch_assoc( $result );
        }

        if( is_array( $cell ) && $cell['id'] == $id ) {
            echo '<td><img src="modules/images/' . $cell['grafika'] . '" /></td>';
            $cell = null;
        }
        else {
            echo '<td>' . $id . '</td>';
        }

        if( !fmod( $u++, 10 ) ) {
            echo '</tr><tr>';
        }
        
    }
}

echo '</tr></table>';

Nie wiem czy działa, pisałem z pamięci.

 

EDIT

Poprawka.

Odnośnik do komentarza
Udostępnij na innych stronach

Jee działa!! Tyle że z zapytaniem: "select * from `ivy_map` LIMIT $str1 , $str2" ale działa!!! Tymon jesteś moim mistrzem!
Tyle, że użycie tutaj LIMIT jest błędem. Jeśli chcesz wypluć rekordy o ID od 0 do 60, a pobierasz 60 rekordów zaczynając od pierwszego jaki występuje w bazie, podczas gdy pierwszy zwrócony ma ID 60, kolejne, 61, 62, 63... itd., to ściągasz 60 rekordów niepotrzebnie. W zapytaniu SQLa koniecznie musi być wybierane w przedziale <0,60) za pomocą WHERE, wtedy wybierze tylko te, które są potrzebne.

 

Sprawdź moje zapytanie, może gdzieś popełniłem błąd - mówiłem, pisałem wszystko z pamięci.

 

EDIT

Swoją drogą, nie powinno być w bez 0? W przedziale (0,60>?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...