Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: foreach zwraca mi nieprawidłowe wyniki
Forum PHP.pl > Forum > PHP
humman
Witam
Na stronce, którą właśnie robię użytkownik może zadać pytanie wypełniając formularz: pytanie, treść, i wybór kategorii. Postanowiłem rozwinąć kategorie do podkategorii. W MySQL stworzyłem oddzielną bazę dla subkategorii i gdy próbuję je wyświetlić w formularzu w ten sposób:

kategoria
subkategoria
subkategoria
kategoria
subkategoria
itd

dzieje się coś dziwnego bo miesza mi subkategorie.

Zapytanie wygląda tak:
  1. [/b]
  2. $result = $dbase->get_query("
  3. SELECT *
  4. from kategorie
  5. ");
  6. IF ($result)
  7. {
  8. $pytania = new cTemplate;
  9. foreach ($result AS $record)
  10. {
  11. $pytania->assign[kategoriee] .= $pytania->parse("templates/kat_wybor.htm");
  12. $pytania->assign[kategoriaa]=$record['nazwa_kat'];
  13.  
  14. $katid=$record['kategorie_id'];
  15.  
  16. $result = $dbase->get_query("
  17. SELECT *
  18. from tematy where kategoria_id='$katid'
  19. ");
  20. IF ($result)
  21. {
  22. foreach ($result AS $record)
  23. {
  24. $pytania->assign[subkategorie] .= "<option value=".$record['temat'].">".$record['temat']."</option>";
  25.  
  26. }
  27. } else $pytania->assign[subkategorie] .="";
  28.  
  29. [b]



Korzystam z klasy tempejtowej i do połączeń z bazą mysql.

Najpierw pobieram nazwę kategorii i w pętli foreach kolejne zapytanie które również poprzez foreach wypisuje wszystkie podkategorie w zależności jaki jest 'kategorie_id' z pierwszego zapytanie.

Próbowałem niemal wszystkiego (result2 , nowy obiekt pytania,...) Próbowałem również użyć funkcji mysql_fetch_assoc ale wyświetla mi błąd
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in...
wookieb
1) Foreach to nie funkcja która coś zwraca
2) Masz błąd zapytania a nie blad foreach
3) Zepewne zamiast e daj a
Kod
                    $katid=$record['kategoria_id'];

4) sprawdz swoje $katid
humman
Zapytania są dobre sprawdzałem je w phpmyadmin

Problem jest w tym, że podkategorie są wyświetlane ale np dla jednej kategorii wyświetla mi wszystkie podkategorie dla drugiej tylko jedna a ma dwie:/

Wiem wiem dziwnie to opisuję ale dla mnie też jest to bardzo dziwne:)
wookieb
Dobra. wiec zacznijmy od tego zebys posprzatal swoj balagan bo nie masz odpowiedniej ilosci }.
Poza tym
  1. <?php
  2. $result = $dbase->get_query("
  3.              SELECT *
  4.             from kategorie
  5.             ");
  6.    if ($result)
  7.        {
  8.            $pytania = new cTemplate;
  9.            foreach ($result as $record)
  10.                {
  11.                    (...)
  12.                    $result = $dbase->get_query("
  13.                                                        SELECT *
  14.                                                        from tematy where kategoria_id='$katid'
  15.                                                    ");
  16. ?>


Nadpisujesz zmienna $result i $record.
humman
Zmieniłem trochę kod

  1. <?php
  2. $subsql = "SELECT * from kategorie";
  3. $subres = mysql_query($subsql);
  4. $pytania = new cTemplate;
  5.  
  6. while($subrow = mysql_fetch_assoc($subres))
  7. {
  8.                     $pytania->assign[kategoriee] .= $pytania->parse("templates/kat_wybor.htm");
  9.                     $pytania->assign[kategoriaa]=$subrow['nazwa_kat'];
  10.  
  11.                    
  12.                     $topsql="select * from tematy where kategoria_id=".$subrow['kategorie_id'].";";
  13.                     $topres = mysql_query($topsql);
  14.                    
  15.                    
  16.                     while ($toprow= mysql_fetch_assoc($topres))
  17.                     {
  18.                     $pytania->assign[subkategorie] .= "<option>".$toprow['temat']."</option>";
  19.                     }
  20. }
  21. [b]
  22. ?>

[/b]

kat_wybor.htm wygląda tak:

<optgroup label="{$kategoriaa}"
{$subkategorie}
</optgroup>


Chciałem aby z pierwszego zapytania wyświetlało kategorie a pod nimi z drugiego zapytania podkategorie.
Jednak tak się nie dzieje bo gdy dodam do kategorii o id 10 podkategorie podk1 i podk2 oraz dla kategorii o id 15 podk10 podk11
otrzymuję coś takiego, że w pierwszej kategorii są wszystkie podkategorie.

katid10
podkat10
podkat11
podkat1
podkat2

katid12

katid15
podkat10
podkat11
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.