Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] problem z wyswietlaniem wierszy z tabel
nieraczek
post 12.02.2009, 12:18:19
Post #1





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

Ostrzeżenie: (0%)
-----


Tabele

KSIAZKI
id PK
tytul

AUTORZY
id PK
imie
nazwisko

KSIAZKI_AUTORZY
id_ksiazki PK
id_autorzy PK


Czyli jedna książka może mieć wielu autorów i jeden autor może być w wielu książkach.

action.class.php:
  1. <?php
  2. class bibliotekaActions extends sfActions
  3. {
  4.  public function executeIndex(sfWebRequest $request)
  5.  {
  6.      $this->ksiazki_list = Doctrine::getTable('Ksiazki')->getWszystko();  
  7.  }
  8. }
  9. ?>


indexSuccess.php:
  1. <table id="lista" cellspacing="0">
  2. <tr>
  3. <th>Opcja</th>
  4. <th>Tytul</th>
  5. <th>Imie</th>
  6. <th>Nazwisko</th>
  7. </tr>
  8. </thead>
  9. <?php foreach ($ksiazki_list as $ksiazki): ?>
  10. <tr>
  11. <td><a href="<?php echo url_for('biblioteka/polacz?id='.$ksiazki['id']) ?>">Zmień autorów <?php echo $ksiazki->getid() ?></a></td>
  12. <td><?php echo $ksiazki->gettytul() ?></td>
  13. <td><?php echo $ksiazki->getimie() ?></td>
  14. <td><?php echo $ksiazki->getnazwisko() ?></td>
  15. </tr>
  16. <?php endforeach; ?>
  17. </tbody>




Zapytanie w KsiazkiTable.class.php:
  1. <?php
  2. class KsiazkiTable extends Doctrine_Table
  3. {
  4. public function getWszystko()
  5.  {
  6. $q = Doctrine_Query::create()
  7.      ->select('k.*, a.imie AS imie, a.nazwisko AS nazwisko')
  8.      ->from('Ksiazki k')
  9.      ->leftJoin('k.KsiazkiAutorzy ka')
  10.      ->leftJoin('ka.Autorzy a');
  11.  
  12. return $q->execute();
  13. }
  14. }
  15. ?>


Czyli w przetłumaczeniu:
  1. <?php
  2. SELECT  k.id AS  k__id, k.tytul AS  k__tytul, a.imie AS  a__0, a.nazwisko AS  a__1 FROM ksiazki k LEFT JOIN ksiazki_autorzy k2 ON k.id = k2.id_ksiazki LEFT JOIN autorzy a ON k2.id_autorzy = a.id
  3. ?>


Powyższe zapytanie po wklejeniu do phpmyadmina zwraca poprawne wartości czyli np.
1 Ksiazka1 Aleksander Fredro
1 Ksiazka1 Adam Mickiewicz
2 Ksiazka2 null null

Tymczasem na stronie jest to wyswietlane tak jakby ta sama ksiazka nie mogla sie powtorzyc czyli:
1 Ksiazka1 Aleksander Fredro
2 Ksiazka2 null null

Zniknęło: 1 Ksiazka1 Adam Mickiewicz


Dlaczego questionmark.gif

////////////////////////////////////////////////////////////////////////////

W pliku indexSuccess.php dałem na końcu:


<?php
$polaczenie=mysql_connect ("localhost", "root", "") or die ("Nie można połączyć się z MySQL");
mysql_select_db ("baza_ksiazek") or die ("Nie można połączyć się z bazą cwphp");

$z = mysql_query ("SELECT k.id AS k__id, k.tytul AS k__tytul, a.imie AS a__0, a.nazwisko AS a__1 FROM ksiazki k LEFT JOIN ksiazki_autorzy k2 ON k.id = k2.id_ksiazki LEFT JOIN autorzy a ON k2.id_autorzy = a.id");
while ($wiersz = mysql_fetch_assoc ($z))
{
$tytul = $wiersz['k__tytul'];
echo "$tytul <br/>";
}
?>

Wyświetliło mi poprawnie 3 tytuły exclamation.gif Czyli coś w symfony musi być nie tak. Napisali własną wersję foreach czy jak ?

Ten post edytował nieraczek 12.02.2009, 17:23:22
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:52