Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Listing z sortowaniem
Forum PHP.pl > Forum > Przedszkole
konkur4
listing.php

  1. <title>Listing z sortowaniem</title>
  2. </head>
  3. [php]
  4. <?php require("baza.php");
  5.  
  6. $baza1=new baza();
  7.  
  8. function stronicuj($strony=0)
  9. {
  10. global $limit, $start;
  11. $limit=5; //ustalenie limitu danych
  12. $query=mysql_query("SELECT * FROM `samochody`");
  13. $ilosc_danych=mysql_num_rows($query); //uzyskanie ilości danych w bazie
  14. $ilosc_stron=ceil($ilosc_danych/$limit); //podział na strony
  15. $start=$strony*$limit; //uzyskanie numeru rekordu, od którego należy zacząć pobieranie
  16. return($ilosc_stron); //funkcja zwraca ilość stron
  17. }
  18.  
  19. if(isset($_GET['strony']) and is_numeric($_GET['strony']))
  20. {
  21. $strony=stronicuj($_GET['strony']);
  22. }
  23. else
  24. {
  25. $strony=stronicuj();
  26. }
  27.  
  28. if ($_GET['x']=='DESC') {
  29. $kier = 'ASC';
  30. }
  31. else {
  32. $kier = 'DESC';
  33. }
  34.  
  35. if ($_GET['y']=='DESC') {
  36. $kier = 'DESC';
  37. }
  38. else {
  39. $kier = 'ASC';
  40. }
  41.  
  42. $order="ORDER BY ".$_GET['order_by']." $kier";
  43. $order=stripslashes($order);
  44.  
  45. if ($_GET['order_by'] or $kier==ASC )
  46. {
  47. $query="SELECT * FROM `samochody` $order LIMIT $start, $limit";
  48. }
  49. else
  50. {
  51. $query="SELECT * FROM `samochody` LIMIT $start, $limit";
  52. }
  53.  
  54.  
  55. $baza1->wczytaj($query);
  56.  
  57.  
  58. print "<table border='2' cellspacing='3'>";
  59.  
  60. $header = false;
  61.  
  62.  
  63. foreach($baza1->tab as $klucz => $wartosc)
  64. {
  65. if (!$header) {
  66. print "<tr>";
  67. foreach($wartosc as $klucz => $wartosc1){
  68.  
  69. print "<td><a href=listing.php?order_by=`$klucz`&x=$kier>$klucz</a> </td>";
  70. }
  71. print "</tr>";
  72. $header = true;
  73. }
  74.  
  75. print "<tr>";
  76.  
  77. foreach($wartosc as $klucz => $wartosc1)
  78. {
  79. print "<td>$wartosc1</td>";
  80. }
  81. print "</tr>";
  82.  
  83. }
  84.  
  85. print "</table>";
  86.  
  87. print "<br>";
  88. print "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp";
  89.  
  90. for($x=0;$x<$strony;$x++)
  91. {
  92. print '<a href="?strony='.$x.'&order_by=`$klucz`&x=$kier">'.$x.'</a> | ';
  93. }
  94.  
  95.  
  96. ?>[/php]
  97. </body>
  98. </html>


baza.php

  1. <?php
  2.  
  3.  
  4. class baza{
  5. private $host="127.0.0.1"; //podaj nazwę lub ip hosta bazy danych
  6. private $user="root";      //podaj nazwę użytkownika bazy danych
  7. private $haslo="";         //podaj hasło do bazy
  8. private $nazwa="komis";    //podaj nazwę bazy
  9. public $tab = array();
  10.  
  11. public function __construct()
  12.   {
  13.      mysql_connect($this->host, $this->user, $this->haslo) or
  14.      die ("Nie można połączyc się z MySQL!");
  15.    
  16.      mysql_select_db($this->nazwa) or
  17.      die ("Nie można połączyc się z bazą komis!");
  18.  
  19.   }
  20.  
  21.  
  22.        /**
  23.          * Wczytuje tablicę danych z bazy mysql
  24.          *                                    
  25.          * @param $query - zapytanie do bazy mysql
  26.          * @return $tab - tablica danych z bazy mysql
  27.          */
  28.  
  29. public function wczytaj($query)
  30.        {
  31.            
  32.             $wynik=mysql_query($query);
  33.            
  34.             $i = 0;
  35.            
  36.             while($rekord = mysql_fetch_assoc($wynik)) {
  37.                
  38.                  $this->tab[$i++] = $rekord;
  39.             }
  40.  
  41.             return $this->tab;
  42.            
  43.        }
  44.        
  45. /**
  46.  * Dodaje dane do bazy mysql
  47.  *
  48.  * @param $tabela - nazwa tabeli, do której chcesz dodać dane
  49.  * @param $tab1 - wczytuje dane wpisywane do tabel tab1
  50.  *               (dane, które chcesz dodać)
  51.  */
  52.  
  53. public function dodaj($tabela, $tab1)
  54.        {
  55.  
  56.           foreach($tab1 as $klucz => $wartosc){
  57.           $str1[]="`".$klucz."`";
  58.           $str2[]="'".$wartosc."'";
  59.           }
  60.            
  61.            $str1=implode(", ",$str1);
  62.            $str2=implode(", ",$str2);
  63.            
  64.            $insert="INSERT INTO $tabela ($str1) VALUES ($str2)";
  65.            $dodaj=mysql_query($insert);
  66.            
  67.            if($insert) echo "Dodano nowy rekord! <br><br>";
  68.            else echo "Bląd! Nie udalo się dodac nowego rekordu! <br><br>";    
  69.        }
  70.  
  71. /**
  72.  * Modyfikuje dane w bazie mysql
  73.  *
  74.  * @param $tabela - nazwa tabeli, która modyfikujesz
  75.  * @param $tab2 - wczytuje dane wpisywane do tabel tab1
  76.  *               (dane, na które chcesz zmienić zamiast
  77.  *                danych w tabeli tab3)
  78.  * @param $war - warunek zapytania określający, które dane należy zmienić
  79.  */
  80.        
  81. public function zmien($tabela, $tab2, $war)
  82.        {
  83.            
  84.            foreach($tab2 as $klucz1 => $wartosc1){
  85.            $str1[]="`".$klucz1."` = '".$wartosc1."'";    
  86.            }
  87.  
  88.            $str1=implode(", ",$str1);
  89.                
  90.            
  91.            $update="UPDATE $tabela SET $str1 WHERE $war";
  92.            $zmien=mysql_query($update);
  93.            
  94.            if($zmien) echo "Zmieniono wybrany rekord! <br><br>";
  95.            else echo "Bląd! Nie udalo się dokonać zmian! <br><br>";
  96.            
  97.            print "$update <br>";
  98.        }
  99.        
  100. /**
  101.  * Usuwa dane z tabeli
  102.  *
  103.  * @param $tabela - nazwa tabeli, z której chcesz usunąć dane
  104.  * @param $war - warunek zapytania określający, które dane należy usunąć
  105.  */
  106.        
  107. public function usun($tabela, $war)
  108.        {
  109.            
  110.            $delete="DELETE FROM $tabela WHERE $war";
  111.            $usun=mysql_query($delete);
  112.            
  113.            if($usun) echo "Usunięto wybrany rekord! <br><br>";
  114.            else echo "Bląd! Nie udalo się usunąć wybranego rekordu! <br><br>";      
  115.        }
  116.              
  117. }
  118. ?>


Nie działa! Gdzie tu mam błąd!
Spawnm
a dostajesz jakiś komunikat?
konkur4
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\praktyki\baza.php on line 36


dostaje taki komunikat, a pod spodem wyświetla mi się:

0 | 1 |
nospor
  1. <?php
  2. $wynik=mysql_query($query) or die('zapytanie:'.$query.' ---blad:'.mysql_error());
  3. ?>
konkur4
Dobrze, ale jak sie go pozbyć szukałem przez dwie godziny sposobu na niego
nospor
kurde... no ale pokaz nam ten blad i to zapytanie. Pokaz to, co ci teraz zwraca po dodaniu mojego kodu
konkur4
Jak wczesniej było tak w pliku listing.php

  1. <html>
  2. <head>
  3. <title>Listing z sortowaniem</title>
  4. </head>
  5. <body>
  6. <?php
  7. require("baza.php");
  8.  
  9. if ($_GET['x']=='DESC') {
  10.     $kier = 'ASC';
  11. }
  12. else {
  13.     $kier = 'DESC';
  14. }
  15.    
  16. $order="ORDER BY ".$_GET['order_by']." $kier";
  17. $order=stripslashes($order);
  18.  
  19. if ($_GET['order_by'] or $kier==ASC)
  20.  {
  21.    $query="SELECT * FROM `samochody` $order";  
  22.    
  23.  }
  24. else
  25.  {
  26.     $query="SELECT * FROM `samochody`";
  27.  }
  28.  
  29. $baza1=new baza();
  30. $baza1->wczytaj($query);
  31.  
  32.  
  33. print "<table border='2' cellspacing='3'>";
  34.  
  35. $header = false;
  36.  
  37.  
  38.  
  39. foreach($baza1->tab as $klucz => $wartosc)
  40. {
  41.    if (!$header) {
  42.        print "<tr>";
  43.        foreach($wartosc as $klucz => $wartosc1){
  44.        
  45.        print "<td><a href=listing.php?order_by=`$klucz`&x=$kier>$klucz</a> </td>";                                                                                                                          
  46.          }
  47.          print "</tr>";
  48.          $header = true;      
  49.    }
  50.        
  51.    print "<tr>";
  52.    
  53.    foreach($wartosc as $klucz => $wartosc1)    
  54.  {
  55.      print "<td>$wartosc1</td>";
  56.  }
  57.     print "</tr>";
  58.  
  59.    
  60. }
  61.    
  62. print "</table>";
  63.  
  64.  
  65.  
  66.  
  67. ?>
  68. </body>
  69. </html>




wszystko było OK!

ale jak dodałem (podkreślone):

  1. <html>
  2. <head>
  3. <title>Listing z sortowaniem</title>
  4. </head>
  5. <body>
  6. <?php
  7. require("baza.php");
  8.  
  9. $baza1=new baza();
  10.  
  11. [u] function stronicuj($strony=0)
  12. {                                                                  
  13.     global $limit, $start;
  14.     $limit=5;                                                        //ustalenie limitu danych
  15.     $query=mysql_query("SELECT * FROM `samochody`");
  16.     $ilosc_danych=mysql_num_rows($query);                            //uzyskanie ilości danych w bazie
  17.     $ilosc_stron=ceil($ilosc_danych/$limit);                         //podział na strony
  18.     $start=$strony*$limit;                                     //uzyskanie numeru rekordu, od którego należy zacząć pobieranie
  19.     return($ilosc_stron);                                            //funkcja zwraca ilość stron
  20. }
  21. [/u]
  22. if(isset($_GET['strony']) and is_numeric($_GET['strony']))
  23. {
  24.  $strony=stronicuj($_GET['strony']);
  25. }
  26. else
  27. {
  28.  $strony=stronicuj();
  29. }
  30.  
  31. [u] if ($_GET['x']=='DESC') {
  32.     $kier = 'ASC';
  33. }
  34. else {
  35.     $kier = 'DESC';
  36. }[/u]
  37.    
  38. if ($_GET['y']=='DESC') {
  39.     $kier = 'DESC';
  40. }
  41. else {
  42.     $kier = 'ASC';
  43. }
  44.  
  45. $order="ORDER BY ".$_GET['order_by']." $kier";
  46. $order=stripslashes($order);
  47.  
  48. if ($_GET['order_by'] or $kier==ASC )
  49.  {
  50.    $query="SELECT * FROM `samochody` $order LIMIT $start, $limit";  
  51.  }
  52. else
  53.  {
  54.     $query="SELECT * FROM `samochody` LIMIT $start, $limit";
  55.  }
  56.  
  57.  
  58. $baza1->wczytaj($query);
  59.  
  60.  
  61. print "<table border='2' cellspacing='3'>";
  62.  
  63. $header = false;
  64.  
  65.  
  66. foreach($baza1->tab as $klucz => $wartosc)
  67. {
  68.    if (!$header) {
  69.        print "<tr>";
  70.        foreach($wartosc as $klucz => $wartosc1){
  71.        
  72.        print "<td><a href=listing.php?order_by=`$klucz`&x=$kier>$klucz</a> </td>";                                                                                                                          
  73.          }
  74.          print "</tr>";
  75.          $header = true;      
  76.    }
  77.        
  78.    print "<tr>";
  79.    
  80.    foreach($wartosc as $klucz => $wartosc1)    
  81.  {
  82.      print "<td>$wartosc1</td>";
  83.  }
  84.     print "</tr>";
  85.    
  86. }
  87.    
  88. print "</table>";
  89.  
  90. [u]print "<br>";
  91. print "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp";
  92.  
  93. for($x=0;$x<$strony;$x++)
  94. {
  95.  print '<a href="?strony='.$x.'&order_by=`$klucz`&x=$kier">'.$x.'</a> | ';
  96. }[/u]
  97.  
  98.  
  99. ?>
  100. </body>
  101. </html>



To wszystko sie popsuło!!!
nospor
podalem ci kawalek kodu, ktory wyswietli ci konkretnie jaki masz blad. Wstawiles to u siebie tam gdzie trzeba? (do funkcji wczytaj() zamiast $wynik=mysql_query($query)winksmiley.jpg
konkur4
SELECT * FROM `samochody` ORDER BY ASC LIMIT 0, 5 ---blad:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC LIMIT 0, 5' at line 1

- twoje zapytanie wyrzuciło mi
nospor
i naprawde musialem az 3 posty na to zmarnowac, bys wstawil kod co ci podalem?

Jak widac:
ORDER BY TUCZEGOSBRAKUJE ASC
brakjee tu czegos. pozostawiam to tobie
konkur4
ale ja nie uruchomiłem sortowania a w adresie mam: http://127.0.0.1/listing.php

  1. <?php
  2. if ($_GET['order_by'] or $kier==ASC )
  3. {
  4.   $query="SELECT * FROM `samochody` $order LIMIT $start, $limit";  
  5. }
  6. else
  7. {
  8.    $query="SELECT * FROM `samochody` LIMIT $start, $limit";
  9. }
  10. ?>


w tej instrukcji z tego powodu powinien mi przeskoczyc do else ale nie wiem z jakiego powodu nie chce przeskoczyć
slewin
nosz kurcze brakuje Ci według czego ma sortowac np. numer_id ASC lub kolor_auta DESC , czaisz questionmark.gif
konkur4
Ale jak dopiero co uruchomiłem to nie ma sortowania
Sortowanie następuję gdy nacisknę na kolumnę sad.gif
Spawnm
//if ($_GET['order_by'] or $kier==ASC )
wywal
or $kier==ASC
konkur4
Tabelka mi działa ale stronicowanie mi nie działa:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\praktyki\baza.php on line 36,

PO DODANIU :

  1. <?php
  2. $wynik=mysql_query($query) or die('zapytanie:'.$query.' ---blad:'.mysql_error());
  3. ?>


DO funkcji wyswietl wywala mi:

zapytanie:SELECT * FROM `samochody` ORDER BY `$klucz` ASC LIMIT 0, 5 ---blad:Unknown column '$klucz' in 'order clause'

Problem rozwiązałem! dzięki wielkie!!!
Spawnm
czyli gdzieś źle wstawiasz zmienną , jak chcesz aby ci przetworzyło zmienną to stosuj "zamiast '
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.