Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: W adresie przekazanie numeru id
Forum PHP.pl > Forum > Przedszkole
primo
Czy jest taka możliwość, abym ręcznie nie musiał określać przypisania do adresu ramka_glowna.php?op=2&id=1235 -- ale tak aby ten id byl tym id najwyższym w danej tabeli questionmark.gif

napisałem taką funkcję:

  1. <?php
  2. require_once(&#092;"BD.class.php\");
  3.  
  4. $bd = new BD;
  5.  
  6.  
  7. function najwyzszy_id_w_tabeli()
  8. {
  9. global $bd;
  10.  
  11. if (!$bd->otworz()) {
  12.     die ($bd->blad());
  13. }
  14.  
  15.  
  16.  
  17. if(!$bd->zapytaj(&#092;"Select * from filmy order by id desc LIMIT 0,1;\")){
  18.  die ($db->error());
  19. }
  20.  
  21.  
  22. while($row = $bd->pobierzTablice())
  23. {
  24. return $row[0];
  25.  
  26. }
  27. }           
  28. ?>


później dopisuję to do adresu:

  1. <a href="ramka_glowna.php?op=2&nosnik_dvd=tak&id=<?php echo najwyzszy_id_w_tabeli();?>" target="mainFrame">NOWE FILMY DVD</a><br>


i wszystko jest ok, dopóki nie chcę tej samej funkcji wykorzystać w poniższym przypadku:

  1. <a href="ramka_glowna.php?op=3&nosnik_vhs=tak&id=<?php echo najwyzszy_id_w_tabeli();?>" target="mainFrame">NOWE FILMY VHS</a><br>


funkcja sczytuje najwyzszy ip z tabeli, ale nie bierze pod uwagę ze to co pasuje przy dvd nie pasuje przy vhs. Co powinienem poprawić funkcję (zapytanie) questionmark.gif


////////////////////////////////////////////////////////////////////////////////////////////
Zaś sam sobie odpowiadam, jednakże problem nadal istnieje:

rozwiązałem to w ten sposób, że rozbudowałem zapytanie o warunek where:

  1. <?php
  2. if(!$bd->zapytaj(&#092;"Select * from filmy where nosnik_dvd ='\".$nosnik_dvd.\"' order by id desc LIMIT 0,1;\")){
  3.  die ($db->error());
  4. }
  5. ?>


i nazwałem tą funkcję najwyzszy_id_w_tabeli_dvd. Stworzyłem identyczną drugą funkcję różniącą się tylko warunkim vhs, a do adresów przypisałem dwie różniące się funkcję:

  1. <a href="ramka_glowna.php?op=2&nosnik_dvd=tak&id=<?php echo najwyzszy_id_w_tabeli_dvd();?>" target="mainFrame">NOWE FILMY DVD</a><br>
  2. <a href="ramka_glowna.php?op=3&nosnik_vhs=tak&id=<?php echo najwyzszy_id_w_tabeli_vhs();?>" target="mainFrame">NOWE FILMY VHS</a><br>



Pewnie każdy odrobinę doświadczony mi powie, że jest to złe rozwiązanie, ale co człek poradzi. Taki pomysł mi wpadł do głowy. Nie wiem czy jest sens pisania klasy dla czegoś takiego, jak Wy to widzicie questionmark.gif
DaNTe
Hmm nie bardzo rozumiem sens tego:
nosnik_dvd ='".$nosnik_dvd."

Moze ladniej bedzie (pomijam oczywisce fragmenty kodu):

  1. <?php
  2.  
  3. function najwyzszy_id($filtr = null)
  4. {
  5.    // db connect itp
  6.    switch($filtr)
  7.    {
  8.       case 'dvd':
  9.        $qadd='where nosnik_dvd='tak' ';
  10.        break;
  11.       case 'vhs':
  12.        $qadd='where nosnik_vhs='tak' ';
  13.        break;
  14.    }
  15.    $db->zapytaj(&#092;"SELECT max(id) FROM FILMY $qadd\");
  16.    if($row=$db->get())
  17.      return $row[0]
  18.    return 0;
  19. }
  20.  
  21. ?>


Wtedy masz najwyzszy_id() lub najwyzszy_id('dvd') lub najwyzszy_id('vhs')
primo
no to rozwiązanie pomogło, ale urodziło się zaś coś nowego. Już dwa dni z tym walcze:

istota problemu ta sama, ale trudniejsza... Mianowicie, wyciągam z bazy dane na temat ilości pozycji danego gatunku i umieszczam na stronie po 5 wyników. To jest łatwe, ale teraz chcę aby jak w powyższym rozwiązaniu wczytywało mi wynik najwyższego id z danego przedziału: a wiec jak podzieli wyniki na 5 to niech wczytuje automatycznie id=5 itd.
W momencie kiedy dodam do poniższych adresów warunek ze id=moja_funkcja to wczytuje na kazdej podstronie najwyzszy id ogolnie, a nie z danego przedzilu (piątki).

przykład znajduje się tutaj: przykład

Wskazany powyżej link: Menu Nowości - działa poprawinie natomiast Menu - Filmy na dvd - tu jest problem - gatunek komedia.

  1. <?php
  2. $_ARTICLES['order'] = DESC;
  3. $_ARTICLES['optional_links'] = TRUE;
  4. $_ARTICLES['max_words'] = 10;
  5. $_ARTICLES['max_articles'] = 5;
  6.  
  7. $gatunek = $_GET[&#092;"gatunek\"];
  8. $nosnik_dvd = $_GET[&#092;"nosnik_dvd\"];
  9.  
  10. $page = ( IsSet($_GET['page']) ) ? $_GET['page'] : 0;
  11. $sort = ( IsSet($_GET['order']) ) ? $_GET['order'] :
  12.  $_ARTICLES['order']; 
  13.  
  14. $from = ( $page * $_ARTICLES['max_articles'] );
  15.  
  16. if (!$bd->zapytaj(&#092;"SELECT * FROM filmy WHERE gatunek = '\".$gatunek.\"' AND nosnik_dvd = '\".$nosnik_dvd.\"' ORDER BY id \" . $sort . \"
  17.  LIMIT &#092;" . $from .\", \" . $_ARTICLES['max_articles'])) {
  18. die ($db->error());
  19. }
  20.  
  21.  if (!$bd->zapytaj(&#092;"SELECT COUNT(*) FROM filmy WHERE gatunek = '\".$gatunek.\"' AND nosnik_dvd = '\".$nosnik_dvd.\"'\")) {
  22. die ($db->error());
  23. }
  24.  
  25. list($articles) = $bd->pobierzTablice();
  26.  
  27. $all_pages = ( round($articles / $_ARTICLES['max_articles']) - 1 );
  28.  
  29.  $page_prev = ( $page - 1 );
  30. if ( !($page_prev < 0) && $_ARTICLES['optional_links'] == TRUE ) 
  31. { 
  32. echo '<A HREF=\"index.php?op=4&gatunek=komedia&nosnik_dvd=tak&page=' . $page_prev . '&order=' . $sort . '\">'. '<< Poprzednia strona</A> [ ';
  33. } 
  34. else
  35. { 
  36. echo 'Linkownia [ ';
  37. } 
  38.  
  39. for ( $i = 0, $t = 1, $tt = 1; $i <= $all_pages; $i++, $t++, $tt++ ) 
  40. { 
  41. $spacer = $i == $all_pages ? ' ' : ' | '; 
  42. if ( $i == 0 ) 
  43. { 
  44.  $t = 'Pierwsza'; 
  45. } 
  46. else if ( $i == $all_pages ) 
  47. { 
  48.  $t = 'Ostatnia'; 
  49. } 
  50. else
  51. { 
  52.  $t = $tt; 
  53. } 
  54.  
  55. if ( $i == $page ) 
  56. { 
  57. echo $t . $spacer; 
  58. } 
  59. else 
  60. { 
  61. echo '<A HREF=\"index.php?op=4&gatunek=komedia&nosnik_dvd=tak&page=' . $i . '&order=' . $sort . '\">'. $t . '</A>' . $spacer;
  62. } 
  63. } 
  64. $page_next = ( $page + 1 ); 
  65. if ( !($page_next > $all_pages) && $_ARTICLES['optional_links'] ==
  66.  TRUE ) 
  67. { 
  68. echo '] <A HREF=\"index.php?op=4&gatunek=komedia&nosnik_dvd=tak&page=' . $page_next . '&order=' .$sort . '&id=\">'. 'Następna strona >></A>';
  69. } 
  70. else 
  71. { 
  72. echo ']'; 
  73. }
  74. ?>



oczywiści konstrukcę switch rozbudowałem o warunek:

  1. <?php
  2. case 'komedia':
  3. $qadd='where gatunek='komedia' ';
  4. break;
  5. ?>



proszę o podpowiedź
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.