Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z foreach()
Forum PHP.pl > Forum > Przedszkole
98256
Witam,
problem mam z wyswietleniem wynikow z funkcji, ale moze opisze od poczatku:


Link:
  1. <?php
  2. LINK_1
  3.  <a href="?id=klienci&a=brak"> Lista LINK
  4. ?>


skrypt:
przedstawialem go ponizej

funkcja:
  1. <?php
  2. function getNoneContract(){
  3.  
  4. $sql = "select Imie, Nazwisko, Ulica, Nr_Domu from Klienci where s = 'b'";
  5. if(false !=($r = ($this->db->sql_fetchrow($this->db->sql_query($sql))))){
  6. return $r;
  7. }else {
  8. return false;
  9. }
  10. }
  11. ?>


zapytanie napewno jest ok bo jak wpisalem w phpmyadmin to mi ladnie zwraca rekordy



ale na stronie pokazuje tylko to:


zalwazylem ze to sa pierwsze litery pierwszego zwracanego rekordu..
"Roman Koziel ul.Malinowa 3"

gdzie robie blad?
b_chmura
przedstaw jeszcze raz swój kod bo jak na razie to niema prawa wogóle chodzić.

sprawdź co zwraca Twoja funkcja getNoneContract()
98256
  1. <?php
  2.  
  3. if($_GET['a'] =='brak'){
  4.  
  5. ?>
  6. <div style="margin-top:20px;">
  7.  
  8. <?php
  9. if(is_array($tr = $klienci->getNoneContract())){
  10.  
  11. ?>
  12.  
  13. <table class="tabelka">
  14. <thead>
  15. <tr>
  16. <th>NAZWISKO</th>
  17. <th>IMIE</th>
  18. <th>ULICA</th>
  19. </thead>
  20.  
  21. <?php 
  22.  
  23.  
  24. foreach($tr as $v){
  25.  
  26. echo "<tr onmouseover=\"this.className='trOnMouseOver'\" onmouseout=\"this.className=''\">
  27.  <td>{$v['Nazwisko']}</td><td>{$v['Imie']}</td>
  28.  <td>{$v['Ulica']} {$v['Nr_Domu']}</td>
  29.  </tr>";  
  30.  
  31.  
  32. }
  33. ?>
  34. </table>
  35. <?php
  36. }
  37. else {
  38. echo "Brak danych do wyświetlenia!";
  39. }
  40. ?>
  41.  
  42. </div>
  43. <?php
  44.  
  45. }


ale jak zamieniam foreach na

  1. <?php
  2. foreach($tr as $k)
  3. {
  4.  print_r($k);
  5. }
  6. ?>


to mi wypisuje tylko jeden rekord : RomanKoziołul. Wesoła3
marcio
Nie wiem ale moze masz limit w zapytaniu
98256
zapytanie mam takie :

  1. <?php
  2. $sql = "select Imie, Nazwisko, Ulica, Nr_Domu from Klienci where s = 'b'";
  3. ?>


i jak wklejam to zapytanie w phpmyadmin to wyswietla mi przeszlo 60 rekordow..
mike
Wszystko działa poprawnie. Ale masz błąd logiczny w całym rozumowaniu.
Twoja funkcja getNoneContract() działa poprawnie. Tylko spójrz dokładnie co ona robi: odpytuje bazę (zapytanie jest poprawne) i zwraca ... uwaga ... jeden wiersz.
Każde wywołanie funkcji to jeden wiersz z wyników, których masz jak mówisz więcej. A ile razy wywołujesz tą funkcję? Raz. I właśnie dlatego masz jeden wynik.

Twój kod powinien wyglądać bardziej jak to:
  1. <?php
  2.  
  3. while (($row = $klienci->getNoneContract()) !== false) {
  4. print_r($row);
  5. }
  6.  
  7. ?>
98256
nom, kombinuje z tym "while" ale chyba zabija to serwer bo sie serwis calkowicie zawiesza.. chlopaki pomozcie, bo naprawde nie wiem jak to zrobic :/
Kicok
To while o którym mówił ~mike będziesz musiał przenieść do funkcji getNoneContract. Na razie przy każdym wywołaniu tej funkcji wykonujesz od nowa zapytanie SQL i pobierasz jeden wiersz
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.