Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Pętla while i problem z zapytaniem
Forum PHP.pl > Forum > Przedszkole
Woytek950
Witam. Tworzę system newsów i nie potrafię wykonać pewnej sprawy.
Mam zapytanie które przekazuje tablice z wszystkimi newsami.
  1. $qu1 = mysql_query("SELECT * FROM content WHERE mask ='0' AND mains='1'");
  2. $nr1 = mysql_num_rows($qu1);
  3. if($nr1>0)
  4. {
  5. while($rw1 = mysql_fetch_array($qu1))
  6. {
  7. $arr1[] = $rw1;
  8. }
  9. $tpl->assign("newsPageFront", $arr1);
  10. }

Następnie mam plik szablonu a w nim:
  1. {loop name="newsPageFront"}
  2. <div class="topNews"><a href="index.php?option=news&content={$value.alias}">{$value.title}</a>{$value.created}{$value.newAutor}
  3. </div>
  4. {/loop}

Wyświetla on mniej więcej takie dane:
tytul newsa, data utworzenia i id uzytkownika który go dodał. Tylko chciał bym aby id równało się nazwie użytkownika. W jaki sposób to rozwiązać questionmark.gif
Będę wdzięczny za pomoc i za każdą odpowiedź.
tehaha
zastosuj LEFT JOIN, łącząc tabele na id_użytkownika_który_dodał_newsa = id_użytkownika
  1. $sql = "SELECT a.news_id, a.news_user_added, b.user_name FROM content a LEFT JOIN users b ON a.news_user_added = b.user_id";
  2. (...)
  3. (...)
  4. $user_name = $row['user_name'];
Woytek950
Witam ponownie. Mam znów problem, otóż piszę skrypt wyświetlania menu i kategorii menu i mam problem z zastosowaniem tego w praktyce czyli w systemie szablonów RainTpl
php:
  1. //*************** Wyświetlenie newsow na stronei glownej **//
  2. /////////////////////////////////////////////////////////////
  3. $qu2 = mysql_query("SELECT * FROM menu_types WHERE mask = '0'"); // Tabela z kategoriami
  4. $nr2 = mysql_num_rows($qu2); // zliczanie rekordow
  5.  
  6. for($i=0; $i<$nr2; $i++) // petla do przeszukiwania FOR
  7. {
  8. $idCategory = mysql_result($qu2,$i,"id"); // ID kategorii
  9. $nameCategory = mysql_result($qu2,$i,"title"); // nazwa kategorii
  10. $menuType = mysql_result($qu2,$i,"menutype"); // nazwa kategorii
  11. //echo "<p>".$nameCategory."</p>";
  12.  
  13. //$arr2[] = $menuType; /////////////////////////////////////
  14.  
  15. $qu3 = mysql_query("SELECT * FROM menu WHERE menutype='$menuType' ORDER by ordering ASC"); // Szukamy linkow ktore sa w danej kategorii
  16. $nr3 = mysql_num_rows($qu3); // zliczanie rekordow
  17.  
  18. for($j=0; $j<$nr3; $j++)
  19. {
  20. $idLink = mysql_result($qu3,$j,"id"); // ID linku
  21. $nameLink = mysql_result($qu3,$j,"name"); // nazwa linku
  22. $aliasLink = mysql_result($qu3,$j,"alias"); // alias linku
  23. $linkLink = mysql_result($qu3,$j,"link"); // nazwa kategorii
  24. //echo "<p><a href=\"".$linkLink."\">".$nameLink."</a>";
  25.  
  26. //$arr3[] = $nameLink; /////////////////////////////////////
  27. }
  28.  
  29. }
  30. $zm1 = "jakis tekst";
  31. $tpl->assign("cos", $zm1);
  32.  
  33. /////////////////////////////////////////////////////////////
  34. //*********************************************************//

Plik tpl.
  1. {loop name="arr2t"}
  2. <p><a href="{$value.alias}">{$value.name}</a></p>
  3.  
  4. {/loop}

I teraz nie wiem jak przekazać zmienne do tablicy aby powstała sensowna tablica. Oraz nie potrafję ją, je wyświetlić. Pomoże ktoś?




Edit: i jeszcze jak można to proszę o wytłumaczenie w jaki sposób "wyciągnąć" z tablicy zmienną a następnie ją przekształcić.
Chodzi mi tu o format daty, czyli jeżeli w tablicy wykonanej przy pomocy pętli while (dodając dane z mysql) mamy 2010-05-06 10:20:03 i w pliku tpl: {$value.dataCreated}.
Chciał bym uzyskać mniej więcej taki efekt poniedzilek, 23 maja 2019 r. (ale skrypt formatowania daty już wykonałem).

ref
tehaha
trudno stwierdzić co chcesz zrobić, ale zakładając, że linijki 20-23 to to chcesz umieścić w tablicy to możesz zrobić coś takiego:
  1. $results_to_print = array();
  2. for($j=0; $j<$nr3; $j++)
  3. {
  4. $idLink = mysql_result($qu3,$j,"id"); // ID linku
  5. $nameLink = mysql_result($qu3,$j,"name"); // nazwa linku
  6. $aliasLink = mysql_result($qu3,$j,"alias"); // alias linku
  7. $linkLink = mysql_result($qu3,$j,"link"); // nazwa kategorii
  8. //echo "<p><a href=\"".$linkLink."\">".$nameLink."</a>";
  9.  
  10. //$arr3[] = $nameLink; /////////////////////////////////////
  11. $results_to_print[] = array('idLink'=> "$idLink", 'nameLink '=> "$nameLink",'aliasLink'=> "$aliasLink",'linkLink'=> "$linkLink");
  12. }
  13. print_r($results_to_print);
  14. //teraz tworzymy z tego linki
  15. foreach($results_to_print as $value)
  16. {
  17. "<p><a href=\"".$value['linkLink']."\">".$value['$nameLink']."</a>";
  18. }


co do daty to przed przed wyświetleniem daty przepuszczasz ją przez swoją funkcję np;
  1. $dates_array = array('date'=>'2010-05-06 10:20:03', 'date'=>'2010-05-06 10:20:03', 'date'=>'2010-05-06 10:20:03');
  2. foreach($dates_array as $value)
  3. {
  4. echo format_date_function($value['date']);
  5. }

Woytek950
Dzięki za odpowiedź. Wiesz o co mi się rozchodzi? chodzi tu o menu. Mam kategorie menu czyli np. menu głowne, menu prawo itp. I do nich linki (które są w oddzielnie), i chcę to teraz wypisac.
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.