Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Top 10
Forum PHP.pl > Forum > Przedszkole
maniek6666
Witam serdecznie , stworzyłem sobie topliste wszystko działa tylko chce ja teraz wyświetlić i mam mały problem bo nie wiem jak zrobić sortowanie tzn zeby sie wyświetlało na pierwszej pozycji pozycja która ma najwięcej głosów i zmniejszyć liczbe znaków tytułu tzn żeby wyświetlało się 30 znaków a po najechaniu żeby był dymek z całą nazwą

oto zapytanie do bazy danych

  1. function toplisty() {
  2.  
  3. <table width="100%" align="left" border="0" cellspacing="0" cellpadding="0">
  4. <tr>
  5. <td align="left" class="uni_01"><b>Wykonawca</b></td>
  6. <td align="center" class="uni_01">glosy</td>
  7. <td align="center" class="uni_01">zaglosuj</td>
  8. </tr>';
  9.  
  10.  
  11. $sql = "SELECT * FROM toplista_pliki";
  12. $result = mysql_query($sql);
  13.  
  14. while($r = mysql_fetch_array($result)) {
  15.  
  16. $id = $r['id'];
  17. $wyk = $r['nazwa'];
  18. $gl = $r['glosow'];
  19.  
  20. <tr>
  21.  
  22. <td class="uni_01="left"><img src="/images/strzalka_czerwona.png" width="8" height="6">'.$wyk.'</td>
  23. <td class="uni_01" align="center">'.$gl.'</td>
  24.  
  25. <td class="uni_01" align="center"><a href="toplista.php?cmd=glos&id='.$z_bazy[id].'&kat=1"><img src="/images/icon_plus.png" width="8" height="6"></a></td>
  26. </tr>';
  27. }
  28. </table>';
  29.  
  30. }

dopiero się uczę więc pewnie nie jest za dobre pozdrawiam i licze na pomoc smile.gif
Daiquiri
Co do pierwszego skorzystaj z zapytania z dodatkiem ORDER BY pole_z_liczba_glosow DESC (czyli ustawianie kolejności malejąco po zadanym polu). Co do drugiego skorzystaj z funkcji substr(). Nie wiem jaki dymek masz na myśli.
blade-mrn
Nie wiem jak z tym dymkiem ale jeśli chodzi o sortowanie to możesz to zrobić przy pobieraniu danych z bazy.
  1. SELECT * FROM tabela ORDER BY kolumna z ilością głosów DESC
maniek6666
co do dymku to żeby sie title po najechaniu wyświetlało
Daiquiri
To w czym masz problem? W miejscu:
  1. <a href="" title="<?php echo $pobrany_tytul;?>" > <?php echo substr($pobrany_tytul,0,30);?> </a>
maniek6666
Oj coś mi nie wychodzi dodaje zapytanie"SELECT * FROM toplista_pliki ORDER BY $gl DESC "; ale nadal sortowanie nie działa ;/ gdzie popełnilem bład ?
  1. function toplisty() {
  2.  
  3. <table width="100%" align="left" border="0" cellspacing="0" cellpadding="0">
  4. <tr>
  5. <td align="left" class="uni_01"><b>Wykonawca</b></td>
  6. <td align="center" class="uni_01">glosy</td>
  7. <td align="center" class="uni_01">zaglosuj</td>
  8. </tr>';
  9.  
  10.  
  11. $sql = "SELECT * FROM toplista_pliki";
  12. $result = mysql_query($sql);
  13. "SELECT * FROM toplista_pliki ORDER BY $gl DESC ";
  14.  
  15. while($r = mysql_fetch_array($result)) {
  16.  
  17. $id = $r['id'];
  18. $wyk = $r['nazwa'];
  19. $gl = $r['glosow'];
  20.  
  21. <tr>
  22.  
  23. <td class="uni_01="left"><img src="/images/strzalka_czerwona.png" width="8" height="6">
  24. '.$wyk.' </a> </td>
  25. <td class="uni_01" align="center">'.$gl.'</td>
  26.  
  27. <td class="uni_01" align="center"><a href="toplista.php?cmd=glos&id='.$z_bazy[id].'&kat=1"><img src="/images/icon_plus.png" width="8" height="6"></a></td>
  28. </tr>';
  29. }
  30. </table>';
  31.  
  32. }
emajl22
  1. $sql = "SELECT * FROM toplista_pliki ORDER BY ".$gl." DESC";
  2. $result = mysql_query($sql);

poza tym mam jedno pytanie - skąd Ci się wzięło te $gl?
blade-mrn
  1. $sql = "SELECT * FROM toplista_pliki ORDER BY ".$gl." DESC";

Tu zamiast $gl ma być nazwa kolumny z tabeli według której sortujesz.
A tu nie prościej zrobić tak, zamiast tego:
  1. $sql = "SELECT * FROM toplista_pliki";
  2. $result = mysql_query($sql);

dać tak:
  1. $result = mysql_query("SELECT * FROM toplista_pliki");

Do czego ci ta zmienna $sql?
maniek6666
wiec dodaje tak
  1. function toplisty() {
  2.  
  3. <table width="100%" align="left" border="0" cellspacing="0" cellpadding="0">
  4. <tr>
  5. <td align="left" class="uni_01"><b>Wykonawca</b></td>
  6. <td align="center" class="uni_01">glosy</td>
  7. <td align="center" class="uni_01">zaglosuj</td>
  8. </tr>';
  9.  
  10. $sql = "SELECT * FROM toplista_pliki ORDER BY glosow DESC";
  11. $result = mysql_query($sql);
  12. while($r = mysql_fetch_array($result)) {
  13. $id = $r['id'];
  14. $wyk = $r['nazwa'];
  15. $gl = $r['glosow'];
  16.  
  17.  
  18. <tr>
  19.  
  20. <td class="uni_01="left"><img src="/images/strzalka_czerwona.png" width="8" height="6">
  21. '.$wyk.' </a> </td>
  22. <td class="uni_01" align="center">'.$gl.'</td>
  23.  
  24. <td class="uni_01" align="center"><a href="toplista.php?cmd=glos&id='.$z_bazy[id].'&kat='.$GLOBALS[kat].'"><img src="/images/icon_plus.png" width="8" height="6"></a></td>
  25. </tr>';
  26. }
  27. </table>';
  28.  
  29. }

sortowanie działa extra tylko nie dodaje głosu do bazy ;/
ADeM
A gdzie masz jakiś kod odpowiedzialny za to? oO
maniek6666
znaczy jeśli dodaje głos przez www.mojastrona.pl/toplista.php to normalnie dodaje a jesli z index.php to juz nie

w pliku toplista.php jest
  1. function glos() {
  2.  
  3. if($_COOKIE['toplista_kat']==$GLOBALS['kat']) echo '<br><br><b><center>Oddałeś już głos w tej kategori</center></b><br><br>';
  4. else {
  5. $glosow = mysql_result(mysql_query("SELECT glosow FROM toplista_pliki WHERE id='$GLOBALS[id]'"),"glosow");
  6. mysql_query("UPDATE toplista_pliki SET glosow=$glosow+1 WHERE id='$GLOBALS[id]'");
  7.  
  8. setcookie("toplista_kat", $GLOBALS['kat'], time()+3600*24*365);
  9.  
  10. echo '<br><br><b><center>Dziękujemy za oddanie głosu</center></b><br><br>';
  11. }
  12. echo '<script language="JavaScript" type="text/javascript">
  13. <!--
  14. setTimeout("window.location.replace(\'toplista.php?cmd=poz&kat='.$GLOBALS[kat].'\')", 3000);
  15. //-->
  16. </script>';
  17. }
ADeM
No fajnie... Chyba nie podałeś wszystkich kodów -.-'
Podałeś plik index, w którym Ci nie dodaje?
maniek6666
znaczy w index.php dodaje
<?php
toplisty();
?>
a funkcje w pliku bonus.inc.php bo ja to chcialem pod jportal

Witam ponownie więc sortowanie działa title działa odawanie głosu działa mam tylko problem z limitem tytułu wiem ze do tego można zastosować substr tylko kurcze no nie wiem jak ;/ serdecznie prosze o pomoc
http://us2.php.net/manual/pl/function.substr.php

  1. function toplisty() {
  2.  
  3. <table width="100%" align="left" border="0" cellspacing="0" cellpadding="0">
  4. <tr>
  5. <td align="left" class="uni_01"><b>Wykonawca</b></td>
  6. <td align="center" class="uni_01">glosy</td>
  7. <td align="center" class="uni_01">zaglosuj</td>
  8. </tr>';
  9.  
  10. $sql = "SELECT * FROM toplista_pliki ORDER BY glosow DESC";
  11. $result = mysql_query($sql);
  12. while($r = mysql_fetch_array($result)) {
  13.  
  14. $id = $r['id'];
  15. $wyk = $r['nazwa'];
  16. $gl = $r['glosow'];
  17.  
  18. $dl=strlen($r[title]);
  19. if($dl>35) $r[title]=substr($r[title], 0, 35).'...';
  20.  
  21.  
  22. <tr>
  23.  
  24. <td class="uni_01="left"><img src="/images/strzalka_czerwona.png" width="8" height="6">
  25. <a href="#" title="'.$r[nazwa].'">'.$wyk.'</a> </td>
  26. <td class="uni_01" align="center">'.$gl.'</td>
  27.  
  28. <td class="uni_01" align="center"><a href="toplista.php?cmd=glos&id='.$z_bazy[id].'&kat='.$GLOBALS[id].'&kat=1"><img src="/images/icon_plus.png" width="8" height="6"></a></td>
  29. </tr>';
  30. }
  31. </table>';
  32.  
  33. }
lord2105
Dlaczego tak?
  1. $dl=strlen($r[title]);


a nie tak?

  1. $dl=strlen($r[nazwa]);


EDIT:

  1. if (strlen($r['nazwa']) > 35){
  2. $wyk = substr($r['nazwa'],35).'...';
  3. }
  4. else {
  5. $wyk = $r['nazwa'];
  6. }
maniek6666
Extra działa tylko że skraca ale od lewej strony czyli jak mam nazwe Rod Stewart Do Ya Think Im Sexy (Mightyfools Remix) to skraca do
Ya Think Im Sexy (Mightyfools Remix).. po ustawieniu 10 wyświetlanych znaków a powinno być Rod Stewart Do Ya Think Im Sexy
lord2105
daj -35
maniek6666
Nadal tak samo
  1. function toplisty() {
  2.  
  3. <table width="100%" align="left" border="0" cellspacing="0" cellpadding="0">
  4. <tr>
  5. <td align="left" class="uni_01"><b>Wykonawca</b></td>
  6. <td align="center" class="uni_01">glosy</td>
  7. <td align="center" class="uni_01">zaglosuj</td>
  8. </tr>';
  9.  
  10. $sql = "SELECT * FROM toplista_pliki ORDER BY glosow DESC";
  11. $result = mysql_query($sql);
  12. while($r = mysql_fetch_array($result)) {
  13.  
  14. $id = $r['id'];
  15. $wyk = $r['nazwa'];
  16. $gl = $r['glosow'];
  17.  
  18. $dl=strlen($r[title]);
  19. if (strlen($r['nazwa']) > 35 ){
  20. $wyk = substr($r['nazwa'],-35 ).'...';
  21. }
  22. else {
  23. $wyk = $r['nazwa'];
  24. }
  25.  
  26.  
  27. <tr>
  28.  
  29. <td class="uni_01="left"><img src="/images/strzalka_czerwona.png" width="8" height="6">
  30. <a href="#" title="'.$r[nazwa].'">'.$wyk.'</a> </td>
  31. <td class="uni_01" align="center">'.$gl.'</td>
  32.  
  33. <td class="uni_01" align="center"><a href="toplista.php?cmd=glos&id='.$z_bazy[id].'&kat='.$GLOBALS[id].'&kat=1"><img src="/images/icon_plus.png" width="8" height="6"></a></td>
  34. </tr>';
  35. }
  36. </table>';
  37.  
  38. }
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.