Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MYSQL]Pobieranie z tabeli nie działa
indexx
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Mam w bazie tabele z artykułami, chciałbym wyświetlić na stronie listę użytkowników i ilość dodanych artykułów.
Tabela nazywa się artykuły
w niej mam rekord dodał i w nim zapisany przy każdym artykule nick osoby która go dodała, obok nicku w kolumnie Rekordów jest ilość dodanych artykułów.
Próbowałem :
Kod
$zapytanie = "SELECT COUNT( * ) AS `Rekordów` , `dodal`
  FROM `artukuły` ORDER BY `dodal`";
  $wykonaj = mysql_query($zapytanie) or Die("Nie działa zapytanie". $zapytanie);
  $ile_rek = mysql_num_rows($wykonaj);


ale nic mi nie wyświetla.

Ten post edytował indexx 22.02.2009, 15:09:08
Go to the top of the page
+Quote Post
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




pokaż strukturę tabel bo tak jak wytłumaczyłeś nic nie można zrozumieć. wydaje mi się że będzie Ci potrzebne DISTINCT. ale pierw pokaż co i jak i wytłumacz poprawnie.
Go to the top of the page
+Quote Post
indexx
post
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Struktura tabeli artykuly
Kod
CREATE TABLE `komentarze` (
   `tytul` text NOT NULL,
   `opis` text NOT NULL,
   `img` text NOT NULL,
   `link` text NOT NULL,
   `dodal` text NOT NULL,
   `data` text NOT NULL,
   `cat` text NOT NULL,
   `id` int(11) NOT NULL auto_increment,
   `ile` int(11) NOT NULL default '0',
   `glosy` int(11) NOT NULL default '0',
   `ocena` float NOT NULL default '0',
   `view` int(11) NOT NULL default '0',
   `active` int(11) NOT NULL default '0',
   `tags` text NOT NULL,
   `rss_data` text NOT NULL,
   `dodalid` int(11) NOT NULL default '0',
   `typ` int(11) NOT NULL default '0',
   PRIMARY KEY  (`id`)
);


Ten post edytował indexx 22.02.2009, 15:22:42
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




tu mówisz o artykułach a podajesz komentarze? i dalej nie wiem co chcesz zrobić? pobrać nazwy użytkowników którzy dodali artykuł i wyświetlić ile tych artykułów dodali?
Go to the top of the page
+Quote Post
indexx
post
Post #5





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Już poprawiłem, pomyliłem się bo pierwotnie tabela nazywała się articles ale zmieniłem na artykuły, a tutaj wpisałem komentarze (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)
Tak, chcę na dodatkowej stronie wyświetlić listę użytkowników i obok ilość dodanych przez każdego z nich artykułów.

Ten post edytował indexx 22.02.2009, 15:32:03
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




zrobiłem coś takiego z palca pisane popraw ewentualne błędy:

  1. <?php
  2. $aut = mysql_query('SELECT DISTINCT(dodal) AS name FROM `komentarze`');
  3.    
  4. while ($row1 = mysql_fetch_array($aut))
  5. {
  6.    $kto = $row1['name'];
  7.    $ilosc = mysql_query("SELECT COUNT(*) AS ile FROM komentarze WHERE dodal='$kto'");
  8.    
  9.    while ($row2 = mysql_fetch_array($ilosc))
  10.    {
  11.        echo 'Kto: '.$kto.' ile: '.$row2['ile'].'<br>';
  12.    }
  13. }
  14. ?>
Go to the top of the page
+Quote Post
indexx
post
Post #7





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Działa świetnie!
Ogromne dzięki!

Mam jeszcze jedno pytanie, w tabeli artykuły mam mam wiersz glosy która wygląda tak

Rekordów glosy
123............... 0
30................. 2
49................. 6
Jak zliczyć sumę oddanych głosów na wszystkie artykuły, bo już nie mam pomysłu, próbowałem tak:
Kod

   $res = mysql_query("SELECT movie count(*) FROM glosy");
     $ile = mysql_num_rows($res);

ale nie działa

Ten post edytował indexx 22.02.2009, 17:51:41
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(indexx @ 22.02.2009, 17:49:28 ) *
Rekordów glosy
123............... 0
30................. 2
49................. 6


nie bardzo rozumiem wytłumacz jak to działa...

Cytat(indexx @ 22.02.2009, 17:49:28 ) *
Jak zliczyć sumę oddanych głosów na wszystkie artykuły


ten problem wynika z tego że musisz wyjaśnić.
Go to the top of the page
+Quote Post
kefirek
post
Post #9





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


Chyba coś takiego bedzie
  1. <?php
  2. $wynik = mysql_result(mysql_query("SELECT SUM(glosy) FROM komentarze"),0);
  3. ?>


Ten post edytował kefirek 22.02.2009, 19:57:22
Go to the top of the page
+Quote Post
indexx
post
Post #10





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Cytat(piotrooo89 @ 22.02.2009, 19:43:52 ) *
nie bardzo rozumiem wytłumacz jak to działa...


W kolumnie 'Rekordów' mam ilość ocenionych materiałów, a w kolumnie głosy ocenę z zakresu 1-6, czyli np na ocenę 6 jest ocenionych 49 materiałów.

Rozwiązanie kefirka dodaje mi zawartość pól ocen, czyli np jeśli 5 artykułów jest ocenionych na 3 to wynik będzie 15, a powinien być 5.

Chyba już dobrze wytłumaczyłem.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #11


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




robisz analogicznie. czytasz oceny DISTINCT i później klauzurą WHERE liczysz rekordy.

teraz dostaniesz pseudo kod:

  1. <?php
  2. $sql1 = SELECT DISTINCT(glosy) FROM tabela
  3.  
  4. while ($row($sql1))
  5. {
  6.    $sql2 = SELECT COUNT(*) FROM tabela WHERE glosy=$row[glosy];
  7.    
  8.    while($row2($sql2))
  9.    {
  10.        echo row , row2;
  11.    }
  12. }
  13. ?>


Ten post edytował piotrooo89 22.02.2009, 20:21:38
Go to the top of the page
+Quote Post
indexx
post
Post #12





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Coś nie chce mi to wyjść, zrobiłem tak:
Kod
<?php
$sql1 = mysql_query("SELECT DISTINCT(glosy) FROM movie");

while ($row = mysql_fetch_array($sql1))
{
   $sql2 = mysql_query("SELECT COUNT(*) FROM movie WHERE glosy=$row[glosy]");
  
   while($row2 = mysql_fetch_array($sql2))
   {
       echo ''.$row.' , '.$row2.'';
   }
}
?>


Może mi ktoś powiedzieć jak to ma wyglądać?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #13


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




daj sobie tu mysql_error i już będziesz wiedział:
  1. <?php
  2. $sql2 = mysql_query("SELECT COUNT(*) FROM movie WHERE glosy=$row[glosy]") or die(mysql_error);
  3. ?>



i popatrz sobie dokładnie na mojego gotowca. jak dalej nie wiesz o co chodzi popatrz jeszcze raz. sprawa jest analogiczna zmieniają się tylko nazwy kolumn tabel.

Ten post edytował piotrooo89 26.02.2009, 13:41:30
Go to the top of the page
+Quote Post
indexx
post
Post #14





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Już zrobiłem, wielkie dzięki za pomoc!

Mam jeszcze jedno pytanie, jak uszeregować wynik w kolejności malejącej, próbowałem za pomocą order by ale nie skutkuje?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #15


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ORDER BY rekord ASC lub DESC.

Ten post edytował piotrooo89 4.03.2009, 19:00:39
Go to the top of the page
+Quote Post
indexx
post
Post #16





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Niestety, tak jak pisałem zwraca błąd:
Kod
[b]Warning[/b]:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Go to the top of the page
+Quote Post
piotrooo89
post
Post #17


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




po co pokazujesz sam błąd. pokaż zapytanie.
Go to the top of the page
+Quote Post
indexx
post
Post #18





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Kod
$aut = mysql_query('SELECT DISTINCT(dodal) AS name FROM `artykuly` order by rekord asc LIMIT 10');
  
while ($row1 = mysql_fetch_array($aut))
{
   $kto = $row1['name'];
   $ilosc = mysql_query("SELECT COUNT(*) AS ile FROM artykuly WHERE dodal='$kto'");
  
   while ($row2 = mysql_fetch_array($ilosc))
   {
       echo '<div>Login: '.$kto.' dodanych materiałów: '.$row2['ile'].'</div>';
   }
}
Go to the top of the page
+Quote Post
piotrooo89
post
Post #19


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




to był tylko przykład!
  1. ORDER BY rekord ASC


tam gdzie masz rekord wstaw soja kolumnę po której chcesz żeby było sortowane. i jak chcesz malejąco to nie ASC tylko DESC.
ORDER BY
Go to the top of the page
+Quote Post
indexx
post
Post #20





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Nie działa, jak mówiłem, wiem co oznacza asc i desc, wpisałem tylko w kwestii sprawdzenia.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #21


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a powiedz po jakim polu w bazie chcesz sortować. jeśli już będziesz wiedział wpisz je tam gdzie masz teraz wpisane rekord.
Go to the top of the page
+Quote Post
indexx
post
Post #22





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Pole Rekordów, czyli ilości dodanych artykułów.Żadna kombinacja nie działa.
Nie wiem co robię źle.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #23


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




wpisz sobie tam id.
Go to the top of the page
+Quote Post
indexx
post
Post #24





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Bez zmian, nadal nie jest w takiej kolejności.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #25


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ale zrozum że musisz podać nazwę kolumny. inaczej tego nie zrobisz. nie wiem jak chcesz to sortować. to Ty musisz sobie odpowiedzieć na to pytanie.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 21:17