Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
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 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

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

 



RSS Aktualny czas: 22.08.2025 - 07:46