Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Wyświetlenie danych w widoku.
Forum PHP.pl > Forum > Przedszkole
cykcykacz
Witam,
mam taki problem wyciągam dane z bazy:
id ip browser data os user password

1 127.0.0.1 Mozilla Firefox 2011-10-14 20:05:19 Macintosh admin NULL
2 127.0.0.1 Mozilla Firefox 2011-10-14 20:28:32 Windows admin asdasd
3 127.0.0.1 Mozilla Firefox 2011-10-14 20:37:46 Windows admin zxcqwe
4 192.168.1.10 Safari 2011-10-14 20:37:46 Linux Szymon masło
5 192.168.1.10 Safari 2011-10-14 20:37:46 Linux Szymon masło
6 192.168.1.10 Safari 2011-10-14 20:37:46 Linux Szymon masło

zapytaniem:
  1. $result = $adb->query( "SELECT * FROM tabela GROUP BY ip ORDER BY id" );

Wyświetla 2 rekordy bez powtórzeń. W widoku w smartach wygląda to tak:
Kod
    
{foreach from=$TABLE key=fieldid item=fielddata}
    <h3><a href="#">{$fielddata.ip}</a></h3>
    <div>
            
    </div>
{/foreach}

Czyli wyświetli odpowiednio:
<a href="#">127.0.0.1</a>
<a href="#">192.168.1.10</a>

I wszystko jest ok.
Tylko teraz nie wiem jak dodać do tego wyświetlanie takich samych rekordów. Pokaże co mam i co mi nie gra.
Korzystam z takiego zapytania:
  1. $result = $adb->query( "SELECT ID, ip
  2. FROM vtiger_ossfailedloginhistory
  3. WHERE ip
  4. IN (
  5.  
  6. SELECT ip AS ilosc
  7. FROM vtiger_ossfailedloginhistory
  8. GROUP BY ip
  9. HAVING COUNT( * ) >1
  10. )" );

W widoku w smartach wygląda to tak:
Kod
{foreach from=$TABLE key=fieldid item=fielddata}
    <h3><a href="#">{$fielddata.ip}</a></h3>
    <div>
            {foreach from=$TABLE2 key=fieldid2 item=fielddata2}
                        <td>{$fielddata2.ip}</td>                    
                    </tr>
            {/foreach}
    </div>
{/foreach}

Wynik wygląda tak
<a href="#">127.0.0.1</a>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<td>192.168.1.10</td>
<td>192.168.1.10</td>
<td>192.168.1.10</td>
<a href="#">192.168.1.10</a>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<td>192.168.1.10</td>
<td>192.168.1.10</td>
<td>192.168.1.10</td>

Niestety nie o to mi chodzi. Chciałbym aby dla <a href="#">127.0.0.1</a>wyświetliły się tylko rekordy127.0.0.1. Czyli
<a href="#">127.0.0.1</a>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
I również odpowiednio dla 192.168.1.10:
<a href="#">192.168.1.10</a>
<td>192.168.1.10</td>
<td>192.168.1.10</td>
<td>192.168.1.10</td>
-tomm-
spróbuj tak:

  1. {foreach from=$TABLE key=fieldid item=fielddata}
  2. <h3><a href="#">{$fielddata.ip}</a></h3>
  3. <div>
  4. {foreach from=$TABLE2 key=fieldid2 item=fielddata2}
  5. {if $fielddata2.ip eq '$fielddata.ip} <td>{$fielddata2.ip}</td> {/if}
  6. </tr>
  7. {/foreach}
  8. </div>
  9. {/foreach}
cykcykacz
Wyświetliło mi tylko raz 127.0.0.1
-tomm-
tylko to, które jest odnosnikiem?

we wcześniej podanym kodzie jest jeden niepotrzebny apostrof w warunku IF, usun go
cykcykacz
Który apostrof?
a wyświetla tylko:
<a href="#">127.0.0.1</a>
Gość
jest tam tylko jeden, poniżej poprawiona wersja
  1. {if $fielddata2.ip eq $fielddata.ip} <td>{$fielddata2.ip}</td> {/if}
cykcykacz
Wyświetla tylko raz:
<a href="#">127.0.0.1</a>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<td>192.168.1.10</td>
<td>192.168.1.10</td>
<td>192.168.1.10</td>

a powinno:
<a href="#">127.0.0.1</a>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<td>127.0.0.1</td>
<a href="#">192.168.1.10</a>
<td>192.168.1.10</td>
<td>192.168.1.10</td>
<td>192.168.1.10</td>

Ktoś ma pomysł jak to rozwiązać?
Może ja źle się do tego zabrałem?
Gość
dla takich danych
  1. $smarty->assign('TABLE', array(
  2. array('ip'=>'19.0'),
  3. array('ip'=>'12')
  4. )
  5. );
  6. $smarty->assign('TABLE2', array(
  7. array('ip'=>'19.0'),
  8. array('ip'=>'19.0'),
  9. array('ip'=>'19.0'),
  10. array('ip'=>'19.0') ,
  11. array('ip'=>'12'),
  12. array('ip'=>'12'),
  13. array('ip'=>'12')
  14. )
  15. );

i szablonu
  1. {foreach from=$TABLE item=fielddata}
  2. <p>{$fielddata.ip}</p>
  3. {foreach from=$TABLE2 tem=fielddata2}
  4. {if $fielddata2.ip eq $fielddata.ip}<p><i>{$fielddata2.ip}</i></p>{/if}
  5. {/foreach}
  6. {/foreach}

wyswietla
  1. 19.0
  2.  
  3. -- 19.0
  4.  
  5. -- 19.0
  6.  
  7. -- 19.0
  8.  
  9. -- 19.0
  10.  
  11. 12
  12.  
  13. -- 12
  14.  
  15. -- 12
  16.  
  17. -- 12
  18.  

wieć szablon jest dobry, sprawdź obie tablice przekazane do szablonu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.